diff --git a/core/src/main/java/com/google/bitcoin/utils/BlockFileLoader.java b/core/src/main/java/com/google/bitcoin/utils/BlockFileLoader.java index eaf37f9f..07f58062 100644 --- a/core/src/main/java/com/google/bitcoin/utils/BlockFileLoader.java +++ b/core/src/main/java/com/google/bitcoin/utils/BlockFileLoader.java @@ -45,7 +45,7 @@ import java.util.NoSuchElementException; *   try { chain.add(block); } catch (Exception e) { }
* }

*/ -public class BlockFileLoader implements Iterator { +public class BlockFileLoader implements Iterable, Iterator { /** * Gets the list of files which contain blocks from the Satoshi client. */ @@ -164,4 +164,9 @@ public class BlockFileLoader implements Iterator { public void remove() throws UnsupportedOperationException { throw new UnsupportedOperationException(); } + + @Override + public Iterator iterator() { + return this; + } } diff --git a/core/src/test/java/com/google/bitcoin/core/FullPrunedBlockChainTest.java b/core/src/test/java/com/google/bitcoin/core/FullPrunedBlockChainTest.java index bd7b6aa8..bb71a500 100644 --- a/core/src/test/java/com/google/bitcoin/core/FullPrunedBlockChainTest.java +++ b/core/src/test/java/com/google/bitcoin/core/FullPrunedBlockChainTest.java @@ -19,8 +19,10 @@ package com.google.bitcoin.core; import com.google.bitcoin.core.Transaction.SigHash; import com.google.bitcoin.script.Script; +import com.google.bitcoin.store.BlockStoreException; import com.google.bitcoin.store.FullPrunedBlockStore; import com.google.bitcoin.store.MemoryFullPrunedBlockStore; +import com.google.bitcoin.utils.BlockFileLoader; import com.google.bitcoin.utils.BriefLogFormatter; import org.junit.After; import org.junit.Before; @@ -29,9 +31,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.IOException; import java.lang.ref.WeakReference; -import java.util.List; +import java.util.Arrays; import static org.junit.Assert.*; @@ -175,4 +178,16 @@ public class FullPrunedBlockChainTest { throw new RuntimeException(e); // Cannot happen. } } + + @Test + public void testFirst100KBlocks() throws BlockStoreException, VerificationException, PrunedException { + NetworkParameters params = NetworkParameters.prodNet(); + File blockFile = new File(getClass().getResource("first-100k-blocks.dat").getFile()); + BlockFileLoader loader = new BlockFileLoader(params, Arrays.asList(new File[] {blockFile})); + + store = new MemoryFullPrunedBlockStore(params, 10); + chain = new FullPrunedBlockChain(params, store); + for (Block block : loader) + chain.add(block); + } } diff --git a/core/src/test/resources/com/google/bitcoin/core/first-100k-blocks.dat b/core/src/test/resources/com/google/bitcoin/core/first-100k-blocks.dat new file mode 100644 index 00000000..6cfef239 Binary files /dev/null and b/core/src/test/resources/com/google/bitcoin/core/first-100k-blocks.dat differ