@ -35,7 +35,7 @@ typedef set<pair<const CWalletTx*,unsigned int> > CoinSet;
@@ -35,7 +35,7 @@ typedef set<pair<const CWalletTx*,unsigned int> > CoinSet;
BOOST_FIXTURE_TEST_SUITE ( wallet_tests , WalletTestingSetup )
static const CWallet w allet;
static const CWallet testW allet;
static vector < COutput > vCoins ;
static void add_coin ( const CAmount & nValue , int nAge = 6 * 24 , bool fIsFromMe = false , int nInput = 0 )
@ -50,7 +50,7 @@ static void add_coin(const CAmount& nValue, int nAge = 6*24, bool fIsFromMe = fa
@@ -50,7 +50,7 @@ static void add_coin(const CAmount& nValue, int nAge = 6*24, bool fIsFromMe = fa
// so stop vin being empty, and cache a non-zero Debit to fake out IsFromMe()
tx . vin . resize ( 1 ) ;
}
std : : unique_ptr < CWalletTx > wtx ( new CWalletTx ( & w allet, MakeTransactionRef ( std : : move ( tx ) ) ) ) ;
std : : unique_ptr < CWalletTx > wtx ( new CWalletTx ( & testW allet, MakeTransactionRef ( std : : move ( tx ) ) ) ) ;
if ( fIsFromMe )
{
wtx - > fDebitCached = true ;
@ -78,7 +78,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -78,7 +78,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
CoinSet setCoinsRet , setCoinsRet2 ;
CAmount nValueRet ;
LOCK ( w allet. cs_wallet ) ;
LOCK ( testW allet. cs_wallet ) ;
// test multiple times to allow for differences in the shuffle order
for ( int i = 0 ; i < RUN_TESTS ; i + + )
@ -86,24 +86,24 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -86,24 +86,24 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
empty_wallet ( ) ;
// with an empty wallet we can't even pay one cent
BOOST_CHECK ( ! w allet. SelectCoinsMinConf ( 1 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( ! testW allet. SelectCoinsMinConf ( 1 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
add_coin ( 1 * CENT , 4 ) ; // add a new 1 cent coin
// with a new 1 cent coin, we still can't find a mature 1 cent
BOOST_CHECK ( ! w allet. SelectCoinsMinConf ( 1 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( ! testW allet. SelectCoinsMinConf ( 1 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
// but we can find a new 1 cent
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 1 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 1 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 1 * CENT ) ;
add_coin ( 2 * CENT ) ; // add a mature 2 cent coin
// we can't make 3 cents of mature coins
BOOST_CHECK ( ! w allet. SelectCoinsMinConf ( 3 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( ! testW allet. SelectCoinsMinConf ( 3 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
// we can make 3 cents of new coins
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 3 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 3 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 3 * CENT ) ;
add_coin ( 5 * CENT ) ; // add a mature 5 cent coin,
@ -113,33 +113,33 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -113,33 +113,33 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
// now we have new: 1+10=11 (of which 10 was self-sent), and mature: 2+5+20=27. total = 38
// we can't make 38 cents only if we disallow new coins:
BOOST_CHECK ( ! w allet. SelectCoinsMinConf ( 38 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( ! testW allet. SelectCoinsMinConf ( 38 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
// we can't even make 37 cents if we don't allow new coins even if they're from us
BOOST_CHECK ( ! w allet. SelectCoinsMinConf ( 38 * CENT , 6 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( ! testW allet. SelectCoinsMinConf ( 38 * CENT , 6 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
// but we can make 37 cents if we accept new coins from ourself
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 37 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 37 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 37 * CENT ) ;
// and we can make 38 cents if we accept all new coins
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 38 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 38 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 38 * CENT ) ;
// try making 34 cents from 1,2,5,10,20 - we can't do it exactly
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 34 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 34 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 35 * CENT ) ; // but 35 cents is closest
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 3U ) ; // the best should be 20+10+5. it's incredibly unlikely the 1 or 2 got included (but possible)
// when we try making 7 cents, the smaller coins (1,2,5) are enough. We should see just 2+5
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 7 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 7 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 7 * CENT ) ;
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 2U ) ;
// when we try making 8 cents, the smaller coins (1,2,5) are exactly enough.
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 8 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 8 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( nValueRet = = 8 * CENT ) ;
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 3U ) ;
// when we try making 9 cents, no subset of smaller coins is enough, and we get the next bigger coin (10)
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 9 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 9 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 10 * CENT ) ;
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 1U ) ;
@ -153,30 +153,30 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -153,30 +153,30 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
add_coin ( 30 * CENT ) ; // now we have 6+7+8+20+30 = 71 cents total
// check that we have 71 and not 72
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 71 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( ! w allet. SelectCoinsMinConf ( 72 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 71 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( ! testW allet. SelectCoinsMinConf ( 72 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
// now try making 16 cents. the best smaller coins can do is 6+7+8 = 21; not as good at the next biggest coin, 20
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 16 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 16 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 20 * CENT ) ; // we should get 20 in one coin
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 1U ) ;
add_coin ( 5 * CENT ) ; // now we have 5+6+7+8+20+30 = 75 cents total
// now if we try making 16 cents again, the smaller coins can make 5+6+7 = 18 cents, better than the next biggest coin, 20
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 16 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 16 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 18 * CENT ) ; // we should get 18 in 3 coins
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 3U ) ;
add_coin ( 18 * CENT ) ; // now we have 5+6+7+8+18+20+30
// and now if we try making 16 cents again, the smaller coins can make 5+6+7 = 18 cents, the same as the next biggest coin, 18
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 16 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 16 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 18 * CENT ) ; // we should get 18 in 1 coin
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 1U ) ; // because in the event of a tie, the biggest coin wins
// now try making 11 cents. we should get 5+6
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 11 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 11 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 11 * CENT ) ;
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 2U ) ;
@ -185,11 +185,11 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -185,11 +185,11 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
add_coin ( 2 * COIN ) ;
add_coin ( 3 * COIN ) ;
add_coin ( 4 * COIN ) ; // now we have 5+6+7+8+18+20+30+100+200+300+400 = 1094 cents
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 95 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 95 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 1 * COIN ) ; // we should get 1 BTC in 1 coin
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 1U ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 195 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 195 * CENT , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 2 * COIN ) ; // we should get 2 BTC in 1 coin
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 1U ) ;
@ -204,14 +204,14 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -204,14 +204,14 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
// try making 1 * MIN_CHANGE from the 1.5 * MIN_CHANGE
// we'll get change smaller than MIN_CHANGE whatever happens, so can expect MIN_CHANGE exactly
BOOST_CHECK ( w allet. SelectCoinsMinConf ( MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , MIN_CHANGE ) ;
// but if we add a bigger coin, small change is avoided
add_coin ( 1111 * MIN_CHANGE ) ;
// try making 1 from 0.1 + 0.2 + 0.3 + 0.4 + 0.5 + 1111 = 1112.5
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 1 * MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 1 * MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 1 * MIN_CHANGE ) ; // we should get the exact amount
// if we add more small coins:
@ -219,7 +219,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -219,7 +219,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
add_coin ( MIN_CHANGE * 7 / 10 ) ;
// and try again to make 1.0 * MIN_CHANGE
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 1 * MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 1 * MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 1 * MIN_CHANGE ) ; // we should get the exact amount
// run the 'mtgox' test (see http://blockexplorer.com/tx/29a3efd3ef04f9153d47a990bd7b048a4b2d213daaa5fb8ed670fb85f13bdbcf)
@ -228,7 +228,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -228,7 +228,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
for ( int j = 0 ; j < 20 ; j + + )
add_coin ( 50000 * COIN ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 500000 * COIN , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 500000 * COIN , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 500000 * COIN ) ; // we should get the exact amount
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 10U ) ; // in ten coins
@ -241,7 +241,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -241,7 +241,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
add_coin ( MIN_CHANGE * 6 / 10 ) ;
add_coin ( MIN_CHANGE * 7 / 10 ) ;
add_coin ( 1111 * MIN_CHANGE ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 1 * MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 1 * MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 1111 * MIN_CHANGE ) ; // we get the bigger coin
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 1U ) ;
@ -251,7 +251,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -251,7 +251,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
add_coin ( MIN_CHANGE * 6 / 10 ) ;
add_coin ( MIN_CHANGE * 8 / 10 ) ;
add_coin ( 1111 * MIN_CHANGE ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( MIN_CHANGE , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , MIN_CHANGE ) ; // we should get the exact amount
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 2U ) ; // in two coins 0.4+0.6
@ -262,12 +262,12 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -262,12 +262,12 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
add_coin ( MIN_CHANGE * 100 ) ;
// trying to make 100.01 from these three coins
BOOST_CHECK ( w allet. SelectCoinsMinConf ( MIN_CHANGE * 10001 / 100 , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( MIN_CHANGE * 10001 / 100 , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , MIN_CHANGE * 10105 / 100 ) ; // we should get all coins
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 3U ) ;
// but if we try to make 99.9, we should take the bigger of the two small coins to avoid small change
BOOST_CHECK ( w allet. SelectCoinsMinConf ( MIN_CHANGE * 9990 / 100 , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( MIN_CHANGE * 9990 / 100 , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 101 * MIN_CHANGE ) ;
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 2U ) ;
@ -277,7 +277,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -277,7 +277,7 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
// Create 676 inputs (= (old MAX_STANDARD_TX_SIZE == 100000) / 148 bytes per input)
for ( uint16_t j = 0 ; j < 676 ; j + + )
add_coin ( amt ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 2000 , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 2000 , 1 , 1 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
if ( amt - 2000 < MIN_CHANGE ) {
// needs more than one input:
uint16_t returnSize = std : : ceil ( ( 2000.0 + MIN_CHANGE ) / amt ) ;
@ -299,8 +299,8 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -299,8 +299,8 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
// picking 50 from 100 coins doesn't depend on the shuffle,
// but does depend on randomness in the stochastic approximation code
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 50 * COIN , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 50 * COIN , 1 , 6 , 0 , vCoins , setCoinsRet2 , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 50 * COIN , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 50 * COIN , 1 , 6 , 0 , vCoins , setCoinsRet2 , nValueRet ) ) ;
BOOST_CHECK ( ! equal_sets ( setCoinsRet , setCoinsRet2 ) ) ;
int fails = 0 ;
@ -308,8 +308,8 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -308,8 +308,8 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
{
// selecting 1 from 100 identical coins depends on the shuffle; this test will fail 1% of the time
// run the test RANDOM_REPEATS times and only complain if all of them fail
BOOST_CHECK ( w allet. SelectCoinsMinConf ( COIN , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( COIN , 1 , 6 , 0 , vCoins , setCoinsRet2 , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( COIN , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( COIN , 1 , 6 , 0 , vCoins , setCoinsRet2 , nValueRet ) ) ;
if ( equal_sets ( setCoinsRet , setCoinsRet2 ) )
fails + + ;
}
@ -329,8 +329,8 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
@@ -329,8 +329,8 @@ BOOST_AUTO_TEST_CASE(coin_selection_tests)
{
// selecting 1 from 100 identical coins depends on the shuffle; this test will fail 1% of the time
// run the test RANDOM_REPEATS times and only complain if all of them fail
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 90 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 90 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet2 , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 90 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 90 * CENT , 1 , 6 , 0 , vCoins , setCoinsRet2 , nValueRet ) ) ;
if ( equal_sets ( setCoinsRet , setCoinsRet2 ) )
fails + + ;
}
@ -345,7 +345,7 @@ BOOST_AUTO_TEST_CASE(ApproximateBestSubset)
@@ -345,7 +345,7 @@ BOOST_AUTO_TEST_CASE(ApproximateBestSubset)
CoinSet setCoinsRet ;
CAmount nValueRet ;
LOCK ( w allet. cs_wallet ) ;
LOCK ( testW allet. cs_wallet ) ;
empty_wallet ( ) ;
@ -354,7 +354,7 @@ BOOST_AUTO_TEST_CASE(ApproximateBestSubset)
@@ -354,7 +354,7 @@ BOOST_AUTO_TEST_CASE(ApproximateBestSubset)
add_coin ( 1000 * COIN ) ;
add_coin ( 3 * COIN ) ;
BOOST_CHECK ( w allet. SelectCoinsMinConf ( 1003 * COIN , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK ( testW allet. SelectCoinsMinConf ( 1003 * COIN , 1 , 6 , 0 , vCoins , setCoinsRet , nValueRet ) ) ;
BOOST_CHECK_EQUAL ( nValueRet , 1003 * COIN ) ;
BOOST_CHECK_EQUAL ( setCoinsRet . size ( ) , 2U ) ;