4#include <gmock/gmock.h>
5#include <gtest/gtest.h>
16using ::testing::AllOf;
17using ::testing::ElementsAre;
18using ::testing::Field;
19using ::testing::Return;
20using ::testing::SizeIs;
21using ::testing::StrictMock;
26TEST(AvmSimulationToRadixTest, BasicBits)
28 EventEmitter<ToRadixEvent> to_radix_event_emitter;
29 NoopEventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
32 StrictMock<MockGreaterThan>
gt;
35 auto bits = to_radix.to_le_bits(
FF::one(), 254);
42 EXPECT_THAT(to_radix_event_emitter.dump_events(),
49TEST(AvmSimulationToRadixTest, ShortBits)
51 EventEmitter<ToRadixEvent> to_radix_event_emitter;
52 NoopEventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
55 StrictMock<MockGreaterThan>
gt;
58 auto bits = to_radix.to_le_bits(
FF::one(), 1);
64 EXPECT_THAT(to_radix_event_emitter.dump_events(),
68TEST(AvmSimulationToRadixTest, DecomposeOneBitLargeValue)
70 EventEmitter<ToRadixEvent> to_radix_event_emitter;
71 NoopEventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
74 StrictMock<MockGreaterThan>
gt;
85 EXPECT_THAT(to_radix_event_emitter.dump_events(),
89TEST(AvmSimulationToRadixTest, BasicRadix)
91 EventEmitter<ToRadixEvent> to_radix_event_emitter;
92 NoopEventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
95 StrictMock<MockGreaterThan>
gt;
98 auto limbs = to_radix.to_le_radix(
FF::one(), 32, 256);
105 EXPECT_THAT(to_radix_event_emitter.dump_events(),
112TEST(AvmSimulationToRadixTest, ShortRadix)
114 EventEmitter<ToRadixEvent> to_radix_event_emitter;
115 NoopEventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
118 StrictMock<MockGreaterThan>
gt;
121 auto limbs = to_radix.to_le_radix(
FF::one(), 1, 256);
127 EXPECT_THAT(to_radix_event_emitter.dump_events(),
131TEST(AvmSimulationToRadixTest, DecomposeOneRadixLargerValue)
133 EventEmitter<ToRadixEvent> to_radix_event_emitter;
134 NoopEventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
137 StrictMock<MockGreaterThan>
gt;
140 auto limbs = to_radix.to_le_radix(
FF::neg_one(), 1, 256);
148 EXPECT_THAT(to_radix_event_emitter.dump_events(),
152TEST(AvmSimulationToRadixTest, DecomposeInDecimal)
154 EventEmitter<ToRadixEvent> to_radix_event_emitter;
155 NoopEventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
158 StrictMock<MockGreaterThan>
gt;
161 auto limbs = to_radix.to_le_radix(1337, 4, 10);
168TEST(AvmSimulationToRadixMemoryTest, BasicTest)
170 EventEmitter<ToRadixEvent> to_radix_event_emitter;
171 EventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
180 const uint32_t radix = 10;
181 const uint32_t num_limbs = 4;
182 bool is_output_bits =
false;
185 to_radix.to_be_radix(memory,
value, radix, num_limbs, is_output_bits,
dst_addr);
187 std::vector<uint8_t> output;
188 output.reserve(num_limbs);
190 for (uint32_t i = 0; i < num_limbs; ++i) {
198TEST(AvmSimulationToRadixMemoryTest, DstOutOfRange)
200 EventEmitter<ToRadixEvent> to_radix_event_emitter;
201 EventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
210 const uint32_t radix = 10;
211 const uint32_t num_limbs = 4;
212 bool is_output_bits =
false;
213 uint32_t num_writes = num_limbs - 1;
217 EXPECT_THROW(to_radix.to_be_radix(memory,
value, radix, num_limbs, is_output_bits,
dst_addr), ToRadixException);
220TEST(AvmSimulationToRadixMemoryTest, InvalidRadixValue)
222 EventEmitter<ToRadixEvent> to_radix_event_emitter;
223 EventEmitter<ToRadixMemoryEvent> to_radix_mem_event_emitter;
232 const uint32_t radix = 1;
233 const uint32_t num_limbs = 4;
234 bool is_output_bits =
false;
237 EXPECT_THROW(to_radix.to_be_radix(memory,
value, radix, num_limbs, is_output_bits,
dst_addr), ToRadixException);
#define AVM_HIGHEST_MEM_ADDRESS
const MemoryValue & get(MemoryAddress index) const override
ExecutionIdManager execution_id_manager
TEST(EmitUnencryptedLogTest, Basic)
std::vector< uint8_t > limbs
static constexpr field neg_one()
static constexpr field one()