1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
29using simulation::EventEmitter;
30using simulation::L1ToL2MessageTreeCheck;
31using simulation::MerkleCheck;
32using simulation::MerkleCheckEvent;
33using simulation::PurePoseidon2;
36using tracegen::L1ToL2MessageTreeCheckTraceBuilder;
37using tracegen::MerkleCheckTraceBuilder;
38using tracegen::TestTraceContainer;
45TEST(L1ToL2MessageTreeCheckConstrainingTests, PositiveExists)
47 PurePoseidon2
poseidon2 = PurePoseidon2();
49 EventEmitter<MerkleCheckEvent> merkle_event_emitter;
52 EventEmitter<simulation::L1ToL2MessageTreeCheckEvent> l1_to_l2_message_tree_check_event_emitter;
53 L1ToL2MessageTreeCheck l1_to_l2_message_tree_check(merkle_check, l1_to_l2_message_tree_check_event_emitter);
55 TestTraceContainer
trace({ { { C::precomputed_first_row, 1 } } });
56 MerkleCheckTraceBuilder merkle_check_builder;
57 L1ToL2MessageTreeCheckTraceBuilder l1_to_l2_message_tree_check_builder;
61 uint64_t leaf_index = 30;
62 std::vector<FF> sibling_path;
65 sibling_path.emplace_back(i);
70 l1_to_l2_message_tree_check.exists(msg_hash,
74 AppendOnlyTreeSnapshot{ .root = root, .next_available_leaf_index = 128 }));
76 l1_to_l2_message_tree_check_builder.process(l1_to_l2_message_tree_check_event_emitter.dump_events(), trace);
77 merkle_check_builder.process(merkle_event_emitter.dump_events(), trace);
79 check_relation<l1_to_l2_message_tree_check_relations>(trace);
80 check_all_interactions<L1ToL2MessageTreeCheckTraceBuilder>(trace);
83TEST(L1ToL2MessageTreeCheckConstrainingTests, PositiveNotExists)
85 PurePoseidon2
poseidon2 = PurePoseidon2();
87 EventEmitter<MerkleCheckEvent> merkle_event_emitter;
90 EventEmitter<simulation::L1ToL2MessageTreeCheckEvent> l1_to_l2_message_tree_check_event_emitter;
91 L1ToL2MessageTreeCheck l1_to_l2_message_tree_check(merkle_check, l1_to_l2_message_tree_check_event_emitter);
93 TestTraceContainer
trace({ { { C::precomputed_first_row, 1 } } });
94 MerkleCheckTraceBuilder merkle_check_builder;
95 L1ToL2MessageTreeCheckTraceBuilder l1_to_l2_message_tree_check_builder;
97 FF requested_msg_hash = 42;
98 FF actual_leaf_value = 43;
100 uint64_t leaf_index = 30;
101 std::vector<FF> sibling_path;
104 sibling_path.emplace_back(i);
109 l1_to_l2_message_tree_check.exists(requested_msg_hash,
113 AppendOnlyTreeSnapshot{ .root = root, .next_available_leaf_index = 128 }));
115 l1_to_l2_message_tree_check_builder.process(l1_to_l2_message_tree_check_event_emitter.dump_events(), trace);
116 merkle_check_builder.process(merkle_event_emitter.dump_events(), trace);
118 check_relation<l1_to_l2_message_tree_check_relations>(trace);
119 check_all_interactions<L1ToL2MessageTreeCheckTraceBuilder>(trace);
#define L1_TO_L2_MSG_TREE_HEIGHT
TEST(AvmFixedVKTests, FixedVKCommitments)
Test that the fixed VK commitments agree with the ones computed from precomputed columns.
FF unconstrained_root_from_path(const FF &leaf_value, const uint64_t leaf_index, std::span< const FF > path)