From ba2255a1850a3d0a63f547186d81c348ebf15b55 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Sun, 18 Sep 2011 19:46:25 +0000 Subject: [PATCH] Second part ... refresh timestamp when confirming a spend to the wallet. --- src/com/google/bitcoin/core/Wallet.java | 2 ++ tests/com/google/bitcoin/core/WalletTest.java | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/com/google/bitcoin/core/Wallet.java b/src/com/google/bitcoin/core/Wallet.java index 2c87deb6..0ec89d7a 100644 --- a/src/com/google/bitcoin/core/Wallet.java +++ b/src/com/google/bitcoin/core/Wallet.java @@ -429,6 +429,8 @@ public class Wallet implements Serializable { connectedOutput.markAsSpent(input); maybeMoveTxToSpent(connectedTx, "spent tx"); } + // Refresh the timestamp. + tx.updatedAt = new Date(); // Add to the pending pool. It'll be moved out once we receive this transaction on the best chain. pending.put(tx.getHash(), tx); } diff --git a/tests/com/google/bitcoin/core/WalletTest.java b/tests/com/google/bitcoin/core/WalletTest.java index 06d578e0..8eb774d9 100644 --- a/tests/com/google/bitcoin/core/WalletTest.java +++ b/tests/com/google/bitcoin/core/WalletTest.java @@ -296,14 +296,25 @@ public class WalletTest { assertEquals(1, transactions.size()); assertEquals(tx2, transactions.get(0)); + // Create a spend. + Transaction tx3 = wallet.createSend(new ECKey().toAddress(params), Utils.toNanoCoins(0, 5)); + // Does not appear in list yet. + assertEquals(2, wallet.getTransactionsByTime().size()); + wallet.confirmSend(tx3); + // Now it does. + transactions = wallet.getTransactionsByTime(); + assertEquals(3, transactions.size()); + assertEquals(tx3, transactions.get(0)); + // Verify we can handle the case of older wallets in which the timestamp is null (guessed from the // block appearances list). tx1.updatedAt = null; tx2.updatedAt = null; // Check we got them back in order. transactions = wallet.getTransactionsByTime(); - assertEquals(tx2, transactions.get(0)); - assertEquals(tx1, transactions.get(1)); - assertEquals(2, transactions.size()); + assertEquals(tx3, transactions.get(0)); + assertEquals(tx2, transactions.get(1)); + assertEquals(tx1, transactions.get(2)); + assertEquals(3, transactions.size()); } }