|
|
@ -328,7 +328,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests) |
|
|
|
empty_wallet(); |
|
|
|
empty_wallet(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(sorting_in_ApproximateBestSet) |
|
|
|
BOOST_AUTO_TEST_CASE(ApproximateBestSubset) |
|
|
|
{ |
|
|
|
{ |
|
|
|
CoinSet setCoinsRet; |
|
|
|
CoinSet setCoinsRet; |
|
|
|
CAmount nValueRet; |
|
|
|
CAmount nValueRet; |
|
|
@ -336,7 +336,8 @@ BOOST_AUTO_TEST_CASE(sorting_in_ApproximateBestSet) |
|
|
|
LOCK(wallet.cs_wallet); |
|
|
|
LOCK(wallet.cs_wallet); |
|
|
|
|
|
|
|
|
|
|
|
empty_wallet(); |
|
|
|
empty_wallet(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Test vValue sort order
|
|
|
|
for (int i = 0; i < 1000; i++) |
|
|
|
for (int i = 0; i < 1000; i++) |
|
|
|
add_coin(1000 * COIN); |
|
|
|
add_coin(1000 * COIN); |
|
|
|
add_coin(3 * COIN); |
|
|
|
add_coin(3 * COIN); |
|
|
@ -344,25 +345,19 @@ BOOST_AUTO_TEST_CASE(sorting_in_ApproximateBestSet) |
|
|
|
BOOST_CHECK(wallet.SelectCoinsMinConf(1003 * COIN, 1, 6, vCoins, setCoinsRet, nValueRet)); |
|
|
|
BOOST_CHECK(wallet.SelectCoinsMinConf(1003 * COIN, 1, 6, vCoins, setCoinsRet, nValueRet)); |
|
|
|
BOOST_CHECK_EQUAL(nValueRet, 1003 * COIN); |
|
|
|
BOOST_CHECK_EQUAL(nValueRet, 1003 * COIN); |
|
|
|
BOOST_CHECK_EQUAL(setCoinsRet.size(), 2U); |
|
|
|
BOOST_CHECK_EQUAL(setCoinsRet.size(), 2U); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(pruning_in_ApproximateBestSet) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CoinSet setCoinsRet; |
|
|
|
|
|
|
|
CAmount nValueRet; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOCK(wallet.cs_wallet); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
empty_wallet(); |
|
|
|
empty_wallet(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Test trimming
|
|
|
|
for (int i = 0; i < 100; i++) |
|
|
|
for (int i = 0; i < 100; i++) |
|
|
|
add_coin(10 * CENT); |
|
|
|
add_coin(10 * COIN); |
|
|
|
for (int i = 0; i < 100; i++) |
|
|
|
for (int i = 0; i < 100; i++) |
|
|
|
add_coin(1000 * CENT); |
|
|
|
add_coin(1000 * COIN); |
|
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK(wallet.SelectCoinsMinConf(100001 * CENT, 1, 6, vCoins, setCoinsRet, nValueRet)); |
|
|
|
BOOST_CHECK(wallet.SelectCoinsMinConf(100001 * COIN, 1, 6, vCoins, setCoinsRet, nValueRet)); |
|
|
|
// We need all 100 larger coins and exactly one small coin.
|
|
|
|
// We need all 100 larger coins and exactly one small coin.
|
|
|
|
// Superfluous small coins must be pruned:
|
|
|
|
// Superfluous small coins must be trimmed from the set:
|
|
|
|
BOOST_CHECK_EQUAL(nValueRet, 100010 * CENT); |
|
|
|
BOOST_CHECK_EQUAL(nValueRet, 100010 * COIN); |
|
|
|
BOOST_CHECK_EQUAL(setCoinsRet.size(), 101); |
|
|
|
BOOST_CHECK_EQUAL(setCoinsRet.size(), 101); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|