Skip to content

Commit e99d065

Browse files
committed
merge bitcoin#22938: Add remaining scenarios of 0 waste, in wallet waste_test
1 parent 31f8f9e commit e99d065

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/wallet/test/coinselector_tests.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -731,12 +731,25 @@ BOOST_AUTO_TEST_CASE(waste_test)
731731
BOOST_CHECK_LT(waste_nochange2, waste_nochange1);
732732
selection.clear();
733733

734-
// 0 Waste only when fee == long term fee, no change, and no excess
734+
// No Waste when fee == long_term_fee, no change, and no excess
735735
add_coin(1 * COIN, 1, selection, fee, fee);
736736
add_coin(2 * COIN, 2, selection, fee, fee);
737-
const CAmount exact_target = in_amt - 2 * fee;
738-
BOOST_CHECK_EQUAL(0, GetSelectionWaste(selection, 0, exact_target));
737+
const CAmount exact_target{in_amt - fee * 2};
738+
BOOST_CHECK_EQUAL(0, GetSelectionWaste(selection, /* change_cost */ 0, exact_target));
739+
selection.clear();
739740

741+
// No Waste when (fee - long_term_fee) == (-cost_of_change), and no excess
742+
const CAmount new_change_cost{fee_diff * 2};
743+
add_coin(1 * COIN, 1, selection, fee, fee + fee_diff);
744+
add_coin(2 * COIN, 2, selection, fee, fee + fee_diff);
745+
BOOST_CHECK_EQUAL(0, GetSelectionWaste(selection, new_change_cost, target));
746+
selection.clear();
747+
748+
// No Waste when (fee - long_term_fee) == (-excess), no change cost
749+
const CAmount new_target{in_amt - fee * 2 - fee_diff * 2};
750+
add_coin(1 * COIN, 1, selection, fee, fee + fee_diff);
751+
add_coin(2 * COIN, 2, selection, fee, fee + fee_diff);
752+
BOOST_CHECK_EQUAL(0, GetSelectionWaste(selection, /* change cost */ 0, new_target));
740753
}
741754

742755
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)