mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-15 12:51:00 +02: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:
commit
be768dbd18
5 changed files with 68 additions and 50 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue