20 #include <ripple/basics/Blob.h>
21 #include <ripple/basics/base_uint.h>
22 #include <ripple/basics/hardened_hash.h>
23 #include <ripple/beast/unit_test.h>
24 #include <boost/endian/conversion.hpp>
34 template <std::
size_t Bits>
37 static constexpr
auto const endian = boost::endian::order::big;
66 testcase(
"base_uint: general purpose tests");
75 Blob raw{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
80 BEAST_EXPECT(raw.size() == u.size());
81 BEAST_EXPECT(
to_string(u) ==
"0102030405060708090A0B0C");
82 BEAST_EXPECT(*u.data() == 1);
83 BEAST_EXPECT(u.signum() == 1);
85 BEAST_EXPECT(!u.isZero());
86 BEAST_EXPECT(u.isNonZero());
90 BEAST_EXPECT(d == ++t);
103 BEAST_EXPECT(
to_string(v) ==
"FEFDFCFBFAF9F8F7F6F5F4F3");
104 BEAST_EXPECT(*v.data() == 0xfe);
105 BEAST_EXPECT(v.signum() == 1);
107 BEAST_EXPECT(!v.isZero());
108 BEAST_EXPECT(v.isNonZero());
112 BEAST_EXPECT(d == --t);
115 BEAST_EXPECT(
compare(u, v) < 0);
116 BEAST_EXPECT(
compare(v, u) > 0);
119 BEAST_EXPECT(v == u);
123 BEAST_EXPECT(
to_string(z) ==
"000000000000000000000000");
124 BEAST_EXPECT(*z.data() == 0);
125 BEAST_EXPECT(*z.begin() == 0);
126 BEAST_EXPECT(*
std::prev(z.end(), 1) == 0);
127 BEAST_EXPECT(z.signum() == 0);
129 BEAST_EXPECT(z.isZero());
130 BEAST_EXPECT(!z.isNonZero());
133 BEAST_EXPECT(d == 0);
138 BEAST_EXPECT(n ==
test96(1));
140 BEAST_EXPECT(n == beast::zero);
141 BEAST_EXPECT(n == z);
143 BEAST_EXPECT(
to_string(n) ==
"FFFFFFFFFFFFFFFFFFFFFFFF");
145 BEAST_EXPECT(n == z);
155 BEAST_EXPECT(uset.
size() == 4);
159 BEAST_EXPECT(tmp == u);
175 x[i] = (
'G' + (i % 10));