3#include <gmock/gmock.h>
4#include <gtest/gtest.h>
6#include "barretenberg/aztec/aztec_constants.hpp"
14using ::testing::NiceMock;
16TrackedSideEffects make_distinct_storage_writes(
size_t n)
18 TrackedSideEffects side_effects;
19 for (
size_t i = 0; i < n; ++i) {
22 const FF slot =
FF(
static_cast<uint64_t
>(i + 1));
23 const FF value =
FF(
static_cast<uint64_t
>(i + 1) * 100);
24 side_effects.storage_writes_slots_by_insertion.push_back(
slot);
25 side_effects.storage_writes_slot_to_value.emplace(
slot,
value);
32TEST(PublicInputsBuilderExtractOutputsTest, AcceptsUserWriteBudget)
34 static_assert(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX == 63);
37 const auto side_effects = make_distinct_storage_writes(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
38 ASSERT_EQ(side_effects.storage_writes_slot_to_value.size(), 63u);
47 const PublicInputs public_inputs =
builder.build();
48 EXPECT_EQ(public_inputs.accumulated_data_array_lengths.public_data_writes, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
56TEST(PublicInputsBuilderExtractOutputsTest, RejectsValidTotalWriteBudget)
58 static_assert(MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX == MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX + 1);
61 const auto side_effects = make_distinct_storage_writes(MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
62 ASSERT_EQ(side_effects.storage_writes_slot_to_value.size(), 64u);
70 <<
"extract_outputs should accept 64 distinct public-data writes (63 user + 1 protocol fee), "
71 <<
"matching MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX and the AvmAccumulatedData layout.";
StrictMock< MockHighLevelMerkleDB > merkle_db
AVM range check gadget for witness generation.
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)