mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-19 14:53:43 +01:00
Merge bitcoin/bitcoin#30618: test: support std::optional in BOOST_CHECK_* and increase FromUserHex fuzz feature coverage
1eac96a503Compare FromUserHex result against other hex validators and parsers (Lőrinc)19947863e1Use BOOST_CHECK_EQUAL for optional, arith_uint256, uint256, uint160 (Lőrinc)743ac30e34Add std::optional support to Boost's equality check (Lőrinc) Pull request description: Enhanced `FromUserHex` coverage by: * Added `std::optional` support to `BOOST_CHECK_EQUAL`, allowing direct comparisons of `std::optional<T>` with other `T` expected values. * Increased fuzz testing for hex parsing to validate against other hex validators and parsers. ---- * Use BOOST_CHECK_EQUAL for https://github.com/bitcoin/bitcoin/pull/30569#discussion_r1706637780 arith_uint256, uint256, uint160 Example error before: > unknown location:0: fatal error: in "validation_chainstatemanager_tests/chainstatemanager_args": std::bad_optional_access: bad_optional_access test/validation_chainstatemanager_tests.cpp:781: last checkpoint after: > test/validation_chainstatemanager_tests.cpp:801: error: in "validation_chainstatemanager_tests/chainstatemanager_args": check set_opts({"-assumevalid=0"}).assumed_valid_block == uint256::ZERO has failed [std::nullopt != 0000000000000000000000000000000000000000000000000000000000000000] ACKs for top commit: stickies-v: re-ACK1eac96a503ryanofsky: Code review ACK1eac96a503. Only changes since last review were auto type and fuzz test tweaks. hodlinator: ACK1eac96a503Tree-SHA512: f1d2c65f0ee4e97830700be5b330189207b11ed0c89a8cebf0f97d43308402a6b3732e10130c79a0c044f7d2eeabfb5359990825aadf02c4ec19428dcd982b00
This commit is contained in:
@@ -35,7 +35,13 @@ FUZZ_TARGET(hex)
|
||||
assert(uint256::FromUserHex(random_hex_string));
|
||||
}
|
||||
if (const auto result{uint256::FromUserHex(random_hex_string)}) {
|
||||
assert(uint256::FromHex(result->ToString()));
|
||||
const auto result_string{result->ToString()}; // ToString() returns a fixed-length string without "0x" prefix
|
||||
assert(result_string.length() == 64);
|
||||
assert(IsHex(result_string));
|
||||
assert(TryParseHex(result_string));
|
||||
assert(Txid::FromHex(result_string));
|
||||
assert(Wtxid::FromHex(result_string));
|
||||
assert(uint256::FromHex(result_string));
|
||||
}
|
||||
try {
|
||||
(void)HexToPubKey(random_hex_string);
|
||||
|
||||
Reference in New Issue
Block a user