Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
flavor.test.cpp
Go to the documentation of this file.
3#include <cstddef>
4#include <gtest/gtest.h>
5
6using namespace bb;
7
8TEST(Flavor, Getters)
9{
11 using Flavor = UltraFlavor;
12 using FF = Flavor::FF;
14
15 const size_t circuit_size = 4;
16 ProverPolynomials polynomials{ circuit_size };
17
18 // set
19 size_t coset_idx = 0;
20 for (auto& id_poly : polynomials.get_ids()) {
21 id_poly = typename Flavor::Polynomial(circuit_size);
22 for (size_t i = 0; i < circuit_size; ++i) {
23 id_poly.at(i) = coset_idx * circuit_size + i;
24 }
25 ++coset_idx;
26 }
27
28 // Polynomials in the proving key can be set through loops over subsets produced by the getters
29 EXPECT_EQ(polynomials.id_1[0], FF(0));
30 EXPECT_EQ(polynomials.id_2[0], FF(4));
31 EXPECT_EQ(polynomials.id_3[0], FF(8));
32
33 Flavor::CommitmentLabels commitment_labels;
34
35 // Globals are also available through STL container sizes
36 EXPECT_EQ(polynomials.get_all().size(), Flavor::NUM_ALL_ENTITIES);
37 // Shited polynomials have the righ tsize
38 EXPECT_EQ(polynomials.get_all().size(), polynomials.get_shifted().size() + polynomials.get_unshifted().size());
39 // Commitment lables are stored in the flavor.
40 EXPECT_EQ(commitment_labels.w_r, "W_R");
41}
42
43TEST(Flavor, AllEntitiesSpecialMemberFunctions)
44{
45 using Flavor = UltraFlavor;
46 using FF = Flavor::FF;
47 using PartiallyEvaluatedMultivariates = Flavor::PartiallyEvaluatedMultivariates;
49
50 PartiallyEvaluatedMultivariates polynomials_A;
51 Polynomial random_poly{ 10 };
52 for (auto& coeff : random_poly.coeffs()) {
53 coeff = FF::random_element();
54 }
55
56 // Test some special member functions.
57
58 polynomials_A.w_l = random_poly.share();
59
60 ASSERT_EQ(random_poly, polynomials_A.w_l);
61
62 PartiallyEvaluatedMultivariates polynomials_B(polynomials_A);
63 ASSERT_EQ(random_poly, polynomials_B.w_l);
64
65 PartiallyEvaluatedMultivariates polynomials_C(std::move(polynomials_B));
66 ASSERT_EQ(random_poly, polynomials_C.w_l);
67}
68
69TEST(Flavor, GetRow)
70{
71 using Flavor = UltraFlavor;
72 using FF = typename Flavor::FF;
74 std::generate(
75 data.begin(), data.end(), []() { return std::vector<FF>({ FF::random_element(), FF::random_element() }); });
76 Flavor::ProverPolynomials prover_polynomials;
77 for (auto [poly, entry] : zip_view(prover_polynomials.get_all(), data)) {
78 poly = Flavor::Polynomial(entry);
79 }
80 auto row0 = prover_polynomials.get_row(0);
81 auto row1 = prover_polynomials.get_row(1);
82 EXPECT_EQ(row0.q_elliptic, prover_polynomials.q_elliptic[0]);
83 EXPECT_EQ(row1.w_4_shift, prover_polynomials.w_4_shift[1]);
84}
A container for commitment labels.
A container for storing the partially evaluated multivariates produced by sumcheck.
A container for the prover polynomials.
AllValues get_row(const size_t row_idx) const
Returns the evaluations of all prover polynomials at one point on the boolean hypercube,...
Curve::ScalarField FF
static constexpr size_t NUM_ALL_ENTITIES
bb::Polynomial< FF > Polynomial
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x .....
const std::vector< FF > data
typename ECCVMFlavor::ProverPolynomials ProverPolynomials
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
Entry point for Barretenberg command-line interface.
TEST(MegaCircuitBuilder, CopyConstructor)
typename Flavor::FF FF
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13