44
55#include " wallet/wallet.h"
66#include " wallet/coinselection.h"
7+ #include " wallet/coincontrol.h"
78#include " amount.h"
89#include " primitives/transaction.h"
910#include " random.h"
@@ -27,7 +28,7 @@ std::vector<std::unique_ptr<CWalletTx>> wtxn;
2728typedef std::set<CInputCoin> CoinSet;
2829
2930static std::vector<COutput> vCoins;
30- static const CWallet testWallet (" dummy" , CWalletDBWrapper::CreateDummy());
31+ static CWallet testWallet (" dummy" , CWalletDBWrapper::CreateDummy());
3132static CAmount balance = 0 ;
3233
3334CoinEligibilityFilter filter_standard (1 , 6 , 0 );
@@ -72,6 +73,7 @@ static void add_coin(const CAmount& nValue, int nAge = 6*24, bool fIsFromMe = fa
7273 }
7374 COutput output (wtx.get (), nInput, nAge, true /* spendable */ , true /* solvable */ , true /* safe */ );
7475 vCoins.push_back (output);
76+ testWallet.AddToWallet (*wtx.get ());
7577 wtxn.emplace_back (std::move (wtx));
7678}
7779
@@ -222,6 +224,18 @@ BOOST_AUTO_TEST_CASE(bnb_search_test)
222224 add_coin (1 );
223225 vCoins.at (0 ).nInputBytes = 40 ; // Make sure that it has a negative effective value. The next check should assert if this somehow got through. Otherwise it will fail
224226 BOOST_CHECK (!testWallet.SelectCoinsMinConf ( 1 * CENT, filter_standard, vCoins, setCoinsRet, nValueRet, coin_selection_params_bnb, bnb_used));
227+
228+ // Make sure that we aren't using BnB when there are preset inputs
229+ empty_wallet ();
230+ add_coin (5 * CENT);
231+ add_coin (3 * CENT);
232+ add_coin (2 * CENT);
233+ CCoinControl coin_control;
234+ coin_control.fAllowOtherInputs = true ;
235+ coin_control.Select (COutPoint (vCoins.at (0 ).tx ->GetHash (), vCoins.at (0 ).i ));
236+ BOOST_CHECK (testWallet.SelectCoins (vCoins, 10 * CENT, setCoinsRet, nValueRet, coin_control, coin_selection_params_bnb, bnb_used));
237+ BOOST_CHECK (!bnb_used);
238+ BOOST_CHECK (!coin_selection_params_bnb.use_bnb );
225239}
226240
227241BOOST_AUTO_TEST_CASE (knapsack_solver_test)
0 commit comments