2#include <gmock/gmock.h>
3#include <gtest/gtest.h>
18using ::testing::Field;
23simulation::KeccakF1600Event create_standard_event_mem_slice()
25 simulation::KeccakF1600Event
event;
31 for (
size_t i = 0; i < 5; i++) {
32 for (
size_t j = 0; j < 5; j++) {
33 const uint64_t input_value = (i * 5 + j) + 1000;
34 const uint64_t output_value = (i * 5 + j) + 10000;
35 event.src_mem_values[i][j] = MemoryValue::from<uint64_t>(input_value);
36 event.rounds[0].state[i][j] = input_value;
37 if (i == 0 && j == 0) {
48TEST(KeccakF1600TraceGenTest, MemorySliceReadAndWrite)
50 TestTraceContainer
trace;
51 KeccakF1600TraceBuilder
builder;
54 auto event = create_standard_event_mem_slice();
145TEST(KeccakF1600TraceGenTest, MainKeccakTraceWithSimulation)
147 TestTraceContainer
trace;
151 const uint32_t space_id = 23;
162 EXPECT_THAT(rows.at(1),
171 EXPECT_THAT(rows.at(i),
201TEST(KeccakF1600TraceGenTest, TagErrorHandling)
203 TestTraceContainer
trace;
207 const uint32_t space_id = 79;
210 const size_t error_offset = 7;
220 for (
size_t i = 1; i < error_offset + 2; i++) {
221 EXPECT_THAT(rows.at(i),
231 for (
size_t i = 1; i < error_offset + 1; i++) {
232 EXPECT_THAT(rows.at(i),
240 rows.at(error_offset + 1),
242 (
FF(
static_cast<uint8_t
>(error_tag)) -
FF(
static_cast<uint8_t
>(
MemoryTag::U64))).invert()),
246 EXPECT_THAT(rows.at(error_offset + 2),
ROW_FIELD_EQ(keccak_memory_sel, 0));
251 EXPECT_THAT(rows.at(1),
267 EXPECT_THAT(rows.at(i),
278TEST(KeccakF1600TraceGenTest, SrcAddressOutOfBounds)
280 TestTraceContainer
trace;
284 const uint32_t space_id = 23;
293 EXPECT_THAT(rows.at(1),
307 EXPECT_THAT(rows.at(i),
314 EXPECT_THAT(rows.at(1),
ROW_FIELD_EQ(keccak_memory_sel, 0));
321TEST(KeccakF1600TraceGenTest, DstAddressOutOfBounds)
323 TestTraceContainer
trace;
327 const uint32_t space_id = 23;
336 EXPECT_THAT(rows.at(1),
350 EXPECT_THAT(rows.at(i),
357 EXPECT_THAT(rows.at(1),
ROW_FIELD_EQ(keccak_memory_sel, 0));
#define AVM_KECCAKF1600_STATE_SIZE
#define AVM_HIGHEST_MEM_ADDRESS
#define AVM_KECCAKF1600_NUM_ROUNDS
#define AVM_MEMORY_NUM_BITS
std::vector< AvmFullRowConstRef > as_rows() const
#define ROW_FIELD_EQ(field_name, expression)
TEST(EmitUnencryptedLogTest, Basic)
constexpr std::array< uint64_t, 24 > keccak_round_constants
void generate_keccak_trace_with_slice_error(TestTraceContainer &trace, MemoryAddress dst_address, MemoryAddress src_address, uint32_t space_id)
void generate_keccak_trace_with_tag_error(TestTraceContainer &trace, MemoryAddress dst_address, MemoryAddress src_address, size_t error_offset, MemoryTag error_tag, uint32_t space_id)
void generate_keccak_trace(TestTraceContainer &trace, const std::vector< MemoryAddress > &dst_addresses, const std::vector< MemoryAddress > &src_addresses, uint32_t space_id)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
simulation::PublicDataTreeReadWriteEvent event