1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
23using tracegen::BytecodeTraceBuilder;
24using tracegen::TestTraceContainer;
30void init_trace(TestTraceContainer&
trace)
33 trace.
set(C::precomputed_first_row, 0, 1);
36TEST(BytecodeRetrievalConstrainingTest, EmptyRow)
41TEST(BytecodeRetrievalConstrainingTest, SuccessfulRetrieval)
43 TestTraceContainer
trace;
47 FF nullifier_root = FF::random_element();
48 FF public_data_tree_root = FF::random_element();
51 uint32_t bytecode_size = 20;
55 builder.process_retrieval({ { .bytecode_id = klass.public_bytecode_commitment,
56 .address = instance.deployer_addr,
57 .current_class_id = instance.current_class_id,
58 .contract_class = klass,
59 .nullifier_root = nullifier_root,
60 .public_data_tree_root = public_data_tree_root,
64 check_relation<bc_retrieval>(
trace);
67TEST(BytecodeRetrievalConstrainingTest, NonExistentInstance)
70 TestTraceContainer
trace;
79 { C::bc_retrieval_sel, 1 },
80 { C::bc_retrieval_instance_exists, 0 },
81 { C::bc_retrieval_current_class_id, 0 },
82 { C::bc_retrieval_artifact_hash, 0 },
83 { C::bc_retrieval_private_function_root, 0 },
84 { C::bc_retrieval_bytecode_id, 0 },
86 { C::bc_retrieval_error, 1 },
89 check_relation<bc_retrieval>(
trace);
92 trace.
set(C::bc_retrieval_current_class_id, 1, 99);
94 "CURRENT_CLASS_ID_IS_ZERO_IF_INSTANCE_DOES_NOT_EXIST");
96 trace.
set(C::bc_retrieval_current_class_id, 1, 0);
99 trace.
set(C::bc_retrieval_artifact_hash, 1, 99);
102 trace.
set(C::bc_retrieval_artifact_hash, 1, 0);
105 trace.
set(C::bc_retrieval_private_function_root, 1, 99);
107 "PRIVATE_FUNCTION_ROOT_IS_ZERO_IF_INSTANCE_DOES_NOT_EXIST");
109 trace.
set(C::bc_retrieval_private_function_root, 1, 0);
112 trace.
set(C::bc_retrieval_bytecode_id, 1, 99);
115 trace.
set(C::bc_retrieval_bytecode_id, 1, 0);
void set(Column col, uint32_t row, const FF &value)
AztecAddress contract_address
#define EXPECT_THROW_WITH_MESSAGE(code, expectedMessage)
TEST(TxExecutionConstrainingTest, WriteTreeValue)
ContractClass random_contract_class(size_t bytecode_size)
ContractInstance random_contract_instance()
TestTraceContainer empty_trace()