2#include <gtest/gtest.h>
24TEST(Databus, CallDataAndReturnData)
41 for (
auto&
value : raw_calldata_values) {
48 for (
auto&
value : raw_return_data_values) {
76 sum.assert_equal(read_result);
85TEST(Databus, ConstantEntryAccess)
101 EXPECT_EQ(value_0, read_result_0.
get_value());
102 EXPECT_EQ(value_1, read_result_1.
get_value());
110TEST(Databus, UnnormalizedEntryAccess)
118 for (
fr entry : raw_calldata_entries) {
122 for (
fr entry : raw_returndata_entries) {
125 returndata_entries.emplace_back(entry_witness + entry_witness);
142TEST(Databus, ConstantAndUnnormalizedIndices)
150 for (
auto&
value : raw_calldata_values) {
157 for (
auto&
value : raw_returndata_values) {
187 fr actual_value = 13;
196 EXPECT_EQ(actual_value, read_result.
get_value());
224 fr output = input - 1;
251 for (
auto&
value : raw_calldata_values) {
258 for (
auto&
value : raw_return_data_values) {
287TEST(Databus, AppendBindsBusEntryViaInitRead)
290 const size_t initial_busread_rows =
builder.blocks.busread.size();
294 builder.add_public_calldata(BusId::KERNEL_CALLDATA, w0_idx);
295 builder.add_public_calldata(BusId::KERNEL_CALLDATA, w1_idx);
297 const auto& bus_vec =
builder.get_calldata(BusId::KERNEL_CALLDATA);
298 EXPECT_EQ(
builder.blocks.busread.size(), initial_busread_rows + 2);
299 EXPECT_EQ(bus_vec.size(), 2U);
300 EXPECT_EQ(bus_vec.get_read_count(0), 1U);
301 EXPECT_EQ(bus_vec.get_read_count(1), 1U);
312TEST(Databus, InitReadCatchesValueMismatch)
316 const uint32_t w_expected =
builder.add_variable(
bb::fr(13));
317 builder.add_public_calldata(BusId::KERNEL_CALLDATA, w_expected);
321 const uint32_t w_attacker =
builder.add_variable(
bb::fr(14));
322 auto& value_wire =
builder.blocks.busread.wires[0];
323 ASSERT_FALSE(value_wire.empty());
324 value_wire.back() = w_attacker;
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
void set_values(const std::vector< field_pt > &entries_in)
Set the entries of the bus vector from possibly unnormalized or constant inputs.
bus_vector kernel_calldata
void assert_equal(const field_t &rhs, std::string const &msg="field_t::assert_equal") const
Copy constraint: constrain that *this field is equal to rhs element.
bb::fr get_value() const
Given a := *this, compute its value given by a.v * a.mul + a.add.
static witness_t create_constant_witness(Builder *parent_context, const bb::fr &in)
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Entry point for Barretenberg command-line interface.
Inner sum(Cont< Inner, Args... > const &in)
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
MegaCircuitBuilder_< field< Bn254FrParams > > MegaCircuitBuilder
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
stdlib::witness_t< Builder > witness_ct