1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
12using testing::ElementsAre;
17TEST(EccTraceGenTest, TraceGenerationAdd)
19 TestTraceContainer
trace;
22 FF p_x(
"0x04c95d1b26d63d46918a156cae92db1bcbc4072a27ec81dc82ea959abdbcf16a");
23 FF p_y(
"0x035b6dd9e63c1370462c74775765d07fc21fd1093cc988149d3aa763bb3dbb60");
25 FF q_x(
"0x009242167ec31949c00cbe441cd36757607406e87844fa2c8c4364a4403e66d7");
26 FF q_y(
"0x0fe3016d64cfa8045609f375284b6b739b5fa282e4cbb75cc7f1687ecc7420e3");
28 FF r_x(
"0x2b01df0ef6d941a826bea23bece8243cbcdc159d5e97fbaa2171f028e05ba9b6");
29 FF r_y(
"0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09");
31 builder.process_add({ { .p = p, .q = q, .result = r } },
trace);
41 ROW_FIELD_EQ(ecc_lambda, (q.y() - p.y()) / (q.x() - p.x())),
56TEST(EccTraceGenTest, TraceGenerationDouble)
58 TestTraceContainer
trace;
61 FF p_x(
"0x04c95d1b26d63d46918a156cae92db1bcbc4072a27ec81dc82ea959abdbcf16a");
62 FF p_y(
"0x035b6dd9e63c1370462c74775765d07fc21fd1093cc988149d3aa763bb3dbb60");
65 FF r_x(
"0x2b01df0ef6d941a826bea23bece8243cbcdc159d5e97fbaa2171f028e05ba9b6");
66 FF r_y(
"0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09");
69 builder.process_add({ { .p = p, .q = q, .result = r } },
trace);
79 ROW_FIELD_EQ(ecc_lambda, (p.x() * p.x() * 3) / (p.y() * 2)),
94TEST(EccTraceGenTest, TraceGenerationInfResult)
96 TestTraceContainer
trace;
99 FF p_x(
"0x04c95d1b26d63d46918a156cae92db1bcbc4072a27ec81dc82ea959abdbcf16a");
100 FF p_y(
"0x035b6dd9e63c1370462c74775765d07fc21fd1093cc988149d3aa763bb3dbb60");
106 builder.process_add({ { .p = p, .q = q, .result = r } },
trace);
131TEST(EccTraceGenTest, TraceGenerationInfAdd)
133 TestTraceContainer
trace;
136 FF p_x(
"0x04c95d1b26d63d46918a156cae92db1bcbc4072a27ec81dc82ea959abdbcf16a");
137 FF p_y(
"0x035b6dd9e63c1370462c74775765d07fc21fd1093cc988149d3aa763bb3dbb60");
144 builder.process_add({ { .p = p, .q = q, .result = r } },
trace);
154 ROW_FIELD_EQ(ecc_lambda, (q.y() - p.y()) / (q.x() - p.x())),
169TEST(EccTraceGenTest, TraceGenerationInfDouble)
171 TestTraceContainer
trace;
177 builder.process_add({ { .p = p, .q = p, .result = r } },
trace);
static const StandardAffinePoint & infinity()
std::vector< AvmFullRowConstRef > as_rows() const
#define ROW_FIELD_EQ(field_name, expression)
StandardAffinePoint< AvmFlavorSettings::EmbeddedCurve::AffineElement > EmbeddedCurvePoint
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
static constexpr field zero()