Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
context_stack_trace.test.cpp
Go to the documentation of this file.
1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
3
8
9namespace bb::avm2::tracegen {
10namespace {
11
12using testing::ElementsAre;
13using testing::Field;
14
16
17TEST(ContextStackTraceGenTest, TraceGenerationSnapshot)
18{
19 TestTraceContainer trace;
20 ContextStackTraceBuilder builder;
21
22 TreeStates tree_states = TreeStates{
23 .note_hash_tree = {
24 .tree = {
25 .root = 10,
26 .next_available_leaf_index = 9,
27 },
28 .counter = 8,
29 },
30 .nullifier_tree = {
31 .tree = {
32 .root = 7,
33 .next_available_leaf_index = 6,
34 },
35 .counter = 5,
36 },
37 .l1_to_l2_message_tree = {
38 .tree = {
39 .root = 4,
40 .next_available_leaf_index = 3,
41 },
42 .counter = 0,
43 },
44 .public_data_tree = {
45 .tree = {
46 .root = 2,
47 .next_available_leaf_index = 1,
48 },
49 .counter = 1,
50 }
51 };
52
53 AppendOnlyTreeSnapshot written_public_data_slots_tree_snapshot = AppendOnlyTreeSnapshot{
54 .root = 0x12345678,
55 .next_available_leaf_index = 10,
56 };
57
59 .id = 1,
60 .parent_id = 0,
61 .next_pc = 20,
62 .msg_sender = 30,
63 .contract_addr = 40,
64 .is_static = false,
65 .tree_states = tree_states,
66 .written_public_data_slots_tree_snapshot = written_public_data_slots_tree_snapshot,
67 .numUnencryptedLogFields = 1,
68 .numL2ToL1Messages = 2,
69 } },
70 trace);
71
72 EXPECT_THAT(trace.as_rows(),
73 ElementsAre(
74 // Only one row.
75 AllOf(ROW_FIELD_EQ(context_stack_context_id, 1),
76 ROW_FIELD_EQ(context_stack_parent_id, 0),
77 ROW_FIELD_EQ(context_stack_next_pc, 20),
78 ROW_FIELD_EQ(context_stack_msg_sender, 30),
79 ROW_FIELD_EQ(context_stack_contract_address, 40),
80 ROW_FIELD_EQ(context_stack_is_static, false),
81 ROW_FIELD_EQ(context_stack_note_hash_tree_root, tree_states.note_hash_tree.tree.root),
82 ROW_FIELD_EQ(context_stack_note_hash_tree_size,
83 tree_states.note_hash_tree.tree.next_available_leaf_index),
84 ROW_FIELD_EQ(context_stack_num_note_hashes_emitted, tree_states.note_hash_tree.counter),
85 ROW_FIELD_EQ(context_stack_nullifier_tree_root, tree_states.nullifier_tree.tree.root),
86 ROW_FIELD_EQ(context_stack_nullifier_tree_size,
87 tree_states.nullifier_tree.tree.next_available_leaf_index),
88 ROW_FIELD_EQ(context_stack_num_nullifiers_emitted, tree_states.nullifier_tree.counter),
89 ROW_FIELD_EQ(context_stack_public_data_tree_root, tree_states.public_data_tree.tree.root),
90 ROW_FIELD_EQ(context_stack_public_data_tree_size,
91 tree_states.public_data_tree.tree.next_available_leaf_index),
92 ROW_FIELD_EQ(context_stack_written_public_data_slots_tree_root,
93 written_public_data_slots_tree_snapshot.root),
94 ROW_FIELD_EQ(context_stack_written_public_data_slots_tree_size,
95 written_public_data_slots_tree_snapshot.next_available_leaf_index),
96 ROW_FIELD_EQ(context_stack_num_unencrypted_log_fields, 1),
97 ROW_FIELD_EQ(context_stack_num_l2_to_l1_messages, 2))));
98}
99
100} // namespace
101} // namespace bb::avm2::tracegen
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
AluTraceBuilder builder
Definition alu.test.cpp:124
TestTraceContainer trace
#define ROW_FIELD_EQ(field_name, expression)
Definition macros.hpp:15
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)