diff options
author | PJ Fanning <fanningpj@apache.org> | 2023-09-21 12:15:20 +0000 |
---|---|---|
committer | PJ Fanning <fanningpj@apache.org> | 2023-09-21 12:15:20 +0000 |
commit | a9aa91a9ed443e73b39cf038bea9ea7a586661f8 (patch) | |
tree | f38215874260b0ff0697eb0df22efe66d92fcd81 /poi-ooxml/src | |
parent | 99117381e59d9a7f2abe27784009358c672c0ae3 (diff) | |
download | poi-a9aa91a9ed443e73b39cf038bea9ea7a586661f8.tar.gz poi-a9aa91a9ed443e73b39cf038bea9ea7a586661f8.zip |
[bug-67396] add tests for standalone flag
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912456 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi-ooxml/src')
-rw-r--r-- | poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java index af19cd38e8..8096fd3a8c 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java +++ b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java @@ -17,8 +17,17 @@ 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()); + } + } + } + } + } } |