mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-05-24 19:02:42 +02:00
Merge bitcoin/bitcoin#25562: test: add tests for negative waste during coin selection
98ea43d5e9fc7b001f55a5bb1602afc2661cdb0f test: add tests for negative waste during coin selection (ishaanam) Pull request description: #25495 mentions that waste can be negative when the current feerate is less than the long term feerate. There are currently no waste tests for negative waste, so this PR adds two of them. ACKs for top commit: achow101: ACK 98ea43d5e9fc7b001f55a5bb1602afc2661cdb0f glozow: light code review ACK 98ea43d5e9fc7b001f55a5bb1602afc2661cdb0f, good to have tests for negative waste Tree-SHA512: d194d370f1257975959d3c601fea9f82c30c1aabc3e8bedc997c62659283fe681cc527e59df1a0187b3c91e8067c60374dd5ce0237561bd882edafe6a575a9b9
This commit is contained in:
commit
c92eb6cda0
@ -867,7 +867,23 @@ BOOST_AUTO_TEST_CASE(waste_test)
|
||||
const CAmount new_target{in_amt - fee * 2 - fee_diff * 2};
|
||||
add_coin(1 * COIN, 1, selection, fee, fee + fee_diff);
|
||||
add_coin(2 * COIN, 2, selection, fee, fee + fee_diff);
|
||||
BOOST_CHECK_EQUAL(0, GetSelectionWaste(selection, /* change cost */ 0, new_target));
|
||||
BOOST_CHECK_EQUAL(0, GetSelectionWaste(selection, /*change_cost=*/ 0, new_target));
|
||||
selection.clear();
|
||||
|
||||
// Negative waste when the long term fee is greater than the current fee and the selected value == target
|
||||
const CAmount exact_target1{3 * COIN - 2 * fee};
|
||||
const CAmount target_waste1{-2 * fee_diff}; // = (2 * fee) - (2 * (fee + fee_diff))
|
||||
add_coin(1 * COIN, 1, selection, fee, fee + fee_diff);
|
||||
add_coin(2 * COIN, 2, selection, fee, fee + fee_diff);
|
||||
BOOST_CHECK_EQUAL(target_waste1, GetSelectionWaste(selection, /*change_cost=*/ 0, exact_target1));
|
||||
selection.clear();
|
||||
|
||||
// Negative waste when the long term fee is greater than the current fee and change_cost < - (inputs * (fee - long_term_fee))
|
||||
const CAmount large_fee_diff{90};
|
||||
const CAmount target_waste2{-2 * large_fee_diff + change_cost}; // = (2 * fee) - (2 * (fee + large_fee_diff)) + change_cost
|
||||
add_coin(1 * COIN, 1, selection, fee, fee + large_fee_diff);
|
||||
add_coin(2 * COIN, 2, selection, fee, fee + large_fee_diff);
|
||||
BOOST_CHECK_EQUAL(target_waste2, GetSelectionWaste(selection, change_cost, target));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(effective_value_test)
|
||||
|
Loading…
x
Reference in New Issue
Block a user