Merge bitcoin/bitcoin#35689: test: Inline incorrect check in util_tests

cd2a4bc510 test: Redeclare variable as signed in `util_tests` (rustaceanrob)

Pull request description:

  Assigning `ToIntegral<int64_t>("-1")` to the `optional<uint64_t>` `n` is a silent underflow. `BOOST_CHECK_EQUAL` then promotes `int` to `uint64_t`, which also underflows. The correct check is to do this inline. Part of clean up in #35587

  <details>
  <summary>gdb</summary>

  ```
  (gdb) next
  886    n = ToIntegral<int64_t>("-1", 16);
  1: n = {<std::_Optional_base<unsigned long, true, true>> = {<std::_Optional_base_impl<unsigned long, std::_Optional_base<unsigned long, true, true> >> = {<No data fields>}, _M_payload = {<std::_Optional_payload_base<unsigned long>> = {_M_payload = {
            _M_empty = {<No data fields>}, _M_value = 18446744073709551615},
          _M_engaged = true}, <No data fields>}}, <std::_Enable_copy_move<true, true, true, true, std::optional<unsigned long> >> = {<No data fields>}, <No data fields>}
  2: n = {<std::_Optional_base<unsigned long, true, true>> = {<std::_Optional_base_impl<unsigned long, std::_Optional_base<unsigned long, true, true> >> = {<No data fields>}, _M_payload = {<std::_Optional_payload_base<unsigned long>> = {_M_payload = {
            _M_empty = {<No data fields>}, _M_value = 18446744073709551615},
          _M_engaged = true}, <No data fields>}}, <std::_Enable_copy_move<true, true, true, true, std::optional<unsigned long> >> = {<No data fields>}, <No data fields>}
  (gdb) next
  887    BOOST_CHECK_EQUAL(*n, -1);
  1: n = {<std::_Optional_base<unsigned long, true, true>> = {<std::_Optional_base_impl<unsigned long, std::_Optional_base<unsigned long, true, true> >> = {<No data fields>}, _M_payload = {<std::_Optional_payload_base<unsigned long>> = {_M_payload = {
            _M_empty = {<No data fields>}, _M_value = 18446744073709551615},
          _M_engaged = true}, <No data fields>}}, <std::_Enable_copy_move<true, true, true, true, std::optional<unsigned long> >> = {<No data fields>}, <No data fields>}
  2: n = {<std::_Optional_base<unsigned long, true, true>> = {<std::_Optional_base_impl<unsigned long, std::_Optional_base<unsigned long, true, true> >> = {<No data fields>}, _M_payload = {<std::_Optional_payload_base<unsigned long>> = {_M_payload = {
            _M_empty = {<No data fields>}, _M_value = 18446744073709551615},
          _M_engaged = true}, <No data fields>}}, <std::_Enable_copy_move<true, true, true, true, std::optional<unsigned long> >> = {<No data fields>}, <No data fields>}
  ```
  </details>

ACKs for top commit:
  maflcko:
    review ACK cd2a4bc510 🎬
  sedited:
    ACK cd2a4bc510

Tree-SHA512: bdcbe94c0445b5359c1ce0c25606359c11fc0024ea0ee629e0233109618101d3c0219ed415dfefefe8775331f7084313e9d8993eca119658fa27a93fb5080d8e
This commit is contained in:
merge-script
2026-07-09 14:28:57 +02:00

View File

@@ -883,8 +883,7 @@ BOOST_AUTO_TEST_CASE(test_ToIntegralHex)
BOOST_CHECK_EQUAL(*n, 0);
n = ToIntegral<uint64_t>("FfFfFfFfFfFfFfFf", 16);
BOOST_CHECK_EQUAL(*n, 0xFfFfFfFfFfFfFfFfULL);
n = ToIntegral<int64_t>("-1", 16);
BOOST_CHECK_EQUAL(*n, -1);
BOOST_CHECK_EQUAL(*ToIntegral<int64_t>("-1", 16), -1);
// Invalid values
BOOST_CHECK(!ToIntegral<uint64_t>("", 16));
BOOST_CHECK(!ToIntegral<uint64_t>("-1", 16));