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