3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-07 06:44:16 +00:00

Update a TestUtils helper to allow solved blocks to have transactions in them. Rewrite lastSeenBlockHash test to use it and eliminate a todo.

This commit is contained in:
Mike Hearn 2012-06-03 14:20:02 +02:00
parent 417dcefa67
commit 5deecef64c
2 changed files with 21 additions and 15 deletions

View File

@ -170,8 +170,13 @@ public class TestUtils {
} }
public static Block makeSolvedTestBlock(NetworkParameters params, public static Block makeSolvedTestBlock(NetworkParameters params,
Block prev) throws BlockStoreException { Block prev,
Transaction... transactions) throws BlockStoreException {
Block b = prev.createNextBlock(new ECKey().toAddress(params)); Block b = prev.createNextBlock(new ECKey().toAddress(params));
// Coinbase tx already exists.
for (Transaction tx : transactions) {
b.addTransaction(tx);
}
b.solve(); b.solve();
return b; return b;
} }

View File

@ -32,8 +32,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import static com.google.bitcoin.core.TestUtils.createFakeBlock; import static com.google.bitcoin.core.TestUtils.*;
import static com.google.bitcoin.core.TestUtils.createFakeTx;
import static com.google.bitcoin.core.Utils.bitcoinValueToFriendlyString; import static com.google.bitcoin.core.Utils.bitcoinValueToFriendlyString;
import static com.google.bitcoin.core.Utils.toNanoCoins; import static com.google.bitcoin.core.Utils.toNanoCoins;
import static org.junit.Assert.*; import static org.junit.Assert.*;
@ -43,6 +42,7 @@ public class WalletTest {
private Address myAddress; private Address myAddress;
private Wallet wallet; private Wallet wallet;
private BlockChain chain;
private BlockStore blockStore; private BlockStore blockStore;
private ECKey myKey; private ECKey myKey;
@ -53,7 +53,7 @@ public class WalletTest {
wallet = new Wallet(params); wallet = new Wallet(params);
wallet.addKey(myKey); wallet.addKey(myKey);
blockStore = new MemoryBlockStore(params); blockStore = new MemoryBlockStore(params);
chain = new BlockChain(params, wallet, blockStore);
BriefLogFormatter.init(); BriefLogFormatter.init();
} }
@ -692,22 +692,23 @@ public class WalletTest {
Transaction t1 = createFakeTx(params, v1, myAddress); Transaction t1 = createFakeTx(params, v1, myAddress);
Transaction t2 = createFakeTx(params, v2, myAddress); Transaction t2 = createFakeTx(params, v2, myAddress);
Transaction t3 = createFakeTx(params, v3, myAddress); Transaction t3 = createFakeTx(params, v3, myAddress);
StoredBlock b1 = createFakeBlock(params, blockStore, t1).storedBlock;
// TODO for Mike - b2 gets sent to side chain but b1, b2, b3 are all chained together - unrealistic. Block genesis = blockStore.getChainHead().getHeader();
StoredBlock b2 = createFakeBlock(params, blockStore, t2).storedBlock; Block b10 = makeSolvedTestBlock(params, genesis, t1);
StoredBlock b3 = createFakeBlock(params, blockStore, t3).storedBlock; Block b11 = makeSolvedTestBlock(params, genesis, t2);
Block b2 = makeSolvedTestBlock(params, b10, t3);
// Receive a block on the best chain - this should set the last block seen hash. // Receive a block on the best chain - this should set the last block seen hash.
wallet.receiveFromBlock(t1, b1, BlockChain.NewBlockType.BEST_CHAIN); chain.add(b10);
assertEquals(b1.getHeader().getHash(), wallet.getLastBlockSeenHash()); assertEquals(b10.getHash(), wallet.getLastBlockSeenHash());
// Receive a block on the side chain - this should not change the last block seen hash. // Receive a block on the side chain - this should not change the last block seen hash.
wallet.receiveFromBlock(t2, b2, BlockChain.NewBlockType.SIDE_CHAIN); chain.add(b11);
assertEquals(b1.getHeader().getHash(), wallet.getLastBlockSeenHash()); assertEquals(b10.getHash(), wallet.getLastBlockSeenHash());
// Receive block 3 on the best chain - this should change the last block seen hash. // Receive block 2 on the best chain - this should change the last block seen hash.
wallet.receiveFromBlock(t3, b3, BlockChain.NewBlockType.BEST_CHAIN); chain.add(b2);
assertEquals(b3.getHeader().getHash(), wallet.getLastBlockSeenHash()); assertEquals(b2.getHash(), wallet.getLastBlockSeenHash());
} }