Add --progress option

Change-Id: I0d8a4c3243b30d5db1dc35aade1d6d9b66723d9a
diff --git a/src/test/java/de/ids_mannheim/korap/TestIndexer.java b/src/test/java/de/ids_mannheim/korap/TestIndexer.java
index ec26670..7b568ae 100644
--- a/src/test/java/de/ids_mannheim/korap/TestIndexer.java
+++ b/src/test/java/de/ids_mannheim/korap/TestIndexer.java
@@ -235,6 +235,64 @@
         assertTrue(outputStream.toString().contains("Added or updated 6 files"));
     }
 
+    @Test
+    public void testProgressOption () throws IOException {
+        java.io.PrintStream originalErr = System.err;
+        ByteArrayOutputStream errStream = new ByteArrayOutputStream();
+        System.setErr(new java.io.PrintStream(errStream));
+        try {
+            Indexer.main(new String[] { "-c", "src/test/resources/krill.properties",
+                    "-i", "src/test/resources/bzk",
+                    "-o", getTestOutputPath("test-progress-index"),
+                    "--progress"});
+        }
+        finally {
+            System.err.flush();
+            System.setErr(originalErr);
+        }
+
+        String progressOutput = errStream.toString();
+        // Expect progress bar renders with bracketed bar, percentage, count, and ETA
+        assertTrue(progressOutput.contains("[==="));
+        assertTrue(progressOutput.contains("100.0%"));
+        assertTrue(progressOutput.contains("1/1"));
+        assertTrue(progressOutput.contains("ETA"));
+    }
+
+    @Test
+    public void testCountTargetFiles () throws Exception {
+        long nullCount = Indexer.countTargetFiles(null);
+        assertEquals(0L, nullCount);
+
+        long dirCount = Indexer.countTargetFiles(new String[] { "src/test/resources/bzk" });
+        assertEquals(1L, dirCount);
+
+        long zipCount = Indexer.countTargetFiles(new String[] { "src/test/resources/rei/rei_sample_krill.zip" });
+        assertEquals(3L, zipCount);
+
+        long tarCount = Indexer.countTargetFiles(new String[] { "src/test/resources/rei/rei_sample_krill.tar" });
+        assertEquals(3L, tarCount);
+
+        long tgzCount = Indexer.countTargetFiles(new String[] { "src/test/resources/rei/rei_sample_krill.tar.gz" });
+        assertEquals(3L, tgzCount);
+
+        long mixedZipTar = Indexer.countTargetFiles(new String[] {
+                "src/test/resources/rei/rei_sample_krill.zip",
+                "src/test/resources/rei/rei_sample_krill.tar" });
+        assertEquals(6L, mixedZipTar);
+
+        long mixedDirZip = Indexer.countTargetFiles(new String[] {
+                "src/test/resources/bzk",
+                "src/test/resources/rei/rei_sample_krill.zip" });
+        assertEquals(4L, mixedDirZip);
+
+        long mixedContentZip = Indexer.countTargetFiles(new String[] { "src/test/resources/rei/mixed_test.zip" });
+        assertEquals(2L, mixedContentZip);
+
+        long invalidZip = Indexer.countTargetFiles(new String[] { "src/test/resources/nonexistent.zip" });
+        assertEquals(0L, invalidZip);
+    }
+
     @Before
     public void setOutputStream () {
         System.setOut(new PrintStream(outputStream));