4#include <gtest/gtest.h>
17 template <
typename T>
void check_conversion(T in,
bool valid_circuit =
true,
bool point_at_infinity =
false)
19 size_t len = Codec::template calc_num_fields<T>();
21 EXPECT_EQ(
len, frs.size());
22 auto out = Codec::template deserialize_from_fields<T>(frs);
25 EXPECT_EQ(in.get_value() == out.get_value(), expected);
27 auto ctx = in.get_context();
34 size_t len = Codec::template calc_num_fields<T>();
35 auto frs = Codec::template serialize_to_fields<T>(x);
36 EXPECT_EQ(
len, frs.size());
37 auto y = Codec::template deserialize_from_fields<T>(frs);
38 EXPECT_EQ(x.size(), y.size());
39 for (
auto [val1, val2] :
zip_view(x, y)) {
40 EXPECT_EQ(val1.get_value(), val2.get_value());
45using BuilderTypes = testing::Types<UltraCircuitBuilder, MegaCircuitBuilder>;
57 std::string(
"9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
59 this->check_conversion(field_element);
63 this->check_conversion(field_element);
65 field_element_val =
bb::fr(1);
67 this->check_conversion(field_element);
80 std::string(
"9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
96 this->check_conversion(group_element);
103 this->check_conversion(group_element);
108 const size_t num_points = 50;
111 for (
size_t i = 0; i < num_points; i++) {
115 this->check_conversion(group_element);
126 this->check_conversion(group_element,
true,
true);
139 this->check_conversion(group_element);
156 this->check_conversion(group_element);
160 const size_t num_points = 50;
163 for (
size_t i = 0; i < num_points; i++) {
167 this->check_conversion(group_element);
177 this->check_conversion(group_element,
false);
185 this->check_conversion(group_element);
200 Codec::template deserialize_from_fields<bn254_element<Builder>>(zeros);
202 EXPECT_TRUE(point_at_infinity.is_point_at_infinity().get_value());
209 Codec::template deserialize_from_fields<grumpkin_element<Builder>>(zeros);
228 this->check_conversion_iterable(array_of_frs_4);
237 this->check_conversion_iterable(array_of_frs_7);
252 static_cast<bb::fq>(std::string(
"9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"))),
255 static_cast<bb::fq>(std::string(
"2bf1eaf87f7d27e8dc4056e9af975985bccc89077a21891d6c7b6ccce0631f95"))),
258 static_cast<bb::fq>(std::string(
"9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"))),
261 static_cast<bb::fq>(std::string(
"018555a8eb50cf07f64b019ebaf3af3c925c93e631f3ecd455db07bbb52bbdd3"))),
263 this->check_conversion_iterable(array_of_fqs_4);
278 this->check_conversion_iterable(univariate);
293 static_cast<bb::fq>(std::string(
"9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"))),
296 static_cast<bb::fq>(std::string(
"2bf1eaf87f7d27e8dc4056e9af975985bccc89077a21891d6c7b6ccce0631f95"))),
299 static_cast<bb::fq>(std::string(
"018555a8eb50cf07f64b019ebaf3af3c925c93e631f3ecd455db07bbb52bbdd3"))),
302 static_cast<bb::fq>(std::string(
"2bf1eaf87f7d27e8dc4056e9af975985bccc89077a21891d6c7b6ccce0631f95"))) }
304 this->check_conversion_iterable(univariate);
#define EXPECT_THROW_OR_ABORT(statement, matcher)
#define BB_DISABLE_ASSERTS()
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
A univariate polynomial represented by its values on {domain_start, domain_start + 1,...
typename Group::affine_element AffineElement
typename Group::affine_element AffineElement
static std::vector< fr > serialize_to_fields(const T &val)
Core stdlib Transcript serialization method.
cycle_group represents a group Element of the proving system's embedded curve, i.e....
bool_t is_point_at_infinity() const
void check_conversion_iterable(T x)
void check_conversion(T in, bool valid_circuit=true, bool point_at_infinity=false)
testing::Types< UltraCircuitBuilder, MegaCircuitBuilder > BuilderTypes
element< Builder, fq< Builder >, fr< Builder >, curve::BN254::Group > bn254_element
std::conditional_t< IsGoblinBigGroup< C, Fq, Fr, G >, element_goblin::goblin_element< C, goblin_field< C >, Fr, G >, element_default::element< C, Fq, Fr, G > > element
element wraps either element_default::element or element_goblin::goblin_element depending on parametr...
TYPED_TEST_SUITE(ShpleminiTest, TestSettings)
field< Bn254FrParams > fr
TYPED_TEST(ShpleminiTest, CorrectnessOfMultivariateClaimBatching)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static field random_element(numeric::RNG *engine=nullptr) noexcept
static constexpr uint256_t modulus_minus_two