]> source.dussan.org Git - poi.git/commitdiff
add regression test for opczip
authorPJ Fanning <fanningpj@apache.org>
Thu, 3 Feb 2022 18:42:39 +0000 (18:42 +0000)
committerPJ Fanning <fanningpj@apache.org>
Thu, 3 Feb 2022 18:42:39 +0000 (18:42 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1897737 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/OpcZipTest.java [new file with mode: 0644]

diff --git a/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/OpcZipTest.java b/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/OpcZipTest.java
new file mode 100644 (file)
index 0000000..8c7ecec
--- /dev/null
@@ -0,0 +1,51 @@
+package org.apache.poi.xssf.streaming;
+
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
+import org.junit.jupiter.api.Test;
+
+import java.io.PrintStream;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+
+class OpcZipTest {
+    @Test
+    void compareOutput() throws Exception {
+        Map<String, String> contents = createContents();
+        try (
+                UnsynchronizedByteArrayOutputStream bos1 = new UnsynchronizedByteArrayOutputStream();
+                UnsynchronizedByteArrayOutputStream bos2 = new UnsynchronizedByteArrayOutputStream()
+        ) {
+            try (OpcOutputStream zip = new OpcOutputStream(bos1)) {
+                for (Map.Entry<String, String> entry : contents.entrySet()) {
+                    zip.putNextEntry(entry.getKey());
+                    PrintStream printer = new PrintStream(zip);
+                    printer.print(entry.getValue());
+                    printer.flush();
+                    zip.closeEntry();
+                }
+            }
+            try (com.github.rzymek.opczip.OpcOutputStream zip = new com.github.rzymek.opczip.OpcOutputStream(bos2)) {
+                for (Map.Entry<String, String> entry : contents.entrySet()) {
+                    zip.putNextEntry(new ZipEntry(entry.getKey()));
+                    PrintStream printer = new PrintStream(zip);
+                    printer.print(entry.getValue());
+                    printer.flush();
+                    zip.closeEntry();
+                }
+            }
+            assertArrayEquals(bos1.toByteArray(), bos2.toByteArray());
+        }
+    }
+
+    private static Map<String, String> createContents() {
+        Map<String, String> contents = new LinkedHashMap<>();
+        for (int i = 0; i < 3; i++) {
+            String name = String.format("dir%s/file%s.txt", i % 3, i);
+            contents.put(name, "this is the contents");
+        }
+        return contents;
+    }
+}