4#include <gmock/gmock.h>
5#include <gtest/gtest.h>
22using ::testing::AllOf;
24TEST(TxTraceGenTest, EnqueuedCallEvent)
26 TestTraceContainer
trace;
33 simulation::TxStartupEvent startup_event = {
34 .gas_used = { 500, 1000 },
35 .gas_limit = { 1000, 2000 },
36 .teardown_gas_limit = { 0, 0 },
37 .phase_lengths = { .setup = 1 },
40 simulation::TxPhaseEvent tx_event = {
46 simulation::EnqueuedCallEvent{
47 .msg_sender = msg_sender,
51 .calldata_hash = calldata_hash,
58 ASSERT_EQ(rows.size(), 2);
79TEST(TxTraceGenTest, CollectFeeEvent)
81 TestTraceContainer
trace;
86 auto effective_fee_per_da_gas = 100;
87 auto effective_fee_per_l2_gas = 200;
88 auto prev_da_gas_used = 1000;
89 auto prev_l2_gas_used = 500;
90 auto fee = effective_fee_per_da_gas * prev_da_gas_used + effective_fee_per_l2_gas * prev_l2_gas_used;
92 simulation::TxStartupEvent startup_event = {
93 .gas_used = { 500, 1000 },
94 .gas_limit = { 1000, 2000 },
95 .teardown_gas_limit = { 0, 0 },
102 .event = simulation::CollectGasFeeEvent{
103 .effective_fee_per_da_gas =
104 static_cast<uint128_t>(effective_fee_per_da_gas),
105 .effective_fee_per_l2_gas =
106 static_cast<uint128_t>(effective_fee_per_l2_gas),
107 .fee_payer = fee_payer,
108 .fee_payer_balance = fee_payer_balance,
114 ASSERT_EQ(rows.size(), 2);
132 ROW_FIELD_EQ(tx_effective_fee_per_da_gas,
FF(effective_fee_per_da_gas)),
133 ROW_FIELD_EQ(tx_effective_fee_per_l2_gas,
FF(effective_fee_per_l2_gas)),
143TEST(TxTraceGenTest, BasicFirstPaddedRow)
145 TestTraceContainer
trace;
148 simulation::TxStartupEvent startup_event = {
149 .gas_used = { 500, 1000 },
150 .gas_limit = { 1000, 2000 },
151 .teardown_gas_limit = { 0, 0 },
158 .event = simulation::EmptyPhaseEvent{} };
163 ASSERT_EQ(rows.size(), 2);
172 ROW_FIELD_EQ(tx_sel_non_revertible_append_nullifier, 1),
185TEST(TxTraceGenTest, PadTreesEvent)
187 TestTraceContainer
trace;
190 simulation::TxStartupEvent startup_event = {
191 .gas_used = { 500, 1000 },
192 .gas_limit = { 1000, 2000 },
193 .teardown_gas_limit = { 0, 0 },
202 .next_available_leaf_index = 65,
209 .next_available_leaf_index = 127,
220 .next_available_leaf_index = 128,
227 .next_available_leaf_index = 128,
234 .event = simulation::PadTreesEvent{} };
238 ASSERT_EQ(rows.size(), 2);
260TEST(TxTraceGenTest, CleanupEvent)
262 TestTraceContainer
trace;
265 simulation::TxStartupEvent startup_event = {
266 .gas_used = { 500, 1000 },
267 .gas_limit = { 1000, 2000 },
268 .teardown_gas_limit = { 0, 0 },
275 .event = simulation::CleanupEvent{} };
279 ASSERT_EQ(rows.size(), 2);
300TEST(TxTraceGenTest, CleanupRevertedEvent)
302 TestTraceContainer
trace;
305 simulation::TxStartupEvent startup_event = {
306 .gas_used = { 500, 1000 },
307 .gas_limit = { 1000, 2000 },
308 .teardown_gas_limit = { 0, 0 },
315 .event = simulation::PrivateAppendTreeEvent{} };
321 .event = simulation::CleanupEvent{} };
325 ASSERT_EQ(rows.size(), 3);
#define AVM_PUBLIC_INPUTS_END_TREE_SNAPSHOTS_L1_TO_L2_MESSAGE_TREE_ROW_IDX
#define AVM_PUBLIC_INPUTS_EFFECTIVE_GAS_FEES_ROW_IDX
#define AVM_PUBLIC_INPUTS_FEE_PAYER_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_NULLIFIERS_ROW_IDX
#define AVM_PUBLIC_INPUTS_TRANSACTION_FEE_ROW_IDX
#define AVM_PUBLIC_INPUTS_END_GAS_USED_ROW_IDX
#define AVM_PUBLIC_INPUTS_PUBLIC_SETUP_CALL_REQUESTS_ROW_IDX
#define AVM_PUBLIC_INPUTS_END_TREE_SNAPSHOTS_NULLIFIER_TREE_ROW_IDX
#define AVM_PUBLIC_INPUTS_PREVIOUS_NON_REVERTIBLE_ACCUMULATED_DATA_ARRAY_LENGTHS_NULLIFIERS_ROW_IDX
#define AVM_PUBLIC_INPUTS_END_TREE_SNAPSHOTS_NOTE_HASH_TREE_ROW_IDX
#define AVM_PUBLIC_INPUTS_REVERTED_ROW_IDX
#define AVM_PUBLIC_INPUTS_PUBLIC_CALL_REQUEST_ARRAY_LENGTHS_SETUP_CALLS_ROW_IDX
#define AVM_PUBLIC_INPUTS_GAS_SETTINGS_GAS_LIMITS_ROW_IDX
#define AVM_PUBLIC_INPUTS_END_TREE_SNAPSHOTS_PUBLIC_DATA_TREE_ROW_IDX
void process(const simulation::EventEmitterInterface< simulation::AluEvent >::Container &events, TraceContainer &trace)
Process the ALU events and populate the ALU relevant columns in the trace.
std::vector< AvmFullRowConstRef > as_rows() const
AztecAddress contract_address
#define ROW_FIELD_EQ(field_name, expression)
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
unsigned __int128 uint128_t
static constexpr field neg_one()
static field random_element(numeric::RNG *engine=nullptr) noexcept