3#include <gmock/gmock.h>
4#include <gtest/gtest.h>
19using ::testing::AllOf;
20using ::testing::ElementsAre;
22TEST(GetContractInstanceTraceTest, ValidMemberEnum)
25 const uint32_t execution_clk = 42;
26 const FF nullifier_tree_root = 0x1234;
27 const FF public_data_tree_root = 0x5678;
29 const uint32_t dst_offset = 100;
30 const uint32_t space_id = 1;
31 const FF deployer_addr = 0x5678;
32 const FF class_id = 0x9ABC;
33 const FF init_hash = 0xDEF0;
34 const uint32_t dst_offset_plus_one = dst_offset + 1;
36 const uint8_t u1_tag =
static_cast<uint8_t
>(
ValueTag::U1);
37 const uint8_t ff_tag =
static_cast<uint8_t
>(
ValueTag::FF);
39 TestTraceContainer
trace;
40 GetContractInstanceTraceBuilder
builder;
41 simulation::EventEmitter<simulation::GetContractInstanceEvent> emitter;
43 simulation::GetContractInstanceEvent
event = {
44 .execution_clk = execution_clk,
46 .dst_offset = dst_offset,
47 .member_enum = deployer_enum,
49 .nullifier_tree_root = nullifier_tree_root,
50 .public_data_tree_root = public_data_tree_root,
51 .instance_exists =
true,
52 .retrieved_deployer_addr = deployer_addr,
53 .retrieved_class_id = class_id,
54 .retrieved_init_hash = init_hash,
58 auto events = emitter.dump_events();
70 ROW_FIELD_EQ(get_contract_instance_dst_offset, dst_offset),
71 ROW_FIELD_EQ(get_contract_instance_member_enum, deployer_enum),
74 ROW_FIELD_EQ(get_contract_instance_is_valid_member_enum, 1),
81 ROW_FIELD_EQ(get_contract_instance_retrieved_deployer_addr, deployer_addr),
82 ROW_FIELD_EQ(get_contract_instance_retrieved_class_id, class_id),
83 ROW_FIELD_EQ(get_contract_instance_retrieved_init_hash, init_hash),
85 ROW_FIELD_EQ(get_contract_instance_member_write_offset, dst_offset_plus_one),
87 ROW_FIELD_EQ(get_contract_instance_member_tag, ff_tag))));
90TEST(GetContractInstanceTraceTest, InvalidMemberEnum)
93 const uint32_t execution_clk = 42;
94 const FF nullifier_tree_root = 0x1234;
95 const FF public_data_tree_root = 0x5678;
97 const uint32_t dst_offset = 100;
98 const uint32_t space_id = 1;
99 const FF deployer_addr = 0x5678;
100 const FF class_id = 0x9ABC;
101 const FF init_hash = 0xDEF0;
102 const uint8_t invalid_enum = 5;
104 TestTraceContainer
trace;
105 GetContractInstanceTraceBuilder
builder;
106 simulation::EventEmitter<simulation::GetContractInstanceEvent> emitter;
108 simulation::GetContractInstanceEvent
event = {
109 .execution_clk = execution_clk,
111 .dst_offset = dst_offset,
112 .member_enum = invalid_enum,
113 .space_id = space_id,
114 .nullifier_tree_root = nullifier_tree_root,
115 .public_data_tree_root = public_data_tree_root,
116 .instance_exists =
true,
117 .retrieved_deployer_addr = deployer_addr,
118 .retrieved_class_id = class_id,
119 .retrieved_init_hash = init_hash,
123 auto events = emitter.dump_events();
135 ROW_FIELD_EQ(get_contract_instance_dst_offset, dst_offset),
136 ROW_FIELD_EQ(get_contract_instance_member_enum, invalid_enum),
141 ROW_FIELD_EQ(get_contract_instance_is_valid_member_enum, 0),
147TEST(GetContractInstanceTraceTest, OutOfBoundsWrite)
150 const uint32_t execution_clk = 42;
151 const FF nullifier_tree_root = 0x1234;
152 const FF public_data_tree_root = 0x5678;
155 const uint32_t space_id = 1;
156 const FF deployer_addr = 0x5678;
157 const FF class_id = 0x9ABC;
158 const FF init_hash = 0xDEF0;
161 const uint8_t zero_tag = 0;
163 TestTraceContainer
trace;
164 GetContractInstanceTraceBuilder
builder;
165 simulation::EventEmitter<simulation::GetContractInstanceEvent> emitter;
167 simulation::GetContractInstanceEvent
event = {
168 .execution_clk = execution_clk,
170 .dst_offset = dst_offset,
171 .member_enum = class_id_enum,
172 .space_id = space_id,
173 .nullifier_tree_root = nullifier_tree_root,
174 .public_data_tree_root = public_data_tree_root,
175 .instance_exists =
true,
176 .retrieved_deployer_addr = deployer_addr,
177 .retrieved_class_id = class_id,
178 .retrieved_init_hash = init_hash,
182 auto events = emitter.dump_events();
194 ROW_FIELD_EQ(get_contract_instance_dst_offset, dst_offset),
195 ROW_FIELD_EQ(get_contract_instance_member_enum, class_id_enum),
200 ROW_FIELD_EQ(get_contract_instance_dst_offset_diff_max_inv, 0),
202 ROW_FIELD_EQ(get_contract_instance_member_write_offset, out_of_bounds_write_offset),
203 ROW_FIELD_EQ(get_contract_instance_exists_tag, zero_tag),
204 ROW_FIELD_EQ(get_contract_instance_member_tag, zero_tag)
#define AVM_HIGHEST_MEM_ADDRESS
void process(const simulation::EventEmitterInterface< simulation::AluEvent >::Container &events, TraceContainer &trace)
std::vector< AvmFullRowConstRef > as_rows() const
AztecAddress contract_address
#define ROW_FIELD_EQ(field_name, expression)
TEST(EmitUnencryptedLogTest, Basic)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
simulation::PublicDataTreeReadWriteEvent event