]> source.dussan.org Git - poi.git/commitdiff
[bug-67396] add tests for standalone flag
authorPJ Fanning <fanningpj@apache.org>
Thu, 21 Sep 2023 12:15:20 +0000 (12:15 +0000)
committerPJ Fanning <fanningpj@apache.org>
Thu, 21 Sep 2023 12:15:20 +0000 (12:15 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912456 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java

index af19cd38e8e9c7bea9a77635abf0bfdf4a82171b..8096fd3a8c492efbc79885c11189a652b49a4bf3 100644 (file)
 
 package org.apache.poi.openxml4j.opc;
 
+import org.apache.commons.compress.archivers.ArchiveEntry;
+import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
 import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.ooxml.util.DocumentHelper;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.util.IOUtils;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.junit.jupiter.api.Test;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -45,11 +54,69 @@ class TestStreamHelper {
         elRun.appendChild(elText);
         elText.setTextContent("Hello Open XML !");
 
-        try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) {
+        try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) {
             StreamHelper.saveXmlInStream(doc, bos);
             String xml = bos.toString(StandardCharsets.UTF_8);
             assertTrue(xml.contains("standalone=\"yes\""), "xml contains standalone=yes?");
             assertTrue(xml.contains("encoding=\"UTF-8\""), "xml contains encoding=UTF-8?");
         }
     }
+
+    @Test
+    void testXSSF() throws IOException {
+        try(
+                XSSFWorkbook workbook = new XSSFWorkbook();
+                UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()
+        ) {
+            XSSFSheet sheet = workbook.createSheet("testsheet");
+            Cell cell = sheet.createRow(0).createCell(0);
+            cell.setCellValue("test-value");
+            CellStyle style = workbook.createCellStyle();
+            style.setWrapText(true);
+            cell.setCellStyle(style);
+            workbook.write(bos);
+            try(ZipArchiveInputStream zis = new ZipArchiveInputStream(bos.toInputStream())) {
+                ArchiveEntry entry;
+                final int maxSize = 1024 * 1024;
+                while((entry = zis.getNextEntry()) != null) {
+                    final int entrySize = (int) entry.getSize();
+                    final byte[] data = (entrySize == -1) ? IOUtils.toByteArrayWithMaxLength(zis, maxSize) :
+                            IOUtils.toByteArray(zis, entrySize, maxSize);
+                    final String str = new String(data, StandardCharsets.UTF_8);
+                    if (str.contains("standalone")) {
+                        assertTrue(str.contains("standalone=\"yes\""), "unexpected XML standalone flag in " + entry.getName());
+                    }
+                }
+            }
+        }
+    }
+
+    @Test
+    void testSXSSF() throws IOException {
+        try(
+                SXSSFWorkbook workbook = new SXSSFWorkbook();
+                UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()
+        ) {
+            SXSSFSheet sheet = workbook.createSheet("testsheet");
+            Cell cell = sheet.createRow(0).createCell(0);
+            cell.setCellValue("test-value");
+            CellStyle style = workbook.createCellStyle();
+            style.setWrapText(true);
+            cell.setCellStyle(style);
+            workbook.write(bos);
+            try(ZipArchiveInputStream zis = new ZipArchiveInputStream(bos.toInputStream())) {
+                ArchiveEntry entry;
+                final int maxSize = 1024 * 1024;
+                while((entry = zis.getNextEntry()) != null) {
+                    final int entrySize = (int) entry.getSize();
+                    final byte[] data = (entrySize == -1) ? IOUtils.toByteArrayWithMaxLength(zis, maxSize) :
+                            IOUtils.toByteArray(zis, entrySize, maxSize);
+                    final String str = new String(data, StandardCharsets.UTF_8);
+                    if (str.contains("standalone")) {
+                        assertTrue(str.contains("standalone=\"yes\""), "unexpected XML standalone flag in " + entry.getName());
+                    }
+                }
+            }
+        }
+    }
 }