1#include <gtest/gtest.h>
22using BuilderTypes = testing::Types<UltraCircuitBuilder, MegaCircuitBuilder>;
35 .public_parameters = {},
51 .public_parameters = {},
56 "acir_format::assert_zero_to_constraints: produced a SingleArithmetic zero gate.");
80 auto builder = create_circuit<TypeParam>(program, {});
82 for (
size_t idx = 0; idx <
acir_format.public_inputs.size(); ++idx) {
83 uint32_t pub_input_idx =
acir_format.public_inputs[idx];
84 EXPECT_EQ(pub_input_idx,
builder.public_inputs()[idx]);
85 EXPECT_EQ(witnesses[pub_input_idx],
builder.get_variable(pub_input_idx));
94TEST(AcirFormatBilinearBatchedEqTest, UltraMegaArithmetizationDifference)
96 constexpr uint32_t w1 = 1;
97 constexpr uint32_t w2 = 2;
98 constexpr uint32_t w3 = 3;
99 constexpr uint32_t w4 = 4;
100 constexpr uint32_t w5 = 5;
129 .public_parameters = {},
145 ASSERT_EQ(big.size(), 2U);
146 EXPECT_EQ(big[0].
a, w1);
147 EXPECT_EQ(big[0].
b, w2);
148 EXPECT_EQ(big[0].mul_scaling, q_m);
149 EXPECT_EQ(big[0].a_scaling, q_l);
150 EXPECT_EQ(big[0].const_scaling, q_c);
151 EXPECT_EQ(big[1].
a, w1);
152 EXPECT_EQ(big[1].
b, w3);
153 EXPECT_EQ(big[1].mul_scaling, q_5);
177 EXPECT_EQ(bilinear.
a, w1);
178 EXPECT_EQ(bilinear.
b, w2);
179 EXPECT_EQ(bilinear.
c, w3);
180 EXPECT_EQ(bilinear.
d, bb::stdlib::IS_CONSTANT);
181 EXPECT_EQ(bilinear.
q_m, q_m);
182 EXPECT_EQ(bilinear.
q_5, q_5);
183 EXPECT_EQ(bilinear.
q_l, q_l);
187 EXPECT_EQ(bilinear.
q_c, q_c);
192 EXPECT_EQ(batched_eq.
a, w4);
193 EXPECT_EQ(batched_eq.
b, bb::stdlib::IS_CONSTANT);
194 EXPECT_EQ(batched_eq.
c, w5);
195 EXPECT_EQ(batched_eq.
d, bb::stdlib::IS_CONSTANT);
196 EXPECT_EQ(batched_eq.
q_l, e0);
198 EXPECT_EQ(batched_eq.
q_o, e1);
200 EXPECT_EQ(batched_eq.
q_c, k0);
201 EXPECT_EQ(batched_eq.
q_m, k1);
206TEST(AcirFormatBilinearBatchedEqTest, UltraThrowsOnBilinearAndBatchedEqCheckGates)
208 constexpr uint32_t w1 = 1;
209 constexpr uint32_t w2 = 2;
210 constexpr uint32_t w3 = 3;
211 constexpr uint32_t w4 = 4;
212 constexpr uint32_t w5 = 5;
228 .public_parameters = {},
241 "Bilinear constraints should only be present when using MegaCircuitBuilder.");
260 .public_parameters = {},
273 "BatchedEq constraints should only be present when using MegaCircuitBuilder.");
#define BB_ASSERT_EQ(actual, expected,...)
#define EXPECT_THROW_WITH_MESSAGE(code, expectedMessageRegex)
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
Entry point for Barretenberg command-line interface.
TYPED_TEST_SUITE(CommitmentKeyTest, Curves)
field< Bn254FrParams > fr
TYPED_TEST(CommitmentKeyTest, CommitToZeroPoly)
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
::testing::Types< UltraCircuitBuilder, MegaCircuitBuilder > BuilderTypes
std::vector< Acir::Opcode > opcodes
std::vector< std::tuple< std::vector< uint8_t >, Acir::Witness > > linear_combinations
std::vector< uint8_t > q_c
std::vector< std::tuple< std::vector< uint8_t >, Acir::Witness, Acir::Witness > > mul_terms
static constexpr field one()
BB_INLINE std::vector< uint8_t > to_buffer() const
static constexpr field zero()