12#include <boost/test/unit_test.hpp>
23 "\x9c\x52\x4a\xdb\xcf\x56\x11\x12\x2b\x29\x12\x5e\x5d\x35\xd2\xd2"
24 "\x22\x81\xaa\xb5\x33\xf0\x08\x32\xd5\x56\xb1\xf9\xea\xe5\x1d\x7d";
25const
char R1ArrayHex[] = "7D1DE5EAF9B156D53208F033B5AA8122D2d2355d5e12292b121156cfdb4a529c";
30 "\x70\x32\x1d\x7c\x47\xa5\x6b\x40\x26\x7e\x0a\xc3\xa6\x9c\xb6\xbf"
31 "\x13\x30\x47\xa3\x19\x2d\xda\x71\x49\x13\x72\xf0\xb4\xca\x81\xd7";
36 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
37 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
42 "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
43 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
48 "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
49 "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff";
55 std::stringstream Stream;
57 for (
unsigned int i = 0; i < width; ++i)
59 Stream<<std::setw(2)<<std::setfill(
'0')<<(
unsigned int)A[width-i-1];
131 for (
int i = 255; i >= 0; --i) {
133 *(
TmpL.
begin() + (i>>3)) |= 1<<(7-(i&7));
146 for (
int i = 159; i >= 0; --i) {
148 *(
TmpS.
begin() + (i>>3)) |= 1<<(7-(i&7));
167 uint256{
"0000000000000000000000000000000000000000000000000000000000000001"});
297#if defined(__clang__)
298# pragma clang diagnostic push
299# pragma clang diagnostic ignored "-Wself-assign-overloaded"
310#if defined(__clang__)
311# pragma clang diagnostic pop
318 std::string s_12{
"0000000000000000000000000000000000000000000000000000000000000012"};
350 constexpr unsigned int num_chars{T::size() * 2};
351 static_assert(num_chars <= 64);
352 const std::string valid_64char_input{
"0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF"};
353 const auto valid_input{valid_64char_input.substr(0, num_chars)};
356 auto valid_result{T::FromHex(valid_input)};
357 BOOST_REQUIRE(valid_result);
364 BOOST_CHECK(!T::FromHex(valid_input.substr(0, num_chars / 2)));
365 BOOST_CHECK(!T::FromHex(valid_input.substr(0, num_chars - 1)));
370 std::string invalid_chars{R
"( !"#$%&'()*+,-./:;<=>?@GHIJKLMNOPQRSTUVWXYZ[\]^_`ghijklmnopqrstuvwxyz{|}~)"};
371 for (
auto c : invalid_chars) {
372 BOOST_CHECK(!T::FromHex(valid_input.substr(0, num_chars - 1) + c));
375 std::string invalid_prefix{
"0x" + valid_input};
376 BOOST_CHECK(!T::FromHex(std::string_view(invalid_prefix.data(), num_chars)));
381 std::string chars_68{valid_64char_input +
"0123"};
382 BOOST_CHECK_EQUAL(T::FromHex(std::string_view(chars_68.data(), num_chars)).value().ToString(),
ToLower(valid_input));
383 BOOST_CHECK(!T::FromHex(std::string_view(chars_68.data(), num_chars - 1)));
384 BOOST_CHECK(!T::FromHex(std::string_view(chars_68.data(), num_chars + 1)));
398 uint256 one =
uint256{
"0000000000000000000000000000000000000000000000000000000000000001"};
404 auto runtime_uint{
uint256::FromHex(
"4A5E1E4BAAB89F3A32518A88C31BC87F618f76673e2cc77ab2127b7afdeda33b").value()};
405 constexpr uint256 consteval_uint{
"4a5e1e4baab89f3a32518a88c31bc87f618F76673E2CC77AB2127B7AFDEDA33B"};
arith_uint256 UintToArith256(const uint256 &a)
uint256 ArithToUint256(const arith_uint256 &a)
Double ended buffer combining vector and stream-like interfaces.
256-bit unsigned big integer.
std::string GetHex() const
constexpr unsigned char * end()
static constexpr unsigned int size()
constexpr unsigned char * begin()
std::string ToString() const
void SetHexDeprecated(std::string_view str)
Unlike FromHex this accepts any invalid input, thus it is fragile and deprecated!
static std::optional< uint160 > FromHex(std::string_view str)
static const uint256 ZERO
static std::optional< uint256 > FromHex(std::string_view str)
BOOST_AUTO_TEST_SUITE(cuckoocache_tests)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END()
#define BOOST_CHECK_EQUAL(v1, v2)
#define BOOST_CHECK(expr)
size_t GetSerializeSize(const T &t)
static void from_hex(unsigned char *data, int len, const char *hex)
uint256 uint256S(std::string_view str)
BOOST_CHECK_NE(OneL.ToString(), ArrayToString(ZeroArray, 32))
BOOST_AUTO_TEST_CASE(conversion)
BOOST_CHECK_LT(ZeroL, R1L)
const unsigned char ZeroArray[]
const unsigned char R1Array[]
uint160 uint160S(std::string_view str)
const unsigned char OneArray[]
const unsigned char R2Array[]
static std::string ArrayToString(const unsigned char A[], unsigned int width)
const unsigned char MaxArray[]
BOOST_CHECK_EQUAL_COLLECTIONS(R1L.begin(), R1L.end(), R1Array, R1Array+uint256::size())
void TestFromHex()
Implemented as a templated function so it can be reused by other classes that have a FromHex() method...
std::string ToLower(std::string_view str)
Returns the lowercase equivalent of the given string.