1#include <gtest/gtest.h>
6#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
24 size_t num_bytes = arr.
size();
27 for (
size_t i = 0; i < num_bytes; ++i) {
29 reconstructed +=
byte *
fr(
uint256_t(1) << ((num_bytes - 1 - i) * 8));
31 EXPECT_TRUE(original_val.
get_value() == reconstructed);
38 return fr(val & mask);
45 std::vector<uint8_t> expected = { 0x04, 0x03, 0x02, 0x01 };
49 for (
const auto&
byte : arr.bytes()) {
54 arr.bytes()[0].set_origin_tag(submitted_value_origin_tag);
56 auto reversed_arr = arr.reverse();
58 EXPECT_EQ(arr.size(), 4UL);
59 EXPECT_EQ(reversed_arr.get_value(), expected);
61 EXPECT_EQ(reversed_arr.bytes()[3].get_origin_tag(), submitted_value_origin_tag);
63 EXPECT_EQ(reversed_arr.get_origin_tag(), submitted_value_origin_tag);
65 EXPECT_EQ(reversed_arr.bytes()[0].get_origin_tag(), clear_tag);
66 EXPECT_EQ(reversed_arr.bytes()[1].get_origin_tag(), clear_tag);
67 EXPECT_EQ(reversed_arr.bytes()[2].get_origin_tag(), clear_tag);
74 std::string
a =
"ascii";
81 for (
size_t num_bytes = 1; num_bytes < 32; num_bytes++) {
88 field.set_origin_tag(submitted_value_origin_tag);
91 EXPECT_EQ(byte_arr.
size(), num_bytes);
96 field_ct reconstructed_field(byte_arr);
97 EXPECT_EQ(reconstructed_field.
get_value(), expected_val);
98 EXPECT_EQ(reconstructed_field.
get_origin_tag(), submitted_value_origin_tag);
106 for (
size_t num_bytes = 1; num_bytes < 32; num_bytes++) {
114 field.set_origin_tag(submitted_value_origin_tag);
117 EXPECT_EQ(byte_arr.
size(), num_bytes);
122 field_ct reconstructed_field(byte_arr);
123 EXPECT_EQ(reconstructed_field.
get_value(), expected_val);
124 EXPECT_EQ(reconstructed_field.
get_origin_tag(), submitted_value_origin_tag);
127 EXPECT_TRUE(
builder.get_estimated_num_finalized_gates() - num_gates_start == 0);
154 EXPECT_TRUE(
builder.err() ==
"byte_array: y_hi doesn't fit in 128 bits.");
160 uint256_t random_overflowing_value(
"0xcf9bb18d1ece5fd647afba497e7ea7a3d3bdb158855487614a97cd3d2a1954b2");
167 EXPECT_TRUE(
builder.err() ==
"byte_array: y_hi doesn't fit in 128 bits.");
188 "byte_array: y_hi doesn't fit in 128 bits");
193 uint256_t random_overflowing_value(
"0xcf9bb18d1ece5fd647afba497e7ea7a3d3bdb158855487614a97cd3d2a1954b2");
196 "byte_array: y_hi doesn't fit in 128 bits");
199 EXPECT_TRUE(gates_start ==
builder.get_estimated_num_finalized_gates());
210 a.set_origin_tag(submitted_value_origin_tag);
212 b.set_origin_tag(challenge_origin_tag);
219 EXPECT_EQ(arr.
size(), 62UL);
231 EXPECT_EQ(verified,
true);
236 for (
size_t arr_length = 1; arr_length < 32; arr_length++) {
241 std::vector<uint8_t> native_bytes(arr_length);
242 for (
size_t idx = 0; idx < arr_length; idx++) {
244 native_bytes[idx] = byte;
253 for (
size_t i = 0; i < arr_length; ++i) {
254 expected_value = (expected_value << 8) + native_bytes[i];
258 EXPECT_EQ(represented_field_elt.
get_value(),
fr(expected_value));
270 std::string
a =
"\1\2\3a";
272 std::ostringstream os;
274 EXPECT_EQ(os.str(),
"[ 01 02 03 61 ]");
284 TestFixture::test_reverse();
289 TestFixture::test_from_string_constructor();
294 TestFixture::test_into_bytes_decomposition_less_than_32_bytes();
299 TestFixture::test_into_bytes_decomposition_less_than_32_bytes_const();
304 TestFixture::test_into_bytes_decomposition_32_bytes();
309 TestFixture::test_into_bytes_decomposition_32_bytes_const();
314 TestFixture::test_byte_array_input_output_consistency();
319 TestFixture::test_conversion_to_field();
324 TestFixture::test_ostream_operator();
#define EXPECT_THROW_OR_ABORT(statement, matcher)
stdlib::witness_t< Builder > witness_ct
void test_into_bytes_decomposition_32_bytes_const()
stdlib::field_t< Builder > field_ct
void test_into_bytes_decomposition_32_bytes()
fr slice_to_n_bytes(const fr &value, const uint64_t n)
void test_into_bytes_decomposition_less_than_32_bytes_const()
void test_from_string_constructor()
void test_ostream_operator()
void test_byte_array_input_output_consistency()
stdlib::byte_array< Builder > byte_array_ct
void check_byte_decomposition(const byte_array_ct &arr, const field_ct &original_val)
void test_conversion_to_field()
void test_into_bytes_decomposition_less_than_32_bytes()
size_t get_estimated_num_finalized_gates() const
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
virtual uint8_t get_random_uint8()=0
virtual uint256_t get_random_uint256()=0
Implements boolean logic in-circuit.
Represents a dynamic array of bytes in-circuit.
byte_array slice(size_t offset) const
Slice bytes from the byte array starting at offset. Does not add any constraints.
byte_array & write(byte_array const &other)
Appends the contents of another byte_array (other) to the end of this one.
void unset_free_witness_tag()
Unset the free witness flag for the byte array.
std::vector< uint8_t > get_value() const
A helper converting a byte_array into the vector of its uint8_t values.
std::string get_string() const
Given a byte_array, compute a vector containing the values of its entries and convert it to a string.
OriginTag get_origin_tag() const
bb::fr get_value() const
Given a := *this, compute its value given by a.v * a.mul + a.add.
ECCVMCircuitBuilder Builder
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Entry point for Barretenberg command-line interface.
TYPED_TEST_SUITE(ShpleminiTest, TestSettings)
field< Bn254FrParams > fr
TYPED_TEST(ShpleminiTest, CorrectnessOfMultivariateClaimBatching)
#define STANDARD_TESTING_TAGS
testing::Types< bb::UltraCircuitBuilder > CircuitTypes
static constexpr uint256_t modulus
static field random_element(numeric::RNG *engine=nullptr) noexcept