diff --git a/src/test/amount_tests.cpp b/src/test/amount_tests.cpp index e1630b41948..0a273a21e74 100644 --- a/src/test/amount_tests.cpp +++ b/src/test/amount_tests.cpp @@ -81,11 +81,15 @@ BOOST_AUTO_TEST_CASE(GetFeeTest) // Previously, precision was limited to three decimal digits // due to only supporting satoshis per kB, so CFeeRate(CAmount(1), 1001) was equal to CFeeRate(0) // Since #32750, higher precision is maintained. - BOOST_CHECK(CFeeRate(CAmount(1), 1001) > CFeeRate(0) && CFeeRate(CAmount(1), 1001) < CFeeRate(1)); - BOOST_CHECK(CFeeRate(CAmount(2), 1001) > CFeeRate(1) && CFeeRate(CAmount(2), 1001) < CFeeRate(2)); + BOOST_CHECK(CFeeRate(CAmount(1), 1001) > CFeeRate(0)); + BOOST_CHECK(CFeeRate(CAmount(1), 1001) < CFeeRate(1)); + BOOST_CHECK(CFeeRate(CAmount(2), 1001) > CFeeRate(1)); + BOOST_CHECK(CFeeRate(CAmount(2), 1001) < CFeeRate(2)); // some more integer checks - BOOST_CHECK(CFeeRate(CAmount(26), 789) > CFeeRate(32) && CFeeRate(CAmount(26), 789) < CFeeRate(33)); - BOOST_CHECK(CFeeRate(CAmount(27), 789) > CFeeRate(34) && CFeeRate(CAmount(27), 789) < CFeeRate(35)); + BOOST_CHECK(CFeeRate(CAmount(26), 789) > CFeeRate(32)); + BOOST_CHECK(CFeeRate(CAmount(26), 789) < CFeeRate(33)); + BOOST_CHECK(CFeeRate(CAmount(27), 789) > CFeeRate(34)); + BOOST_CHECK(CFeeRate(CAmount(27), 789) < CFeeRate(35)); // Maximum size in bytes, should not crash CFeeRate(MAX_MONEY, std::numeric_limits::max()).GetFeePerK(); diff --git a/src/test/argsman_tests.cpp b/src/test/argsman_tests.cpp index da0d6840504..d6175aef98f 100644 --- a/src/test/argsman_tests.cpp +++ b/src/test/argsman_tests.cpp @@ -204,24 +204,33 @@ BOOST_AUTO_TEST_CASE(util_ParseParameters) testArgs.SetupArgs({a, b, ccc, d}); BOOST_CHECK(testArgs.ParseParameters(0, argv_test, error)); testArgs.LockSettings([&](const common::Settings& s) { - BOOST_CHECK(s.command_line_options.empty() && s.ro_config.empty()); + BOOST_CHECK(s.command_line_options.empty()); + BOOST_CHECK(s.ro_config.empty()); }); BOOST_CHECK(testArgs.ParseParameters(1, argv_test, error)); testArgs.LockSettings([&](const common::Settings& s) { - BOOST_CHECK(s.command_line_options.empty() && s.ro_config.empty()); + BOOST_CHECK(s.command_line_options.empty()); + BOOST_CHECK(s.ro_config.empty()); }); BOOST_CHECK(testArgs.ParseParameters(7, argv_test, error)); // expectation: -ignored is ignored (program name argument), // -a, -b and -ccc end up in map, -d ignored because it is after // a non-option argument (non-GNU option parsing) - BOOST_CHECK(testArgs.IsArgSet("-a") && testArgs.IsArgSet("-b") && testArgs.IsArgSet("-ccc") - && !testArgs.IsArgSet("f") && !testArgs.IsArgSet("-d")); + BOOST_CHECK(testArgs.IsArgSet("-a")); + BOOST_CHECK(testArgs.IsArgSet("-b")); + BOOST_CHECK(testArgs.IsArgSet("-ccc")); + BOOST_CHECK(!testArgs.IsArgSet("f")); + BOOST_CHECK(!testArgs.IsArgSet("-d")); testArgs.LockSettings([&](const common::Settings& s) { - BOOST_CHECK(s.command_line_options.size() == 3 && s.ro_config.empty()); - BOOST_CHECK(s.command_line_options.contains("a") && s.command_line_options.contains("b") && s.command_line_options.contains("ccc") - && !s.command_line_options.contains("f") && !s.command_line_options.contains("d")); + BOOST_CHECK(s.command_line_options.size() == 3); + BOOST_CHECK(s.ro_config.empty()); + BOOST_CHECK(s.command_line_options.contains("a")); + BOOST_CHECK(s.command_line_options.contains("b")); + BOOST_CHECK(s.command_line_options.contains("ccc")); + BOOST_CHECK(!s.command_line_options.contains("f")); + BOOST_CHECK(!s.command_line_options.contains("d")); BOOST_CHECK(s.command_line_options.at("a").size() == 1); BOOST_CHECK(s.command_line_options.at("a").front().get_str() == ""); @@ -329,7 +338,8 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArg) // Nothing else should be in the map testArgs.LockSettings([&](const common::Settings& s) { - BOOST_CHECK(s.command_line_options.size() == 6 && s.ro_config.empty()); + BOOST_CHECK(s.command_line_options.size() == 6); + BOOST_CHECK(s.ro_config.empty()); }); // The -no prefix should get stripped on the way in. @@ -397,8 +407,8 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArgEdgeCases) // Command line overrides, but doesn't erase old setting BOOST_CHECK(!testArgs.IsArgNegated("-bar")); BOOST_CHECK(testArgs.GetArg("-bar", "xxx") == ""); - BOOST_CHECK(testArgs.GetArgs("-bar").size() == 1 - && testArgs.GetArgs("-bar").front() == ""); + BOOST_REQUIRE(testArgs.GetArgs("-bar").size() == 1); + BOOST_CHECK(testArgs.GetArgs("-bar").front() == ""); } BOOST_AUTO_TEST_CASE(util_ReadConfigStream) @@ -498,22 +508,22 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream) BOOST_CHECK(test_args.GetBoolArg("-iii", def) == def); } - BOOST_CHECK(test_args.GetArgs("-a").size() == 1 - && test_args.GetArgs("-a").front() == ""); - BOOST_CHECK(test_args.GetArgs("-b").size() == 1 - && test_args.GetArgs("-b").front() == "1"); - BOOST_CHECK(test_args.GetArgs("-ccc").size() == 2 - && test_args.GetArgs("-ccc").front() == "argument" - && test_args.GetArgs("-ccc").back() == "multiple"); + BOOST_REQUIRE(test_args.GetArgs("-a").size() == 1); + BOOST_CHECK(test_args.GetArgs("-a").front() == ""); + BOOST_REQUIRE(test_args.GetArgs("-b").size() == 1); + BOOST_CHECK(test_args.GetArgs("-b").front() == "1"); + BOOST_REQUIRE(test_args.GetArgs("-ccc").size() == 2); + BOOST_CHECK(test_args.GetArgs("-ccc").front() == "argument"); + BOOST_CHECK(test_args.GetArgs("-ccc").back() == "multiple"); BOOST_CHECK(test_args.GetArgs("-fff").size() == 0); BOOST_CHECK(test_args.GetArgs("-nofff").size() == 0); - BOOST_CHECK(test_args.GetArgs("-ggg").size() == 1 - && test_args.GetArgs("-ggg").front() == "1"); + BOOST_REQUIRE(test_args.GetArgs("-ggg").size() == 1); + BOOST_CHECK(test_args.GetArgs("-ggg").front() == "1"); BOOST_CHECK(test_args.GetArgs("-noggg").size() == 0); BOOST_CHECK(test_args.GetArgs("-h").size() == 0); BOOST_CHECK(test_args.GetArgs("-noh").size() == 0); - BOOST_CHECK(test_args.GetArgs("-i").size() == 1 - && test_args.GetArgs("-i").front() == "1"); + BOOST_REQUIRE(test_args.GetArgs("-i").size() == 1); + BOOST_CHECK(test_args.GetArgs("-i").front() == "1"); BOOST_CHECK(test_args.GetArgs("-noi").size() == 0); BOOST_CHECK(test_args.GetArgs("-zzz").size() == 0); diff --git a/src/test/arith_uint256_tests.cpp b/src/test/arith_uint256_tests.cpp index 016b4658719..89e38b85c5e 100644 --- a/src/test/arith_uint256_tests.cpp +++ b/src/test/arith_uint256_tests.cpp @@ -267,8 +267,14 @@ BOOST_AUTO_TEST_CASE( comparison ) // <= >= < > arith_uint256 TmpL; for (unsigned int i = 0; i < 256; ++i) { TmpL= OneL<< i; - BOOST_CHECK( TmpL >= ZeroL && TmpL > ZeroL && ZeroL < TmpL && ZeroL <= TmpL); - BOOST_CHECK( TmpL >= 0 && TmpL > 0 && 0 < TmpL && 0 <= TmpL); + BOOST_CHECK(TmpL >= ZeroL); + BOOST_CHECK(TmpL > ZeroL); + BOOST_CHECK(ZeroL < TmpL); + BOOST_CHECK(ZeroL <= TmpL); + BOOST_CHECK(TmpL >= 0); + BOOST_CHECK(TmpL > 0); + BOOST_CHECK(0 < TmpL); + BOOST_CHECK(0 <= TmpL); TmpL |= R1L; BOOST_CHECK( TmpL >= R1L ); BOOST_CHECK( (TmpL == R1L) != (TmpL > R1L)); BOOST_CHECK( (TmpL == R1L) || !( TmpL <= R1L)); BOOST_CHECK( R1L <= TmpL ); BOOST_CHECK( (R1L == TmpL) != (R1L < TmpL)); BOOST_CHECK( (TmpL == R1L) || !( R1L >= TmpL)); diff --git a/src/test/base58_tests.cpp b/src/test/base58_tests.cpp index 35b8ea46442..411d71fbe6a 100644 --- a/src/test/base58_tests.cpp +++ b/src/test/base58_tests.cpp @@ -58,7 +58,7 @@ BOOST_AUTO_TEST_CASE(base58_DecodeBase58) std::vector expected = ParseHex(test[0].get_str()); std::string base58string = test[1].get_str(); BOOST_CHECK_MESSAGE(DecodeBase58(base58string, result, 256), strTest); - BOOST_CHECK_MESSAGE(result.size() == expected.size() && std::equal(result.begin(), result.end(), expected.begin()), strTest); + BOOST_CHECK_MESSAGE(std::ranges::equal(result ,expected), strTest); } BOOST_CHECK(!DecodeBase58("invalid"s, result, 100)); diff --git a/src/test/bip32_tests.cpp b/src/test/bip32_tests.cpp index 1df368ade74..11a2dd9cc75 100644 --- a/src/test/bip32_tests.cpp +++ b/src/test/bip32_tests.cpp @@ -197,7 +197,8 @@ BOOST_AUTO_TEST_CASE(bip32_max_depth) { } // But trying to derive a non-existent 256th depth will fail! - BOOST_CHECK(key_parent.nDepth == 255 && pubkey_parent.nDepth == 255); + BOOST_CHECK(key_parent.nDepth == 255); + BOOST_CHECK(pubkey_parent.nDepth == 255); BOOST_CHECK(!key_parent.Derive(key_child, 0)); BOOST_CHECK(!pubkey_parent.Derive(pubkey_child, 0)); } diff --git a/src/test/checkqueue_tests.cpp b/src/test/checkqueue_tests.cpp index 3e2fc83ff28..a980702c4bb 100644 --- a/src/test/checkqueue_tests.cpp +++ b/src/test/checkqueue_tests.cpp @@ -233,7 +233,8 @@ BOOST_AUTO_TEST_CASE(test_CheckQueue_Catches_Failure) } auto result = control.Complete(); if (i > 0) { - BOOST_REQUIRE(result.has_value() && *result == static_cast(17 * i)); + BOOST_REQUIRE(result.has_value()); + BOOST_REQUIRE(*result == static_cast(17 * i)); } else { BOOST_REQUIRE(!result.has_value()); } diff --git a/src/test/coinscachepair_tests.cpp b/src/test/coinscachepair_tests.cpp index 0c208e93dfb..57bc27bec54 100644 --- a/src/test/coinscachepair_tests.cpp +++ b/src/test/coinscachepair_tests.cpp @@ -21,7 +21,8 @@ std::list CreatePairs(CoinsCachePair& sentinel) auto node{std::prev(nodes.end())}; CCoinsCacheEntry::SetDirty(*node, sentinel); - BOOST_CHECK(node->second.IsDirty() && !node->second.IsFresh()); + BOOST_CHECK(node->second.IsDirty()); + BOOST_CHECK(!node->second.IsFresh()); BOOST_CHECK_EQUAL(node->second.Next(), &sentinel); BOOST_CHECK_EQUAL(sentinel.second.Prev(), &(*node)); @@ -63,7 +64,8 @@ BOOST_AUTO_TEST_CASE(linked_list_iteration) // Delete the nodes from the list to make sure there are no dangling pointers for (auto it{nodes.begin()}; it != nodes.end(); it = nodes.erase(it)) { - BOOST_CHECK(!it->second.IsDirty() && !it->second.IsFresh()); + BOOST_CHECK(!it->second.IsDirty()); + BOOST_CHECK(!it->second.IsFresh()); } } @@ -105,9 +107,11 @@ BOOST_AUTO_TEST_CASE(linked_list_random_deletion) nodes.erase(n2); // Check that n1 now points to n3, and n3 still points to n4 // Also check that state was not altered - BOOST_CHECK(n1->second.IsDirty() && !n1->second.IsFresh()); + BOOST_CHECK(n1->second.IsDirty()); + BOOST_CHECK(!n1->second.IsFresh()); BOOST_CHECK_EQUAL(n1->second.Next(), &(*n3)); - BOOST_CHECK(n3->second.IsDirty() && !n3->second.IsFresh()); + BOOST_CHECK(n3->second.IsDirty()); + BOOST_CHECK(!n3->second.IsFresh()); BOOST_CHECK_EQUAL(n3->second.Next(), &(*n4)); BOOST_CHECK_EQUAL(n3->second.Prev(), &(*n1)); @@ -116,7 +120,8 @@ BOOST_AUTO_TEST_CASE(linked_list_random_deletion) nodes.erase(n1); // Check that sentinel now points to n3, and n3 still points to n4 // Also check that state was not altered - BOOST_CHECK(n3->second.IsDirty() && !n3->second.IsFresh()); + BOOST_CHECK(n3->second.IsDirty()); + BOOST_CHECK(!n3->second.IsFresh()); BOOST_CHECK_EQUAL(sentinel.second.Next(), &(*n3)); BOOST_CHECK_EQUAL(n3->second.Next(), &(*n4)); BOOST_CHECK_EQUAL(n3->second.Prev(), &sentinel); @@ -126,7 +131,8 @@ BOOST_AUTO_TEST_CASE(linked_list_random_deletion) nodes.erase(n4); // Check that sentinel still points to n3, and n3 points to sentinel // Also check that state was not altered - BOOST_CHECK(n3->second.IsDirty() && !n3->second.IsFresh()); + BOOST_CHECK(n3->second.IsDirty()); + BOOST_CHECK(!n3->second.IsFresh()); BOOST_CHECK_EQUAL(sentinel.second.Next(), &(*n3)); BOOST_CHECK_EQUAL(n3->second.Next(), &sentinel); BOOST_CHECK_EQUAL(sentinel.second.Prev(), &(*n3)); @@ -148,7 +154,8 @@ BOOST_AUTO_TEST_CASE(linked_list_set_state) // Check that setting DIRTY inserts it into linked list and sets state CCoinsCacheEntry::SetDirty(n1, sentinel); - BOOST_CHECK(n1.second.IsDirty() && !n1.second.IsFresh()); + BOOST_CHECK(n1.second.IsDirty()); + BOOST_CHECK(!n1.second.IsFresh()); BOOST_CHECK_EQUAL(n1.second.Next(), &sentinel); BOOST_CHECK_EQUAL(n1.second.Prev(), &sentinel); BOOST_CHECK_EQUAL(sentinel.second.Next(), &n1); @@ -156,7 +163,8 @@ BOOST_AUTO_TEST_CASE(linked_list_set_state) // Check that setting FRESH on new node inserts it after n1 CCoinsCacheEntry::SetFresh(n2, sentinel); - BOOST_CHECK(n2.second.IsFresh() && !n2.second.IsDirty()); + BOOST_CHECK(n2.second.IsFresh()); + BOOST_CHECK(!n2.second.IsDirty()); BOOST_CHECK_EQUAL(n2.second.Next(), &sentinel); BOOST_CHECK_EQUAL(n2.second.Prev(), &n1); BOOST_CHECK_EQUAL(n1.second.Next(), &n2); @@ -164,7 +172,8 @@ BOOST_AUTO_TEST_CASE(linked_list_set_state) // Check that we can set extra state, but they don't change our position CCoinsCacheEntry::SetFresh(n1, sentinel); - BOOST_CHECK(n1.second.IsDirty() && n1.second.IsFresh()); + BOOST_CHECK(n1.second.IsDirty()); + BOOST_CHECK(n1.second.IsFresh()); BOOST_CHECK_EQUAL(n1.second.Next(), &n2); BOOST_CHECK_EQUAL(n1.second.Prev(), &sentinel); BOOST_CHECK_EQUAL(sentinel.second.Next(), &n1); @@ -172,7 +181,8 @@ BOOST_AUTO_TEST_CASE(linked_list_set_state) // Check that we can clear state then re-set it n1.second.SetClean(); - BOOST_CHECK(!n1.second.IsDirty() && !n1.second.IsFresh()); + BOOST_CHECK(!n1.second.IsDirty()); + BOOST_CHECK(!n1.second.IsFresh()); BOOST_CHECK_EQUAL(sentinel.second.Next(), &n2); BOOST_CHECK_EQUAL(sentinel.second.Prev(), &n2); BOOST_CHECK_EQUAL(n2.second.Next(), &sentinel); @@ -180,7 +190,8 @@ BOOST_AUTO_TEST_CASE(linked_list_set_state) // Calling `SetClean` a second time has no effect n1.second.SetClean(); - BOOST_CHECK(!n1.second.IsDirty() && !n1.second.IsFresh()); + BOOST_CHECK(!n1.second.IsDirty()); + BOOST_CHECK(!n1.second.IsFresh()); BOOST_CHECK_EQUAL(sentinel.second.Next(), &n2); BOOST_CHECK_EQUAL(sentinel.second.Prev(), &n2); BOOST_CHECK_EQUAL(n2.second.Next(), &sentinel); @@ -188,7 +199,8 @@ BOOST_AUTO_TEST_CASE(linked_list_set_state) // Adding DIRTY re-inserts it after n2 CCoinsCacheEntry::SetDirty(n1, sentinel); - BOOST_CHECK(n1.second.IsDirty() && !n1.second.IsFresh()); + BOOST_CHECK(n1.second.IsDirty()); + BOOST_CHECK(!n1.second.IsFresh()); BOOST_CHECK_EQUAL(n2.second.Next(), &n1); BOOST_CHECK_EQUAL(n1.second.Prev(), &n2); BOOST_CHECK_EQUAL(n1.second.Next(), &sentinel); diff --git a/src/test/key_tests.cpp b/src/test/key_tests.cpp index b0c052af0f7..75173e4b2e0 100644 --- a/src/test/key_tests.cpp +++ b/src/test/key_tests.cpp @@ -41,13 +41,17 @@ BOOST_FIXTURE_TEST_SUITE(key_tests, BasicTestingSetup) BOOST_AUTO_TEST_CASE(key_test1) { CKey key1 = DecodeSecret(strSecret1); - BOOST_CHECK(key1.IsValid() && !key1.IsCompressed()); + BOOST_CHECK(key1.IsValid()); + BOOST_CHECK(!key1.IsCompressed()); CKey key2 = DecodeSecret(strSecret2); - BOOST_CHECK(key2.IsValid() && !key2.IsCompressed()); + BOOST_CHECK(key2.IsValid()); + BOOST_CHECK(!key2.IsCompressed()); CKey key1C = DecodeSecret(strSecret1C); - BOOST_CHECK(key1C.IsValid() && key1C.IsCompressed()); + BOOST_CHECK(key1C.IsValid()); + BOOST_CHECK(key1C.IsCompressed()); CKey key2C = DecodeSecret(strSecret2C); - BOOST_CHECK(key2C.IsValid() && key2C.IsCompressed()); + BOOST_CHECK(key2C.IsValid()); + BOOST_CHECK(key2C.IsCompressed()); CKey bad_key = DecodeSecret(strAddressBad); BOOST_CHECK(!bad_key.IsValid()); diff --git a/src/test/miniscript_tests.cpp b/src/test/miniscript_tests.cpp index 6dac2aa907f..d593fc3bf81 100644 --- a/src/test/miniscript_tests.cpp +++ b/src/test/miniscript_tests.cpp @@ -636,13 +636,15 @@ BOOST_AUTO_TEST_CASE(fixed_tests) ms_stack_limit += "pk(" + HexStr(g_testdata->pubkeys[0]) + ")"; ms_stack_limit.insert(ms_stack_limit.end(), count, ')'); const auto ms_stack_ok{miniscript::FromString(ms_stack_limit, tap_converter)}; - BOOST_CHECK(ms_stack_ok && ms_stack_ok->CheckStackSize()); + BOOST_REQUIRE(ms_stack_ok); + BOOST_CHECK(ms_stack_ok->CheckStackSize()); Test(ms_stack_limit, "?", "?", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_P2WSH_INVALID, 4 * count + 1, 1, {}, {}, 1 + count + 1); // But one more element on the stack during execution will make it fail. And we'd detect that. count++; ms_stack_limit = "and_b(older(1),a:" + ms_stack_limit + ")"; const auto ms_stack_nok{miniscript::FromString(ms_stack_limit, tap_converter)}; - BOOST_CHECK(ms_stack_nok && !ms_stack_nok->CheckStackSize()); + BOOST_REQUIRE(ms_stack_nok); + BOOST_CHECK(!ms_stack_nok->CheckStackSize()); Test(ms_stack_limit, "?", "?", TESTMODE_VALID | TESTMODE_NONMAL | TESTMODE_NEEDSIG | TESTMODE_P2WSH_INVALID, 4 * count + 1, 1, {}, {}, 1 + count + 1); // Misc unit tests @@ -677,32 +679,45 @@ BOOST_AUTO_TEST_CASE(fixed_tests) // (for now) have 'd:' be 'u'. This tests we can't use a 'd:' wrapper for a thresh, which requires // its subs to all be 'u' (taken from https://github.com/rust-bitcoin/rust-miniscript/discussions/341). const auto ms_minimalif = miniscript::FromString("thresh(3,c:pk_k(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65),sc:pk_k(03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556),sc:pk_k(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798),sdv:older(32))", wsh_converter); - BOOST_CHECK(ms_minimalif && !ms_minimalif->IsValid()); + BOOST_REQUIRE(ms_minimalif); + BOOST_CHECK(!ms_minimalif->IsValid()); // A Miniscript with duplicate keys is not sane const auto ms_dup1 = miniscript::FromString("and_v(v:pk(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65),pk(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65))", wsh_converter); - BOOST_CHECK(ms_dup1); - BOOST_CHECK(!ms_dup1->IsSane() && !ms_dup1->CheckDuplicateKey()); + BOOST_REQUIRE(ms_dup1); + BOOST_CHECK(!ms_dup1->IsSane()); + BOOST_CHECK(!ms_dup1->CheckDuplicateKey()); // Same with a disjunction, and different key nodes (pk and pkh) const auto ms_dup2 = miniscript::FromString("or_b(c:pk_k(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65),ac:pk_h(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65))", wsh_converter); - BOOST_CHECK(ms_dup2 && !ms_dup2->IsSane() && !ms_dup2->CheckDuplicateKey()); + BOOST_REQUIRE(ms_dup2); + BOOST_CHECK(!ms_dup2->IsSane()); + BOOST_CHECK(!ms_dup2->CheckDuplicateKey()); // Same when the duplicates are leaves or a larger tree const auto ms_dup3 = miniscript::FromString("or_i(and_b(pk(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65),s:pk(03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556)),and_b(older(1),s:pk(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65)))", wsh_converter); - BOOST_CHECK(ms_dup3 && !ms_dup3->IsSane() && !ms_dup3->CheckDuplicateKey()); + BOOST_REQUIRE(ms_dup3); + BOOST_CHECK(!ms_dup3->IsSane()); + BOOST_CHECK(!ms_dup3->CheckDuplicateKey()); // Same when the duplicates are on different levels in the tree const auto ms_dup4 = miniscript::FromString("thresh(2,pkh(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65),s:pk(03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556),a:and_b(dv:older(1),s:pk(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65)))", wsh_converter); - BOOST_CHECK(ms_dup4 && !ms_dup4->IsSane() && !ms_dup4->CheckDuplicateKey()); + BOOST_REQUIRE(ms_dup4); + BOOST_CHECK(!ms_dup4->IsSane()); + BOOST_CHECK(!ms_dup4->CheckDuplicateKey()); // Sanity check the opposite is true, too. An otherwise sane Miniscript with no duplicate keys is sane. const auto ms_nondup = miniscript::FromString("pk(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65)", wsh_converter); - BOOST_CHECK(ms_nondup && ms_nondup->CheckDuplicateKey() && ms_nondup->IsSane()); + BOOST_REQUIRE(ms_nondup); + BOOST_CHECK(ms_nondup->CheckDuplicateKey()); + BOOST_CHECK(ms_nondup->IsSane()); // Test we find the first insane sub closer to be a leaf node. This fragment is insane for two reasons: // 1. It can be spent without a signature // 2. It contains timelock mixes // We'll report the timelock mix error, as it's "deeper" (closer to be a leaf node) than the "no 's' property" // error is. const auto ms_ins = miniscript::FromString("or_i(and_b(after(1),a:after(1000000000)),pk(03cdabb7f2dce7bfbd8a0b9570c6fd1e712e5d64045e9d6b517b3d5072251dc204))", wsh_converter); - BOOST_CHECK(ms_ins && ms_ins->IsValid() && !ms_ins->IsSane()); + BOOST_REQUIRE(ms_ins); + BOOST_CHECK(ms_ins->IsValid()); + BOOST_CHECK(!ms_ins->IsSane()); const auto insane_sub = ms_ins->FindInsaneSub(); - BOOST_CHECK(insane_sub && *insane_sub->ToString(wsh_converter) == "and_b(after(1),a:after(1000000000))"); + BOOST_REQUIRE(insane_sub); + BOOST_CHECK(*insane_sub->ToString(wsh_converter) == "and_b(after(1),a:after(1000000000))"); // Numbers can't be prefixed by a sign. BOOST_CHECK(!miniscript::FromString("after(-1)", wsh_converter)); diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp index 872cc0a02ef..407fbbd514a 100644 --- a/src/test/net_tests.cpp +++ b/src/test/net_tests.cpp @@ -1383,14 +1383,16 @@ BOOST_AUTO_TEST_CASE(v2transport_test) for (int i = 0; i < 10; ++i) { V2TransportTester tester(m_rng, true); auto ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.SendKey(); tester.SendGarbage(); tester.ReceiveKey(); tester.SendGarbageTerm(); tester.SendVersion(); ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.ReceiveGarbage(); tester.ReceiveVersion(); tester.CompareSessionIDs(); @@ -1400,10 +1402,15 @@ BOOST_AUTO_TEST_CASE(v2transport_test) tester.SendMessage(0, {}); // Invalidly encoded message tester.SendMessage("tx", msg_data_2); // 12-character encoded message type ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->size() == 3); - BOOST_CHECK((*ret)[0] && (*ret)[0]->m_type == "cmpctblock" && std::ranges::equal((*ret)[0]->m_recv, MakeByteSpan(msg_data_1))); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->size() == 3); + BOOST_REQUIRE((*ret)[0]); + BOOST_CHECK((*ret)[0]->m_type == "cmpctblock"); + BOOST_CHECK(std::ranges::equal((*ret)[0]->m_recv, MakeByteSpan(msg_data_1))); BOOST_CHECK(!(*ret)[1]); - BOOST_CHECK((*ret)[2] && (*ret)[2]->m_type == "tx" && std::ranges::equal((*ret)[2]->m_recv, MakeByteSpan(msg_data_2))); + BOOST_REQUIRE((*ret)[2]); + BOOST_CHECK((*ret)[2]->m_type == "tx"); + BOOST_CHECK(std::ranges::equal((*ret)[2]->m_recv, MakeByteSpan(msg_data_2))); // Then send a message with a bit error, expecting failure. It's possible this failure does // not occur immediately (when the length descriptor was modified), but it should come @@ -1426,12 +1433,14 @@ BOOST_AUTO_TEST_CASE(v2transport_test) tester.SendKey(); tester.SendGarbage(); auto ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.ReceiveKey(); tester.SendGarbageTerm(); tester.SendVersion(); ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.ReceiveGarbage(); tester.ReceiveVersion(); tester.CompareSessionIDs(); @@ -1440,9 +1449,14 @@ BOOST_AUTO_TEST_CASE(v2transport_test) tester.SendMessage(uint8_t(14), msg_data_1); // inv short id tester.SendMessage(uint8_t(19), msg_data_2); // pong short id ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->size() == 2); - BOOST_CHECK((*ret)[0] && (*ret)[0]->m_type == "inv" && std::ranges::equal((*ret)[0]->m_recv, MakeByteSpan(msg_data_1))); - BOOST_CHECK((*ret)[1] && (*ret)[1]->m_type == "pong" && std::ranges::equal((*ret)[1]->m_recv, MakeByteSpan(msg_data_2))); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->size() == 2); + BOOST_REQUIRE((*ret)[0]); + BOOST_CHECK((*ret)[0]->m_type == "inv"); + BOOST_CHECK(std::ranges::equal((*ret)[0]->m_recv, MakeByteSpan(msg_data_1))); + BOOST_REQUIRE((*ret)[1]); + BOOST_CHECK((*ret)[1]->m_type == "pong"); + BOOST_CHECK(std::ranges::equal((*ret)[1]->m_recv, MakeByteSpan(msg_data_2))); // Then send a too-large message. auto msg_data_3 = m_rng.randbytes(4005000); @@ -1471,7 +1485,8 @@ BOOST_AUTO_TEST_CASE(v2transport_test) tester.SendGarbage(garb_len); } auto ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); if (!send_immediately) { tester.SendKey(); tester.SendGarbage(garb_len); @@ -1485,7 +1500,8 @@ BOOST_AUTO_TEST_CASE(v2transport_test) } tester.SendVersion(ver_data, false); ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.ReceiveGarbage(); tester.ReceiveVersion(); tester.CompareSessionIDs(); @@ -1506,11 +1522,18 @@ BOOST_AUTO_TEST_CASE(v2transport_test) tester.SendMessage("foobar", {}); // test receiving unknown message type tester.AddMessage("barfoo", {}); // test sending unknown message type ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->size() == 4); - BOOST_CHECK((*ret)[0] && (*ret)[0]->m_type == "addrv2" && std::ranges::equal((*ret)[0]->m_recv, MakeByteSpan(msg_data_1))); - BOOST_CHECK((*ret)[1] && (*ret)[1]->m_type == "headers" && std::ranges::equal((*ret)[1]->m_recv, MakeByteSpan(msg_data_2))); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->size() == 4); + BOOST_REQUIRE((*ret)[0]); + BOOST_CHECK((*ret)[0]->m_type == "addrv2"); + BOOST_CHECK(std::ranges::equal((*ret)[0]->m_recv, MakeByteSpan(msg_data_1))); + BOOST_REQUIRE((*ret)[1]); + BOOST_CHECK((*ret)[1]->m_type == "headers"); + BOOST_CHECK(std::ranges::equal((*ret)[1]->m_recv, MakeByteSpan(msg_data_2))); BOOST_CHECK(!(*ret)[2]); - BOOST_CHECK((*ret)[3] && (*ret)[3]->m_type == "foobar" && (*ret)[3]->m_recv.empty()); + BOOST_REQUIRE((*ret)[3]); + BOOST_CHECK((*ret)[3]->m_type == "foobar"); + BOOST_CHECK((*ret)[3]->m_recv.empty()); tester.ReceiveMessage("barfoo", {}); } @@ -1518,7 +1541,8 @@ BOOST_AUTO_TEST_CASE(v2transport_test) { V2TransportTester tester(m_rng, true); auto ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.SendKey(); tester.SendGarbage(V2Transport::MAX_GARBAGE_LEN + 1); tester.ReceiveKey(); @@ -1533,7 +1557,8 @@ BOOST_AUTO_TEST_CASE(v2transport_test) tester.SendKey(); tester.SendGarbage(V2Transport::MAX_GARBAGE_LEN + 1); auto ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.ReceiveKey(); tester.SendGarbageTerm(); ret = tester.Interact(); @@ -1544,7 +1569,8 @@ BOOST_AUTO_TEST_CASE(v2transport_test) { V2TransportTester tester(m_rng, true); auto ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.SendKey(); tester.ReceiveKey(); /** The number of random garbage bytes before the included first 15 bytes of terminator. */ @@ -1563,7 +1589,8 @@ BOOST_AUTO_TEST_CASE(v2transport_test) tester.SendGarbageTerm(); tester.SendVersion(); ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->empty()); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->empty()); tester.ReceiveGarbage(); tester.ReceiveVersion(); tester.CompareSessionIDs(); @@ -1573,9 +1600,12 @@ BOOST_AUTO_TEST_CASE(v2transport_test) tester.SendMessage(uint8_t(2), msg_data_1); // "block" short id tester.AddMessage("blocktxn", msg_data_2); // schedule blocktxn to be sent to us ret = tester.Interact(); - BOOST_REQUIRE(ret && ret->size() == 2); + BOOST_REQUIRE(ret); + BOOST_REQUIRE(ret->size() == 2); BOOST_CHECK(!(*ret)[0]); - BOOST_CHECK((*ret)[1] && (*ret)[1]->m_type == "block" && std::ranges::equal((*ret)[1]->m_recv, MakeByteSpan(msg_data_1))); + BOOST_REQUIRE((*ret)[1]); + BOOST_CHECK((*ret)[1]->m_type == "block"); + BOOST_CHECK(std::ranges::equal((*ret)[1]->m_recv, MakeByteSpan(msg_data_1))); tester.ReceiveMessage(uint8_t(3), msg_data_2); // "blocktxn" short id } diff --git a/src/test/pcp_tests.cpp b/src/test/pcp_tests.cpp index bb108af363c..e70b4b14752 100644 --- a/src/test/pcp_tests.cpp +++ b/src/test/pcp_tests.cpp @@ -49,7 +49,10 @@ public: const std::optional local_ipv6{Lookup("2a10:1234:5678:9abc:def0:1234:5678:9abc", 1, false)}; const std::optional gateway_ipv4{Lookup("192.168.0.1", 1, false)}; const std::optional gateway_ipv6{Lookup("2a10:1234:5678:9abc:def0:0000:0000:0000", 1, false)}; - BOOST_REQUIRE(local_ipv4 && local_ipv6 && gateway_ipv4 && gateway_ipv6); + BOOST_REQUIRE(local_ipv4); + BOOST_REQUIRE(local_ipv6); + BOOST_REQUIRE(gateway_ipv4); + BOOST_REQUIRE(gateway_ipv6); default_local_ipv4 = *local_ipv4; default_local_ipv6 = *local_ipv6; default_gateway_ipv4 = *gateway_ipv4; diff --git a/src/test/pow_tests.cpp b/src/test/pow_tests.cpp index f6123401ad0..e75d1e345a4 100644 --- a/src/test/pow_tests.cpp +++ b/src/test/pow_tests.cpp @@ -172,7 +172,8 @@ void sanity_check_chainparams(const ArgsManager& args, ChainType chain_type) arith_uint256 pow_compact; bool neg, over; pow_compact.SetCompact(chainParams->GenesisBlock().nBits, &neg, &over); - BOOST_CHECK(!neg && pow_compact != 0); + BOOST_CHECK(!neg); + BOOST_CHECK(pow_compact != 0); BOOST_CHECK(!over); BOOST_CHECK(UintToArith256(consensus.powLimit) >= pow_compact); diff --git a/src/test/scheduler_tests.cpp b/src/test/scheduler_tests.cpp index c106eca69ca..aa957620749 100644 --- a/src/test/scheduler_tests.cpp +++ b/src/test/scheduler_tests.cpp @@ -209,7 +209,8 @@ BOOST_AUTO_TEST_CASE(mockforward) auto now = std::chrono::steady_clock::now(); int delta = std::chrono::duration_cast(first - now).count(); // should be between 2 & 3 minutes from now - BOOST_CHECK(delta > 2*60 && delta < 3*60); + BOOST_CHECK(delta > 2*60); + BOOST_CHECK(delta < 3*60); } BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/script_standard_tests.cpp b/src/test/script_standard_tests.cpp index a1e0c46a0fe..21743df5cdd 100644 --- a/src/test/script_standard_tests.cpp +++ b/src/test/script_standard_tests.cpp @@ -439,15 +439,20 @@ BOOST_AUTO_TEST_CASE(script_standard_taproot_builder) constexpr uint256 hash_3{"31fe7061656bea2a36aa60a2f7ef940578049273746935d296426dc0afd86b68"}; TaprootBuilder builder; - BOOST_CHECK(builder.IsValid() && builder.IsComplete()); + BOOST_CHECK(builder.IsValid()); + BOOST_CHECK(builder.IsComplete()); builder.Add(2, script_2, 0xc0); - BOOST_CHECK(builder.IsValid() && !builder.IsComplete()); + BOOST_CHECK(builder.IsValid()); + BOOST_CHECK(!builder.IsComplete()); builder.AddOmitted(2, hash_3); - BOOST_CHECK(builder.IsValid() && !builder.IsComplete()); + BOOST_CHECK(builder.IsValid()); + BOOST_CHECK(!builder.IsComplete()); builder.Add(1, script_1, 0xc0); - BOOST_CHECK(builder.IsValid() && builder.IsComplete()); + BOOST_CHECK(builder.IsValid()); + BOOST_CHECK(builder.IsComplete()); builder.Finalize(key_inner); - BOOST_CHECK(builder.IsValid() && builder.IsComplete()); + BOOST_CHECK(builder.IsValid()); + BOOST_CHECK(builder.IsComplete()); BOOST_CHECK_EQUAL(EncodeDestination(builder.GetOutput()), "bc1pj6gaw944fy0xpmzzu45ugqde4rz7mqj5kj0tg8kmr5f0pjq8vnaqgynnge"); } diff --git a/src/test/skiplist_tests.cpp b/src/test/skiplist_tests.cpp index 4fc08b0cadc..e7cf3b622fe 100644 --- a/src/test/skiplist_tests.cpp +++ b/src/test/skiplist_tests.cpp @@ -184,10 +184,12 @@ BOOST_AUTO_TEST_CASE(findearliestatleast_edge_test) BOOST_CHECK(!chain.FindEarliestAtLeast(0, 9)); CBlockIndex* ret1 = chain.FindEarliestAtLeast(100, 2); - BOOST_CHECK(ret1->nTimeMax >= 100 && ret1->nHeight == 2); + BOOST_CHECK(ret1->nTimeMax >= 100); + BOOST_CHECK(ret1->nHeight == 2); BOOST_CHECK(!chain.FindEarliestAtLeast(300, 9)); CBlockIndex* ret2 = chain.FindEarliestAtLeast(200, 4); - BOOST_CHECK(ret2->nTimeMax >= 200 && ret2->nHeight == 4); + BOOST_CHECK(ret2->nTimeMax >= 200); + BOOST_CHECK(ret2->nHeight == 4); } BOOST_AUTO_TEST_CASE(build_skip_height_test) diff --git a/src/test/transaction_tests.cpp b/src/test/transaction_tests.cpp index a5b123ed465..cd81c3445db 100644 --- a/src/test/transaction_tests.cpp +++ b/src/test/transaction_tests.cpp @@ -382,7 +382,8 @@ BOOST_AUTO_TEST_CASE(basic_transaction_tests) CMutableTransaction tx; SpanReader{vch} >> TX_WITH_WITNESS(tx); TxValidationState state; - BOOST_CHECK_MESSAGE(CheckTransaction(CTransaction(tx), state) && state.IsValid(), "Simple deserialized transaction should be valid."); + BOOST_CHECK_MESSAGE(CheckTransaction(CTransaction(tx), state), "Simple deserialized transaction should be valid."); + BOOST_CHECK_MESSAGE(state.IsValid(), "Simple deserialized transaction should be valid."); // Check that duplicate txins fail tx.vin.push_back(tx.vin[0]); diff --git a/src/test/txpackage_tests.cpp b/src/test/txpackage_tests.cpp index 06c5816b72d..781d242f238 100644 --- a/src/test/txpackage_tests.cpp +++ b/src/test/txpackage_tests.cpp @@ -1161,7 +1161,8 @@ BOOST_AUTO_TEST_CASE(package_rbf_tests) child_key, child_spk, coinbase_value - 199 - 1300, /*submit=*/false)); // In all packages, the parents conflict with each other - BOOST_CHECK(tx_parent_1->GetHash() != tx_parent_2->GetHash() && tx_parent_2->GetHash() != tx_parent_3->GetHash()); + BOOST_CHECK(tx_parent_1->GetHash() != tx_parent_2->GetHash()); + BOOST_CHECK(tx_parent_2->GetHash() != tx_parent_3->GetHash()); // 1 parent paying 200sat, 1 child paying 200sat. Package package1{tx_parent_1, tx_child_1}; diff --git a/src/test/versionbits_tests.cpp b/src/test/versionbits_tests.cpp index 77384c5f2f1..2cf116008c1 100644 --- a/src/test/versionbits_tests.cpp +++ b/src/test/versionbits_tests.cpp @@ -295,7 +295,8 @@ void check_computeblockversion(VersionBitsCache& versionbitscache, const Consens BOOST_REQUIRE(nStartTime < nTimeout); BOOST_REQUIRE(nStartTime >= 0); BOOST_REQUIRE(nTimeout <= std::numeric_limits::max() || nTimeout == Consensus::BIP9Deployment::NO_TIMEOUT); - BOOST_REQUIRE(0 <= bit && bit < 32); + BOOST_REQUIRE(0 <= bit); + BOOST_REQUIRE(bit < 32); // Make sure that no deployment tries to set an invalid bit. BOOST_REQUIRE(((1 << bit) & VERSIONBITS_TOP_MASK) == 0); BOOST_REQUIRE(min_activation_height >= 0); @@ -459,7 +460,8 @@ BOOST_FIXTURE_TEST_CASE(versionbits_computeblockversion, BlockVersionTest) const uint32_t dep_mask{uint32_t{1} << dep_info.bit}; BOOST_CHECK(!(chain_all_vbits & dep_mask)); chain_all_vbits |= dep_mask; - BOOST_CHECK(0 <= dep_info.bit && dep_info.bit < VERSIONBITS_MAX_NUM_BITS); + BOOST_CHECK(0 <= dep_info.bit); + BOOST_CHECK(dep_info.bit < VERSIONBITS_MAX_NUM_BITS); if (chain_type != ChainType::REGTEST) { if (dep == Consensus::DEPLOYMENT_TESTDUMMY) { BOOST_CHECK_EQUAL(dep_info.nStartTime, Consensus::BIP9Deployment::NEVER_ACTIVE); diff --git a/src/wallet/test/wallet_tests.cpp b/src/wallet/test/wallet_tests.cpp index 49824c809c3..8883b8cee40 100644 --- a/src/wallet/test/wallet_tests.cpp +++ b/src/wallet/test/wallet_tests.cpp @@ -137,7 +137,8 @@ BOOST_FIXTURE_TEST_CASE(scan_for_wallet_transactions, TestChain100Setup) { CBlockLocator locator; BOOST_CHECK(WalletBatch{wallet.GetDatabase()}.ReadBestBlock(locator)); - BOOST_CHECK(!locator.IsNull() && locator.vHave.front() == newTip->GetBlockHash()); + BOOST_REQUIRE(!locator.IsNull()); + BOOST_CHECK(locator.vHave.front() == newTip->GetBlockHash()); } CWallet::ScanResult result = wallet.ScanForWalletTransactions(/*start_block=*/oldTip->GetBlockHash(), /*start_height=*/oldTip->nHeight, /*max_height=*/{}, reserver, /*save_progress=*/true); @@ -150,7 +151,8 @@ BOOST_FIXTURE_TEST_CASE(scan_for_wallet_transactions, TestChain100Setup) { CBlockLocator locator; BOOST_CHECK(WalletBatch{wallet.GetDatabase()}.ReadBestBlock(locator)); - BOOST_CHECK(!locator.IsNull() && locator.vHave.front() == newTip->GetBlockHash()); + BOOST_REQUIRE(!locator.IsNull()); + BOOST_CHECK(locator.vHave.front() == newTip->GetBlockHash()); } }