1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
20using tracegen::ExecutionTraceBuilder;
21using tracegen::TestTraceContainer;
26TEST(InternalCallStackConstrainingTest, EmptyRow)
32TEST(InternalCallStackConstrainingTest, SimpleInternalCallReturn)
34 TestTraceContainer
trace({ {
35 { C::execution_next_context_id, 0 },
36 { C::precomputed_first_row, 1 },
38 { C::internal_call_stack_sel, 1 },
39 { C::internal_call_stack_entered_call_id, 2 },
40 { C::internal_call_stack_id, 1 },
41 { C::internal_call_stack_return_id, 0 },
42 { C::internal_call_stack_return_pc, 10 },
46 { C::execution_sel, 1 },
47 { C::execution_pc, 0 },
48 { C::execution_enqueued_call_start, 1 },
49 { C::execution_next_pc, 10 },
50 { C::execution_sel_execute_internal_call, 1 },
52 { C::execution_rop_0_, 12345 },
54 { C::execution_next_internal_call_id, 2 },
55 { C::execution_internal_call_id, 1 },
56 { C::execution_internal_call_return_id, 0 },
60 { C::execution_sel, 1 },
61 { C::execution_pc, 12345 },
62 { C::execution_next_pc, 100000 },
64 { C::execution_next_internal_call_id, 3 },
65 { C::execution_internal_call_id, 2 },
66 { C::execution_internal_call_return_id, 1 },
70 { C::execution_sel, 1 },
71 { C::execution_pc, 100000 },
72 { C::execution_sel_execute_internal_return, 1 },
74 { C::execution_next_internal_call_id, 3 },
75 { C::execution_internal_call_id, 2 },
76 { C::execution_internal_call_return_id, 1 },
78 { C::execution_internal_call_return_id_inv, 1 },
82 { C::execution_sel, 1 },
83 { C::execution_pc, 10 },
84 { C::execution_next_pc, 20 },
86 { C::execution_next_internal_call_id, 3 },
87 { C::execution_internal_call_id, 1 },
88 { C::execution_internal_call_return_id, 0 },
92 { C::execution_sel, 1 },
93 { C::execution_pc, 20 },
94 { C::execution_enqueued_call_end, 1 },
96 { C::execution_next_internal_call_id, 3 },
97 { C::execution_internal_call_id, 1 },
98 { C::execution_internal_call_return_id, 0 },
102 { C::execution_sel, 0 },
103 { C::execution_last, 1 },
106 check_relation<internal_call>(
trace);
113TEST(InternalCallStackConstrainingTest, ReturnError)
115 TestTraceContainer
trace({ {
116 { C::execution_next_context_id, 0 },
117 { C::precomputed_first_row, 1 },
121 { C::execution_sel, 1 },
122 { C::execution_pc, 0 },
123 { C::execution_enqueued_call_start, 1 },
124 { C::execution_next_pc, 10 },
126 { C::execution_next_internal_call_id, 2 },
127 { C::execution_internal_call_id, 1 },
128 { C::execution_internal_call_return_id, 0 },
132 { C::execution_sel, 1 },
133 { C::execution_pc, 10 },
134 { C::execution_sel_execute_internal_return, 1 },
136 { C::execution_next_internal_call_id, 2 },
137 { C::execution_internal_call_id, 1 },
138 { C::execution_internal_call_return_id, 0 },
140 { C::execution_internal_call_return_id_inv, 0 },
141 { C::execution_sel_opcode_error, 1 },
145 { C::execution_sel, 0 },
146 { C::execution_last, 1 },
149 check_relation<internal_call>(
trace);
void check_interaction(tracegen::TestTraceContainer &trace)
TEST(TxExecutionConstrainingTest, WriteTreeValue)
TestTraceContainer empty_trace()
lookup_settings< lookup_internal_call_push_call_stack_settings_ > lookup_internal_call_push_call_stack_settings
lookup_settings< lookup_internal_call_unwind_call_stack_settings_ > lookup_internal_call_unwind_call_stack_settings