@@ -58,7 +58,7 @@ static std::string ArrayToString(const unsigned char A[], unsigned int width)
58
58
return Stream.str ();
59
59
}
60
60
61
- // Input is treated as little-endian .
61
+ // Takes hex string in reverse byte order .
62
62
inline uint160 uint160S (std::string_view str)
63
63
{
64
64
uint160 rv;
@@ -99,6 +99,7 @@ BOOST_AUTO_TEST_CASE( basics ) // constructors, equality, inequality
99
99
BOOST_CHECK_EQUAL (uint256S (" 0x" +R1L.ToString ()+" -trash;%^& " ), R1L);
100
100
BOOST_CHECK_EQUAL (uint256S (" \t \n \n \f\n\r\t\v\t 0x" +R1L.ToString ()+" \t \n \n \f\n\r\t\v\t " ), R1L);
101
101
BOOST_CHECK_EQUAL (uint256S (" " ), ZeroL);
102
+ BOOST_CHECK_EQUAL (uint256S (" 1" ), OneL);
102
103
BOOST_CHECK_EQUAL (R1L, uint256S (R1ArrayHex));
103
104
BOOST_CHECK_EQUAL (uint256 (R1L), R1L);
104
105
BOOST_CHECK_EQUAL (uint256 (ZeroL), ZeroL);
@@ -152,9 +153,15 @@ BOOST_AUTO_TEST_CASE( comparison ) // <= >= < >
152
153
BOOST_CHECK_LT (R1S, MaxS);
153
154
BOOST_CHECK_LT (R2S, MaxS);
154
155
155
- // Verify hex strings are little-endian
156
- BOOST_CHECK_LT (uint256S (" 2000000000000000000000000000000000000000000000000000000000000001" ),
157
- uint256S (" 1000000000000000000000000000000000000000000000000000000000000002" ));
156
+ // Non-arithmetic uint256s compare from the beginning of their inner arrays:
157
+ BOOST_CHECK_LT (R2L, R1L);
158
+ // Ensure first element comparisons give the same order as above:
159
+ BOOST_CHECK_LT (*R2L.begin (), *R1L.begin ());
160
+ // Ensure last element comparisons give a different result (swapped params):
161
+ BOOST_CHECK_LT (*(R1L.end ()-1 ), *(R2L.end ()-1 ));
162
+ // Hex strings represent reverse-encoded bytes, with lexicographic ordering:
163
+ BOOST_CHECK_LT (uint256S (" 1000000000000000000000000000000000000000000000000000000000000000" ),
164
+ uint256S (" 0000000000000000000000000000000000000000000000000000000000000001" ));
158
165
}
159
166
160
167
BOOST_AUTO_TEST_CASE (methods) // GetHex SetHexDeprecated FromHex begin() end() size() GetLow64 GetSerializeSize, Serialize, Unserialize
@@ -172,11 +179,11 @@ BOOST_AUTO_TEST_CASE(methods) // GetHex SetHexDeprecated FromHex begin() end() s
172
179
BOOST_CHECK_EQUAL (uint256::FromHex (ZeroL.ToString ()).value (), uint256 ());
173
180
174
181
TmpL = uint256::FromHex (R1L.ToString ()).value ();
175
- BOOST_CHECK_EQUAL_COLLECTIONS (R1L.begin (), R1L.end (), R1Array, R1Array + R1L. size ());
176
- BOOST_CHECK_EQUAL_COLLECTIONS (TmpL.begin (), TmpL.end (), R1Array, R1Array + TmpL. size ());
177
- BOOST_CHECK_EQUAL_COLLECTIONS (R2L.begin (), R2L.end (), R2Array, R2Array + R2L. size ());
178
- BOOST_CHECK_EQUAL_COLLECTIONS (ZeroL.begin (), ZeroL.end (), ZeroArray, ZeroArray + ZeroL. size ());
179
- BOOST_CHECK_EQUAL_COLLECTIONS (OneL.begin (), OneL.end (), OneArray, OneArray + OneL. size ());
182
+ BOOST_CHECK_EQUAL_COLLECTIONS (R1L.begin (), R1L.end (), R1Array, R1Array + uint256:: size ());
183
+ BOOST_CHECK_EQUAL_COLLECTIONS (TmpL.begin (), TmpL.end (), R1Array, R1Array + uint256:: size ());
184
+ BOOST_CHECK_EQUAL_COLLECTIONS (R2L.begin (), R2L.end (), R2Array, R2Array + uint256:: size ());
185
+ BOOST_CHECK_EQUAL_COLLECTIONS (ZeroL.begin (), ZeroL.end (), ZeroArray, ZeroArray + uint256:: size ());
186
+ BOOST_CHECK_EQUAL_COLLECTIONS (OneL.begin (), OneL.end (), OneArray, OneArray + uint256:: size ());
180
187
BOOST_CHECK_EQUAL (R1L.size (), sizeof (R1L));
181
188
BOOST_CHECK_EQUAL (sizeof (R1L), 32 );
182
189
BOOST_CHECK_EQUAL (R1L.size (), 32 );
@@ -218,11 +225,11 @@ BOOST_AUTO_TEST_CASE(methods) // GetHex SetHexDeprecated FromHex begin() end() s
218
225
BOOST_CHECK_EQUAL (uint160::FromHex (ZeroS.ToString ()).value (), uint160 ());
219
226
220
227
TmpS = uint160::FromHex (R1S.ToString ()).value ();
221
- BOOST_CHECK_EQUAL_COLLECTIONS (R1S.begin (), R1S.end (), R1Array, R1Array + R1S. size ());
222
- BOOST_CHECK_EQUAL_COLLECTIONS (TmpS.begin (), TmpS.end (), R1Array, R1Array + TmpS. size ());
223
- BOOST_CHECK_EQUAL_COLLECTIONS (R2S.begin (), R2S.end (), R2Array, R2Array + R2S. size ());
224
- BOOST_CHECK_EQUAL_COLLECTIONS (ZeroS.begin (), ZeroS.end (), ZeroArray, ZeroArray + ZeroS. size ());
225
- BOOST_CHECK_EQUAL_COLLECTIONS (OneS.begin (), OneS.end (), OneArray, OneArray + OneS. size ());
228
+ BOOST_CHECK_EQUAL_COLLECTIONS (R1S.begin (), R1S.end (), R1Array, R1Array + uint160:: size ());
229
+ BOOST_CHECK_EQUAL_COLLECTIONS (TmpS.begin (), TmpS.end (), R1Array, R1Array + uint160:: size ());
230
+ BOOST_CHECK_EQUAL_COLLECTIONS (R2S.begin (), R2S.end (), R2Array, R2Array + uint160:: size ());
231
+ BOOST_CHECK_EQUAL_COLLECTIONS (ZeroS.begin (), ZeroS.end (), ZeroArray, ZeroArray + uint160:: size ());
232
+ BOOST_CHECK_EQUAL_COLLECTIONS (OneS.begin (), OneS.end (), OneArray, OneArray + uint160:: size ());
226
233
BOOST_CHECK_EQUAL (R1S.size (), sizeof (R1S));
227
234
BOOST_CHECK_EQUAL (sizeof (R1S), 20 );
228
235
BOOST_CHECK_EQUAL (R1S.size (), 20 );
@@ -307,23 +314,23 @@ BOOST_AUTO_TEST_CASE(parse)
307
314
{
308
315
std::string s_12{" 0000000000000000000000000000000000000000000000000000000000000012" };
309
316
BOOST_CHECK_EQUAL (uint256S (" 12\0 " ).GetHex (), s_12);
310
- BOOST_CHECK_EQUAL (uint256S (std::string {" 12\0 " , 3 }).GetHex (), s_12);
317
+ BOOST_CHECK_EQUAL (uint256S (std::string_view {" 12\0 " , 3 }).GetHex (), s_12);
311
318
BOOST_CHECK_EQUAL (uint256S (" 0x12" ).GetHex (), s_12);
312
319
BOOST_CHECK_EQUAL (uint256S (" 0x12" ).GetHex (), s_12);
313
320
BOOST_CHECK_EQUAL (uint256S (" 12" ).GetHex (), s_12);
314
321
}
315
322
{
316
323
std::string s_1{uint256::ONE.GetHex ()};
317
324
BOOST_CHECK_EQUAL (uint256S (" 1\0 " ).GetHex (), s_1);
318
- BOOST_CHECK_EQUAL (uint256S (std::string {" 1\0 " , 2 }).GetHex (), s_1);
325
+ BOOST_CHECK_EQUAL (uint256S (std::string_view {" 1\0 " , 2 }).GetHex (), s_1);
319
326
BOOST_CHECK_EQUAL (uint256S (" 0x1" ).GetHex (), s_1);
320
327
BOOST_CHECK_EQUAL (uint256S (" 0x1" ).GetHex (), s_1);
321
328
BOOST_CHECK_EQUAL (uint256S (" 1" ).GetHex (), s_1);
322
329
}
323
330
{
324
331
std::string s_0{uint256::ZERO.GetHex ()};
325
332
BOOST_CHECK_EQUAL (uint256S (" \0 " ).GetHex (), s_0);
326
- BOOST_CHECK_EQUAL (uint256S (std::string {" \0 " , 1 }).GetHex (), s_0);
333
+ BOOST_CHECK_EQUAL (uint256S (std::string_view {" \0 " , 1 }).GetHex (), s_0);
327
334
BOOST_CHECK_EQUAL (uint256S (" 0x" ).GetHex (), s_0);
328
335
BOOST_CHECK_EQUAL (uint256S (" 0x" ).GetHex (), s_0);
329
336
BOOST_CHECK_EQUAL (uint256S (" " ).GetHex (), s_0);
0 commit comments