Skip to content

Commit b3162d1

Browse files
committed
Merge bitcoin/bitcoin#31656: test: Add expected result assertions
a015b7e test: Add expected result assertions (yancy) Pull request description: ~This is a trivial addition to the test suit, however it shouldn't be required to add debug statements and manually run the tests if someone needs to know the results of this test.~ Add an assertion for the values returned. The goal of the test is to show that a minimal weight selection of UTXOs is returned by coin-grinder. Since there are multiple possible solutions, the added assertion shows that coin-grinder finds the solution with the lowest weight. Without this assertion, it's ambiguous whether or not coin-grinder is returning the solution with the lowest weight. Remove the check that a result is returned since the expected result assertion implies a result. ACKs for top commit: janb84: re ACK [a015b7e](bitcoin/bitcoin@a015b7e) murchandamus: ACK a015b7e Tree-SHA512: ee3c2688b4a4a07ab209f7655c3956e62a1084419df5e87c27d751a38ff64d4c3457df2317f8077149a6947cdb05b249975de2b8f0e18ca8b17b41f4735fb1c6
2 parents 5f3848c + a015b7e commit b3162d1

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/wallet/test/coinselector_tests.cpp

+9-2
Original file line numberDiff line numberDiff line change
@@ -1168,7 +1168,7 @@ BOOST_AUTO_TEST_CASE(coin_grinder_tests)
11681168

11691169
{
11701170
// ###############################################################################################################
1171-
// 3) Test selection when some coins surpass the max allowed weight while others not. --> must find a good solution
1171+
// 3) Test that the lowest-weight solution is found when some combinations would exceed the allowed weight
11721172
// ################################################################################################################
11731173
CAmount target = 25.33L * COIN;
11741174
int max_selection_weight = 10'000; // WU
@@ -1182,7 +1182,14 @@ BOOST_AUTO_TEST_CASE(coin_grinder_tests)
11821182
}
11831183
return available_coins;
11841184
});
1185-
BOOST_CHECK(res);
1185+
SelectionResult expected_result(CAmount(0), SelectionAlgorithm::CG);
1186+
for (int i = 0; i < 10; ++i) {
1187+
add_coin(2 * COIN, i, expected_result);
1188+
}
1189+
for (int j = 0; j < 17; ++j) {
1190+
add_coin(0.33 * COIN, j + 10, expected_result);
1191+
}
1192+
BOOST_CHECK(EquivalentResult(expected_result, *res));
11861193
// Demonstrate how following improvements reduce iteration count and catch any regressions in the future.
11871194
size_t expected_attempts = 37;
11881195
BOOST_CHECK_MESSAGE(res->GetSelectionsEvaluated() == expected_attempts, strprintf("Expected %i attempts, but got %i", expected_attempts, res->GetSelectionsEvaluated()));

0 commit comments

Comments
 (0)