mirror of https://github.com/apache/poi.git
[bug-67396] add tests for standalone flag
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912456 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
99117381e5
commit
a9aa91a9ed
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue