From b7c24c6196b93560967fcf5c39c5b7be7820022e Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Tue, 28 Jul 2015 20:30:12 +0200 Subject: [PATCH] Wallet: Fix not removing unspent transaction outputs when clearing transactions. Adds very basic unit test for resetting wallets. --- core/src/main/java/org/bitcoinj/core/Wallet.java | 1 + core/src/test/java/org/bitcoinj/core/WalletTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/core/src/main/java/org/bitcoinj/core/Wallet.java b/core/src/main/java/org/bitcoinj/core/Wallet.java index 0709ee5b9..67b678e05 100644 --- a/core/src/main/java/org/bitcoinj/core/Wallet.java +++ b/core/src/main/java/org/bitcoinj/core/Wallet.java @@ -2590,6 +2590,7 @@ public class Wallet extends BaseTaggableObject implements BlockChainListener, Pe pending.clear(); dead.clear(); transactions.clear(); + myUnspents.clear(); } /** diff --git a/core/src/test/java/org/bitcoinj/core/WalletTest.java b/core/src/test/java/org/bitcoinj/core/WalletTest.java index d82839bf0..98d167c98 100644 --- a/core/src/test/java/org/bitcoinj/core/WalletTest.java +++ b/core/src/test/java/org/bitcoinj/core/WalletTest.java @@ -3151,4 +3151,16 @@ public class WalletTest extends TestWithWallet { String seed = wallet.getKeyChainSeed().toHexString(); assertEquals("5ca8cd6c01aa004d3c5396c628b78a4a89462f412f460a845b594ac42eceaa264b0e14dcd4fe73d4ed08ce06f4c28facfa85042d26d784ab2798a870bb7af556", seed); } + + @Test + public void reset() { + sendMoneyToWallet(wallet, COIN, myAddress, AbstractBlockChain.NewBlockType.BEST_CHAIN); + assertNotEquals(Coin.ZERO, wallet.getBalance(Wallet.BalanceType.ESTIMATED)); + assertNotEquals(0, wallet.getTransactions(false).size()); + assertNotEquals(0, wallet.getUnspents().size()); + wallet.reset(); + assertEquals(Coin.ZERO, wallet.getBalance(Wallet.BalanceType.ESTIMATED)); + assertEquals(0, wallet.getTransactions(false).size()); + assertEquals(0, wallet.getUnspents().size()); + } }