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 .noteHashTree = {
24 .tree = {
25 .root = 10,
26 .nextAvailableLeafIndex = 9,
27 },
28 .counter = 8,
29 },
30 .nullifierTree = {
31 .tree = {
32 .root = 7,
33 .nextAvailableLeafIndex = 6,
34 },
35 .counter = 5,
36 },
37 .l1ToL2MessageTree = {
38 .tree = {
39 .root = 4,
40 .nextAvailableLeafIndex = 3,
41 },
42 .counter = 0,
43 },
44 .publicDataTree = {
45 .tree = {
46 .root = 2,
47 .nextAvailableLeafIndex = 1,
48 },
49 .counter = 1,
50 }
51 };
52
53 AppendOnlyTreeSnapshot written_public_data_slots_tree_snapshot = AppendOnlyTreeSnapshot{
54 .root = 0x12345678,
55 .nextAvailableLeafIndex = 10,
56 };
57
58 SideEffectStates side_effect_states = SideEffectStates{ .numUnencryptedLogs = 1, .numL2ToL1Messages = 2 };
59
61 .id = 1,
62 .parent_id = 0,
63 .next_pc = 20,
64 .msg_sender = 30,
65 .contract_addr = 40,
66 .is_static = false,
67 .tree_states = tree_states,
68 .written_public_data_slots_tree_snapshot = written_public_data_slots_tree_snapshot,
69 .side_effect_states = side_effect_states,
70 } },
71 trace);
72
73 EXPECT_THAT(
74 trace.as_rows(),
75 ElementsAre(
76 // Only one row.
77 AllOf(
78 ROW_FIELD_EQ(context_stack_context_id, 1),
79 ROW_FIELD_EQ(context_stack_parent_id, 0),
80 ROW_FIELD_EQ(context_stack_next_pc, 20),
81 ROW_FIELD_EQ(context_stack_msg_sender, 30),
82 ROW_FIELD_EQ(context_stack_contract_address, 40),
83 ROW_FIELD_EQ(context_stack_is_static, false),
84 ROW_FIELD_EQ(context_stack_note_hash_tree_root, tree_states.noteHashTree.tree.root),
85 ROW_FIELD_EQ(context_stack_note_hash_tree_size, tree_states.noteHashTree.tree.nextAvailableLeafIndex),
86 ROW_FIELD_EQ(context_stack_num_note_hashes_emitted, tree_states.noteHashTree.counter),
87 ROW_FIELD_EQ(context_stack_nullifier_tree_root, tree_states.nullifierTree.tree.root),
88 ROW_FIELD_EQ(context_stack_nullifier_tree_size, tree_states.nullifierTree.tree.nextAvailableLeafIndex),
89 ROW_FIELD_EQ(context_stack_num_nullifiers_emitted, tree_states.nullifierTree.counter),
90 ROW_FIELD_EQ(context_stack_public_data_tree_root, tree_states.publicDataTree.tree.root),
91 ROW_FIELD_EQ(context_stack_public_data_tree_size,
92 tree_states.publicDataTree.tree.nextAvailableLeafIndex),
93 ROW_FIELD_EQ(context_stack_written_public_data_slots_tree_root,
94 written_public_data_slots_tree_snapshot.root),
95 ROW_FIELD_EQ(context_stack_written_public_data_slots_tree_size,
96 written_public_data_slots_tree_snapshot.nextAvailableLeafIndex),
97 ROW_FIELD_EQ(context_stack_num_unencrypted_logs, side_effect_states.numUnencryptedLogs),
98 ROW_FIELD_EQ(context_stack_num_l2_to_l1_messages, side_effect_states.numL2ToL1Messages))));
99}
100
101} // namespace
102} // namespace bb::avm2::tracegen
void process(const simulation::EventEmitterInterface< simulation::AluEvent >::Container &events, TraceContainer &trace)
std::vector< AvmFullRowConstRef > as_rows() const
AluTraceBuilder builder
Definition alu.test.cpp:123
TestTraceContainer trace
#define ROW_FIELD_EQ(field_name, expression)
Definition macros.hpp:15
TEST(EmitUnencryptedLogTest, Basic)