Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions src/test/amount_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In "scripted-diff: Unroll && conditions in tests" 4cdcaf2

It is worth northing that this changes behaviour a bit, splitting BOOST_CHECK(a && b && c) to BOOST_CHECK(a); BOOST_CHECK(b); BOOST_CHECK(c); pinpoints which sub-condition failed.

If you don't want to change the behaviour u can unroll like the subsequent commit, or mention this in the commit body with why.

// 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<int32_t>::max()).GetFeePerK();

Expand Down
52 changes: 31 additions & 21 deletions src/test/argsman_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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() == "");
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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_CHECK(testArgs.GetArgs("-bar").size() == 1);
BOOST_CHECK(testArgs.GetArgs("-bar").front() == "");
}

BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
Expand Down Expand Up @@ -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_CHECK(test_args.GetArgs("-a").size() == 1);
BOOST_CHECK(test_args.GetArgs("-a").front() == "");
BOOST_CHECK(test_args.GetArgs("-b").size() == 1);
BOOST_CHECK(test_args.GetArgs("-b").front() == "1");
BOOST_CHECK(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_CHECK(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_CHECK(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);

Expand Down
10 changes: 8 additions & 2 deletions src/test/arith_uint256_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
3 changes: 2 additions & 1 deletion src/test/base58_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ BOOST_AUTO_TEST_CASE(base58_DecodeBase58)
std::vector<unsigned char> 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(result.size() == expected.size(), strTest);
BOOST_CHECK_MESSAGE(std::equal(result.begin(), result.end(), expected.begin()), strTest);
}

BOOST_CHECK(!DecodeBase58("invalid"s, result, 100));
Expand Down
3 changes: 2 additions & 1 deletion src/test/bip32_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
Expand Down
9 changes: 6 additions & 3 deletions src/test/btcsignals_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,18 +120,21 @@ BOOST_AUTO_TEST_CASE(return_value)
{
btcsignals::scoped_connection conn0 = sig0.connect(ReturnTrue);
ret = sig0();
BOOST_CHECK(ret && *ret == true);
BOOST_CHECK(ret);
BOOST_CHECK(*ret == true);
}
ret = sig0();
BOOST_CHECK(!ret);
{
btcsignals::scoped_connection conn1 = sig0.connect(ReturnTrue);
btcsignals::scoped_connection conn0 = sig0.connect(ReturnFalse);
ret = sig0();
BOOST_CHECK(ret && *ret == false);
BOOST_CHECK(ret);
BOOST_CHECK(*ret == false);
conn0.disconnect();
ret = sig0();
BOOST_CHECK(ret && *ret == true);
BOOST_CHECK(ret);
BOOST_CHECK(*ret == true);
}
ret = sig0();
BOOST_CHECK(!ret);
Expand Down
3 changes: 2 additions & 1 deletion src/test/checkqueue_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<int>(17 * i));
BOOST_REQUIRE(result.has_value());
BOOST_REQUIRE(*result == static_cast<int>(17 * i));
} else {
BOOST_REQUIRE(!result.has_value());
}
Expand Down
36 changes: 24 additions & 12 deletions src/test/coinscachepair_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ std::list<CoinsCachePair> 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));

Expand Down Expand Up @@ -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());
}
}

Expand Down Expand Up @@ -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));

Expand All @@ -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);
Expand All @@ -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));
Expand All @@ -148,47 +154,53 @@ 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);
BOOST_CHECK_EQUAL(sentinel.second.Prev(), &n1);

// 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);
BOOST_CHECK_EQUAL(sentinel.second.Prev(), &n2);

// 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);
BOOST_CHECK_EQUAL(n2.second.Prev(), &n1);

// 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);
BOOST_CHECK_EQUAL(n2.second.Prev(), &sentinel);

// 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);
BOOST_CHECK_EQUAL(n2.second.Prev(), &sentinel);

// 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);
Expand Down
12 changes: 8 additions & 4 deletions src/test/key_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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());

Expand Down
Loading