6#include <gmock/gmock.h>
7#include <gtest/gtest.h>
12using ::testing::ElementsAre;
13using ::testing::NiceMock;
14using ::testing::SizeIs;
18TEST(AvmSimulationFieldGreaterThanTest, BasicGt)
27 ON_CALL(range_check, assert_range(_, 128)).WillByDefault([&range_checks](
uint128_t x, uint64_t) {
28 range_checks.push_back(x);
37 uint128_t p_sub_a_witness_lo = p_limbs.lo - a_lo - 1;
38 uint128_t p_sub_a_witness_hi = p_limbs.hi - a_hi - 0;
43 uint128_t p_sub_b_witness_lo = p_limbs.lo - b_lo - 1;
44 uint128_t p_sub_b_witness_hi = p_limbs.hi - b_hi - 0;
46 uint128_t res_witness_lo = a_lo - b_lo - 1;
47 uint128_t res_witness_hi = a_hi - b_hi - 0;
49 EXPECT_THAT(range_checks,
62 ElementsAre(FieldGreaterThanEvent{
66 .a_limbs = U256Decomposition{ a_lo, a_hi },
67 .p_sub_a_witness = LimbsComparisonWitness{ p_sub_a_witness_lo, p_sub_a_witness_hi,
false },
68 .b_limbs = U256Decomposition{ b_lo, b_hi },
69 .p_sub_b_witness = LimbsComparisonWitness{ p_sub_b_witness_lo, p_sub_b_witness_hi,
false },
70 .res_witness = LimbsComparisonWitness{ res_witness_lo, res_witness_hi,
false },
75TEST(AvmSimulationFieldGreaterThanTest, BasicDec)
83 ON_CALL(range_check, assert_range(_, 128)).WillByDefault([&range_checks](
uint128_t x, uint64_t) {
84 range_checks.push_back(x);
87 U256Decomposition
expected_result = { .lo = 123456789, .hi = 987654321 };
95 uint128_t p_sub_a_witness_lo = p_limbs.lo - a_lo - 1;
96 uint128_t p_sub_a_witness_hi = p_limbs.hi - a_hi - 0;
98 EXPECT_THAT(range_checks, ElementsAre(a_lo, a_hi, p_sub_a_witness_lo, p_sub_a_witness_hi));
101 ElementsAre(FieldGreaterThanEvent{
104 .a_limbs = U256Decomposition{ a_lo, a_hi },
105 .p_sub_a_witness = LimbsComparisonWitness{ p_sub_a_witness_lo, p_sub_a_witness_hi,
false },
106 .b_limbs = U256Decomposition{ 0, 0 },
107 .p_sub_b_witness = LimbsComparisonWitness{ 0, 0,
false },
108 .res_witness = LimbsComparisonWitness{ 0, 0,
false },
113TEST(AvmSimulationFieldGreaterThanTest, ResultsGt)
124 EXPECT_FALSE(
field_gt.ff_gt(-1, -1));
126 EXPECT_FALSE(
field_gt.ff_gt(0, -1));
131TEST(AvmSimulationFieldGreaterThanTest, ResultsDec)
EventEmitter< DataCopyEvent > event_emitter
TEST(EmitUnencryptedLogTest, Basic)
U256Decomposition decompose(const uint256_t &x)
@ CANONICAL_DECOMPOSITION
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
unsigned __int128 uint128_t
static constexpr uint256_t modulus
NiceMock< MockFieldGreaterThan > field_gt