diff --git a/electrum/coinchooser.py b/electrum/coinchooser.py index 9d9330dd8..d484bbd18 100644 --- a/electrum/coinchooser.py +++ b/electrum/coinchooser.py @@ -349,7 +349,10 @@ class CoinChooserRandom(CoinChooserBase): def bucket_candidates_any(self, buckets: List[Bucket], sufficient_funds) -> List[List[Bucket]]: '''Returns a list of bucket sets.''' if not buckets: - raise NotEnoughFunds() + if sufficient_funds([], bucket_value_sum=0): + return [[]] + else: + raise NotEnoughFunds() candidates = set() diff --git a/electrum/tests/test_coinchooser.py b/electrum/tests/test_coinchooser.py new file mode 100644 index 000000000..aaaf4af69 --- /dev/null +++ b/electrum/tests/test_coinchooser.py @@ -0,0 +1,20 @@ +from electrum.coinchooser import CoinChooserPrivacy +from electrum.util import NotEnoughFunds + +from . import ElectrumTestCase + + +class TestCoinChooser(ElectrumTestCase): + + def test_bucket_candidates_with_empty_buckets(self): + def sufficient_funds(buckets, *, bucket_value_sum): + return True + coin_chooser = CoinChooserPrivacy() + self.assertEqual([[]], coin_chooser.bucket_candidates_any([], sufficient_funds)) + self.assertEqual([[]], coin_chooser.bucket_candidates_prefer_confirmed([], sufficient_funds)) + def sufficient_funds(buckets, *, bucket_value_sum): + return False + with self.assertRaises(NotEnoughFunds): + coin_chooser.bucket_candidates_any([], sufficient_funds) + with self.assertRaises(NotEnoughFunds): + coin_chooser.bucket_candidates_prefer_confirmed([], sufficient_funds)