aboutsummaryrefslogtreecommitdiffstats
path: root/poi-ooxml/src
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2023-09-21 12:15:20 +0000
committerPJ Fanning <fanningpj@apache.org>2023-09-21 12:15:20 +0000
commita9aa91a9ed443e73b39cf038bea9ea7a586661f8 (patch)
treef38215874260b0ff0697eb0df22efe66d92fcd81 /poi-ooxml/src
parent99117381e59d9a7f2abe27784009358c672c0ae3 (diff)
downloadpoi-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.java69
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());
+ }
+ }
+ }
+ }
+ }
}