![]() |
Bitcoin Core 28.0.0
P2P Digital Currency
|
#include <arith_uint256.h>#include <test/util/setup_common.h>#include <uint256.h>#include <boost/test/unit_test.hpp>#include <cmath>#include <cstdint>#include <iomanip>#include <limits>#include <sstream>#include <string>#include <vector>Go to the source code of this file.
Macros | |
| #define | CHECKBITWISEOPERATOR(_A_, _B_, _OP_) |
| #define | CHECKASSIGNMENTOPERATOR(_A_, _B_, _OP_) |
Functions | |
| static arith_uint256 | arith_uint256V (const std::vector< unsigned char > &vch) |
| Convert vector to arith_uint256, via uint256 blob. | |
| static arith_uint256 | arith_uint256S (std::string_view str) |
| static std::string | ArrayToString (const unsigned char A[], unsigned int width) |
| BOOST_CHECK (R1L.ToString()==ArrayToString(R1Array, 32)) | |
| BOOST_CHECK (R2L.ToString()==ArrayToString(R2Array, 32)) | |
| BOOST_CHECK (ZeroL.ToString()==ArrayToString(ZeroArray, 32)) | |
| BOOST_CHECK (OneL.ToString()==ArrayToString(OneArray, 32)) | |
| BOOST_CHECK (MaxL.ToString()==ArrayToString(MaxArray, 32)) | |
| BOOST_CHECK (OneL.ToString() !=ArrayToString(ZeroArray, 32)) | |
| BOOST_CHECK (R1L !=R2L) | |
| BOOST_CHECK (ZeroL !=OneL) | |
| BOOST_CHECK (OneL !=ZeroL) | |
| BOOST_CHECK (MaxL !=ZeroL) | |
| BOOST_CHECK (~MaxL==ZeroL) | |
| BOOST_CHECK (((R1L ^ R2L) ^ R1L)==R2L) | |
| for (unsigned int i=0;i< 256;++i) == (MaxL << i)) | |
| BOOST_CHECK (ZeroL==(OneL<< 256)) | |
| BOOST_CHECK (arith_uint256S("0x"+R1L.ToString())==R1L) | |
| BOOST_CHECK (arith_uint256S("0x"+R2L.ToString())==R2L) | |
| BOOST_CHECK (arith_uint256S("0x"+ZeroL.ToString())==ZeroL) | |
| BOOST_CHECK (arith_uint256S("0x"+OneL.ToString())==OneL) | |
| BOOST_CHECK (arith_uint256S("0x"+MaxL.ToString())==MaxL) | |
| BOOST_CHECK (arith_uint256S(R1L.ToString())==R1L) | |
| BOOST_CHECK (arith_uint256S(" 0x"+R1L.ToString()+" ")==R1L) | |
| BOOST_CHECK (arith_uint256S("")==ZeroL) | |
| BOOST_CHECK (arith_uint256S("1")==OneL) | |
| BOOST_CHECK (R1L==arith_uint256S(R1ArrayHex)) | |
| BOOST_CHECK (arith_uint256(R1L)==R1L) | |
| BOOST_CHECK ((arith_uint256(R1L^R2L)^R2L)==R1L) | |
| BOOST_CHECK (arith_uint256(ZeroL)==ZeroL) | |
| BOOST_CHECK (arith_uint256(OneL)==OneL) | |
| BOOST_CHECK ((R1L &arith_uint256S("0xffffffffffffffff"))==arith_uint256(R1LLow64)) | |
| BOOST_CHECK (OneL==arith_uint256(1)) | |
| BOOST_CHECK (arith_uint256S("0xffffffffffffffff")==arith_uint256(0xffffffffffffffffULL)) | |
| BOOST_CHECK (tmpL==~ZeroL) | |
| static void | shiftArrayRight (unsigned char *to, const unsigned char *from, unsigned int arrayLength, unsigned int bitsToShift) |
| static void | shiftArrayLeft (unsigned char *to, const unsigned char *from, unsigned int arrayLength, unsigned int bitsToShift) |
| BOOST_AUTO_TEST_CASE (shifts) | |
| BOOST_CHECK (arith_uint256V(std::vector< unsigned char >(TmpArray, TmpArray+32))==(~R1L)) | |
| BOOST_CHECK (-ZeroL==ZeroL) | |
| BOOST_AUTO_TEST_CASE (bitwiseOperators) | |
| BOOST_CHECK_LT (ZeroL, OneL) | |
| BOOST_CHECK_LT (arith_uint256S("0000000000000000000000000000000000000000000000000000000000000001"), arith_uint256S("1000000000000000000000000000000000000000000000000000000000000000")) | |
| BOOST_AUTO_TEST_CASE (plusMinus) | |
| BOOST_AUTO_TEST_CASE (multiply) | |
| BOOST_AUTO_TEST_CASE (divide) | |
| static bool | almostEqual (double d1, double d2) |
| BOOST_CHECK (TmpL==R1L) | |
| BOOST_CHECK (HalfL.GetLow64()==0x0000000000000000ULL) | |
| for (int i=256;i > 53;--i) BOOST_CHECK(almostEqual((R1L > >(256-i)).getdouble() | |
| ldexp (R1Ldouble, i))) | |
| for (int i=53;i > 0;--i) | |
| BOOST_AUTO_TEST_CASE (bignum_SetCompact) | |
| BOOST_CHECK ((~~R1L<< 10)==(R1L<< 10)) | |
| BOOST_CHECK (!(~~R1L< R1L)) | |
| BOOST_CHECK (~~R1L<=R1L) | |
| BOOST_CHECK (!(~~R1L > R1L)) | |
| BOOST_CHECK (~~R1L >=R1L) | |
| BOOST_CHECK (!(R1L< ~~R1L)) | |
| BOOST_CHECK (R1L<=~~R1L) | |
| BOOST_CHECK (!(R1L > ~~R1L)) | |
| BOOST_CHECK (R1L >=~~R1L) | |
| BOOST_CHECK (~~R1L+R2L==R1L+~~R2L) | |
| BOOST_CHECK (~~R1L - R2L==R1L - ~~R2L) | |
| BOOST_CHECK (~R1L !=R1L) | |
Variables | |
| const unsigned char | R1Array [] |
| const char | R1ArrayHex [] = "7D1DE5EAF9B156D53208F033B5AA8122D2d2355d5e12292b121156cfdb4a529c" |
| const double | R1Ldouble = 0.4887374590559308955 |
| const arith_uint256 | R1L = arith_uint256V(std::vector<unsigned char>(R1Array,R1Array+32)) |
| const uint64_t | R1LLow64 = 0x121156cfdb4a529cULL |
| const unsigned char | R2Array [] |
| const arith_uint256 | R2L = arith_uint256V(std::vector<unsigned char>(R2Array,R2Array+32)) |
| const char | R1LplusR2L [] = "549FB09FEA236A1EA3E31D4D58F1B1369288D204211CA751527CFC175767850C" |
| const unsigned char | ZeroArray [] |
| const arith_uint256 | ZeroL = arith_uint256V(std::vector<unsigned char>(ZeroArray,ZeroArray+32)) |
| const unsigned char | OneArray [] |
| const arith_uint256 | OneL = arith_uint256V(std::vector<unsigned char>(OneArray,OneArray+32)) |
| const unsigned char | MaxArray [] |
| const arith_uint256 | MaxL = arith_uint256V(std::vector<unsigned char>(MaxArray,MaxArray+32)) |
| const arith_uint256 | HalfL = (OneL << 255) |
| uint64_t | Tmp64 = 0xc4dab720d9c7acaaULL |
| arith_uint256 | tmpL = ~ZeroL |
| unsigned char | TmpArray [32] |
| arith_uint256 | TmpL (R1L) = R2L |
| uint64_t | R1L64part = (R1L>>192).GetLow64() |
| #define CHECKASSIGNMENTOPERATOR | ( | _A_, | |
| _B_, | |||
| _OP_ ) |
Definition at line 225 of file arith_uint256_tests.cpp.
| #define CHECKBITWISEOPERATOR | ( | _A_, | |
| _B_, | |||
| _OP_ ) |
Definition at line 221 of file arith_uint256_tests.cpp.
|
static |
Definition at line 376 of file arith_uint256_tests.cpp.
|
inlinestatic |
Definition at line 27 of file arith_uint256_tests.cpp.
|
inlinestatic |
Convert vector to arith_uint256, via uint256 blob.
Definition at line 22 of file arith_uint256_tests.cpp.
|
static |
Definition at line 60 of file arith_uint256_tests.cpp.
| BOOST_AUTO_TEST_CASE | ( | bignum_SetCompact | ) |
| BOOST_AUTO_TEST_CASE | ( | bitwiseOperators | ) |
Definition at line 228 of file arith_uint256_tests.cpp.
| BOOST_AUTO_TEST_CASE | ( | divide | ) |
| BOOST_AUTO_TEST_CASE | ( | multiply | ) |
Definition at line 336 of file arith_uint256_tests.cpp.
| BOOST_AUTO_TEST_CASE | ( | plusMinus | ) |
| BOOST_AUTO_TEST_CASE | ( | shifts | ) |
| BOOST_CHECK | ( | ! | R1L > ~~R1L | ) |
| BOOST_CHECK | ( | ! | R1L< ~~R1L | ) |
| BOOST_CHECK | ( | ! | ~~R1L > R1L | ) |
| BOOST_CHECK | ( | ! | ~~R1L< R1L | ) |
| BOOST_CHECK | ( | (arith_uint256(R1L^R2L)^R2L) | = =R1L | ) |
| BOOST_CHECK | ( | (R1L &arith_uint256S("0xffffffffffffffff")) | = =arith_uint256(R1LLow64) | ) |
| BOOST_CHECK | ( | - | ZeroL = =ZeroL | ) |
| BOOST_CHECK | ( | arith_uint256(OneL) | = =OneL | ) |
| BOOST_CHECK | ( | arith_uint256(R1L) | = =R1L | ) |
| BOOST_CHECK | ( | arith_uint256(ZeroL) | = =ZeroL | ) |
| BOOST_CHECK | ( | arith_uint256S(" 0x"+R1L.ToString()+" ") | = =R1L | ) |
| BOOST_CHECK | ( | arith_uint256S("") | = =ZeroL | ) |
| BOOST_CHECK | ( | arith_uint256S("0x"+MaxL.ToString()) | = =MaxL | ) |
| BOOST_CHECK | ( | arith_uint256S("0x"+OneL.ToString()) | = =OneL | ) |
| BOOST_CHECK | ( | arith_uint256S("0x"+R1L.ToString()) | = =R1L | ) |
| BOOST_CHECK | ( | arith_uint256S("0x"+R2L.ToString()) | = =R2L | ) |
| BOOST_CHECK | ( | arith_uint256S("0x"+ZeroL.ToString()) | = =ZeroL | ) |
| BOOST_CHECK | ( | arith_uint256S("0xffffffffffffffff") | = =arith_uint256(0xffffffffffffffffULL) | ) |
| BOOST_CHECK | ( | arith_uint256S("1") | = =OneL | ) |
| BOOST_CHECK | ( | arith_uint256S(R1L.ToString()) | = =R1L | ) |
| BOOST_CHECK | ( | arith_uint256V(std::vector< unsigned char >(TmpArray, TmpArray+32)) | = =(~R1L) | ) |
| BOOST_CHECK | ( | HalfL. | GetLow64() = =0x0000000000000000ULL | ) |
| BOOST_CHECK | ( | MaxL. | ToString() = =ArrayToString(MaxArray, 32) | ) |
| BOOST_CHECK | ( | OneL.ToString() ! | = ArrayToString(ZeroArray, 32) | ) |
| BOOST_CHECK | ( | OneL. | ToString() = =ArrayToString(OneArray, 32) | ) |
| BOOST_CHECK | ( | OneL | = =arith_uint256(1) | ) |
| BOOST_CHECK | ( | R1L >=~~ | R1L | ) |
| BOOST_CHECK | ( | R1L. | ToString() = =ArrayToString(R1Array, 32) | ) |
| BOOST_CHECK | ( | R1L<=~~ | R1L | ) |
| BOOST_CHECK | ( | R1L | = =arith_uint256S(R1ArrayHex) | ) |
| BOOST_CHECK | ( | R2L. | ToString() = =ArrayToString(R2Array, 32) | ) |
| BOOST_CHECK | ( | ZeroL. | ToString() = =ArrayToString(ZeroArray, 32) | ) |
| BOOST_CHECK | ( | ~ | MaxL = =ZeroL | ) |
| BOOST_CHECK | ( | ~~R1L >= | R1L | ) |
| BOOST_CHECK | ( | ~~R1L<= | R1L | ) |
| BOOST_CHECK_LT | ( | arith_uint256S("0000000000000000000000000000000000000000000000000000000000000001") | , |
| arith_uint256S("1000000000000000000000000000000000000000000000000000000000000000") | ) |
| for | ( | int | i = 256; i, |
| 53;-- | i ) |
| for | ( | int | i = 53; i, |
| 0;-- | i ) |
Definition at line 413 of file arith_uint256_tests.cpp.
| for | ( | ) | == (MaxL << i)) |
| ldexp | ( | R1Ldouble | , |
| i | ) |
|
static |
|
static |
| const arith_uint256 HalfL = (OneL << 255) |
Definition at line 59 of file arith_uint256_tests.cpp.
| const unsigned char MaxArray[] |
Definition at line 54 of file arith_uint256_tests.cpp.
| const arith_uint256 MaxL = arith_uint256V(std::vector<unsigned char>(MaxArray,MaxArray+32)) |
Definition at line 57 of file arith_uint256_tests.cpp.
| const unsigned char OneArray[] |
Definition at line 49 of file arith_uint256_tests.cpp.
| const arith_uint256 OneL = arith_uint256V(std::vector<unsigned char>(OneArray,OneArray+32)) |
Definition at line 52 of file arith_uint256_tests.cpp.
| const unsigned char R1Array[] |
Definition at line 29 of file arith_uint256_tests.cpp.
| const char R1ArrayHex[] = "7D1DE5EAF9B156D53208F033B5AA8122D2d2355d5e12292b121156cfdb4a529c" |
Definition at line 32 of file arith_uint256_tests.cpp.
| BOOST_CHECK_LT * R1L = arith_uint256V(std::vector<unsigned char>(R1Array,R1Array+32)) |
Definition at line 34 of file arith_uint256_tests.cpp.
| uint64_t R1L64part = (R1L>>192).GetLow64() |
Definition at line 412 of file arith_uint256_tests.cpp.
| const double R1Ldouble = 0.4887374590559308955 |
Definition at line 33 of file arith_uint256_tests.cpp.
| const uint64_t R1LLow64 = 0x121156cfdb4a529cULL |
Definition at line 35 of file arith_uint256_tests.cpp.
| const char R1LplusR2L[] = "549FB09FEA236A1EA3E31D4D58F1B1369288D204211CA751527CFC175767850C" |
Definition at line 42 of file arith_uint256_tests.cpp.
| const unsigned char R2Array[] |
Definition at line 37 of file arith_uint256_tests.cpp.
| BOOST_CHECK_LT * R2L = arith_uint256V(std::vector<unsigned char>(R2Array,R2Array+32)) |
Definition at line 40 of file arith_uint256_tests.cpp.
| uint64_t Tmp64 = 0xc4dab720d9c7acaaULL |
Definition at line 90 of file arith_uint256_tests.cpp.
| unsigned char TmpArray |
Definition at line 208 of file arith_uint256_tests.cpp.
Definition at line 389 of file arith_uint256_tests.cpp.
| tmpL = ~ZeroL |
Definition at line 123 of file arith_uint256_tests.cpp.
| const unsigned char ZeroArray[] |
Definition at line 44 of file arith_uint256_tests.cpp.
| const arith_uint256 ZeroL = arith_uint256V(std::vector<unsigned char>(ZeroArray,ZeroArray+32)) |
Definition at line 47 of file arith_uint256_tests.cpp.