1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
19using tracegen::TestTraceContainer;
23using tracegen::GreaterThanTraceBuilder;
24using tracegen::RangeCheckTraceBuilder;
32class GreaterThanTest :
public ::testing::TestWithParam<std::array<uint128_t, 3>> {};
36TEST_P(GreaterThanTest, GreaterThan)
39 auto [
a,
b, num_bits] = GetParam();
42 auto trace = TestTraceContainer({
44 { C::gt_abs_diff, abs_diff },
47 { C::gt_num_bits, num_bits },
48 { C::gt_res,
static_cast<uint8_t
>(res) },
53 check_all_interactions<GreaterThanTraceBuilder>(trace);
54 check_relation<gt>(trace);
57TEST_P(GreaterThanTest, GreaterThanTraceGen)
60 TestTraceContainer
trace;
61 GreaterThanTraceBuilder
builder;
62 auto [
a,
b, num_bits] = GetParam();
74 check_all_interactions<GreaterThanTraceBuilder>(trace);
75 check_relation<gt>(trace);
78TEST(GreaterThanConstrainingTest, NegativeGT)
85 auto trace = TestTraceContainer({
87 { C::gt_abs_diff, abs_diff },
90 { C::gt_num_bits, 16 },
91 { C::gt_res,
static_cast<uint8_t
>(res) },
96 check_all_interactions<GreaterThanTraceBuilder>(trace);
97 check_relation<gt>(trace);
98 auto wrong_b = res ?
FF(
a) + 1 :
FF(
a) - 1;
99 trace.
set(Column::gt_input_b, 0, wrong_b);
103 auto new_abs_diff = res ?
FF(
a) - wrong_b - 1 : wrong_b -
FF(
a);
104 trace.
set(Column::gt_abs_diff, 0, new_abs_diff);
106 check_relation<gt>(trace);
113TEST(GreaterThanConstrainingTest, NegativeGTResult)
120 auto trace = TestTraceContainer({
122 { C::gt_abs_diff, abs_diff },
123 { C::gt_input_a,
a },
124 { C::gt_input_b,
b },
125 { C::gt_num_bits, 16 },
126 { C::gt_res,
static_cast<uint8_t
>(res) },
131 check_all_interactions<GreaterThanTraceBuilder>(trace);
132 check_relation<gt>(trace);
133 trace.
set(Column::gt_res, 0,
static_cast<uint8_t
>(!res));
137 auto new_abs_diff = res ?
FF(
b) -
FF(
a) :
FF(
a) -
FF(
b) - 1;
138 trace.
set(Column::gt_abs_diff, 0, new_abs_diff);
140 check_relation<gt>(trace);
#define EXPECT_THROW_WITH_MESSAGE(code, expectedMessageRegex)
void process(const simulation::EventEmitterInterface< simulation::AluEvent >::Container &events, TraceContainer &trace)
Process the ALU events and populate the ALU relevant columns in the trace.
void process(const simulation::EventEmitterInterface< simulation::RangeCheckEvent >::Container &events, TraceContainer &trace)
void set(Column col, uint32_t row, const FF &value)
RangeCheckTraceBuilder range_check_builder
INSTANTIATE_TEST_SUITE_P(PaddingVariants, AvmRecursiveTestsParameterized, ::testing::Values(false, true), [](const auto &info) { return info.param ? "Padded" :"Unpadded";})
TEST_P(AvmRecursiveTestsParameterized, GoblinRecursion)
A test of the Goblinized AVM recursive verifier.
TEST(AvmFixedVKTests, FixedVKCommitments)
Test that the fixed VK commitments agree with the ones computed from precomputed columns.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
unsigned __int128 uint128_t