aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/testcases
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2021-01-09 23:20:13 +0000
committerAndreas Beeker <kiwiwings@apache.org>2021-01-09 23:20:13 +0000
commitd6477fc14cdd96961409a3f479d3f9001ad1beef (patch)
tree462e180cba7e3385f84e10c65f8ac108161e8828 /src/ooxml/testcases
parent2457ece51eb74352a9c7ff4dc45444d7def9d6ef (diff)
downloadpoi-d6477fc14cdd96961409a3f479d3f9001ad1beef.tar.gz
poi-d6477fc14cdd96961409a3f479d3f9001ad1beef.zip
Sonar fixes
add asserts to tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885321 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/testcases')
-rw-r--r--src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java11
-rw-r--r--src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java82
-rw-r--r--src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestDecryptor.java10
-rw-r--r--src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFChartRemoveSeries.java37
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/XSSFMemoryLeakTests.java134
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java37
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java12
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java1
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFRow.java4
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java4
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java39
11 files changed, 185 insertions, 186 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java
index b6e72042c9..3ebd4041a3 100644
--- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java
+++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java
@@ -80,15 +80,10 @@ import org.junit.jupiter.api.Test;
public final class TestOPCComplianceCoreProperties {
@Test
- void testCorePropertiesPart() {
- OPCPackage pkg;
- try {
- InputStream is = openComplianceSampleStream("OPCCompliance_CoreProperties_OnlyOneCorePropertiesPart.docx");
- pkg = OPCPackage.open(is);
- } catch (InvalidFormatException | IOException e) {
- throw new RuntimeException(e);
+ void testCorePropertiesPart() throws IOException {
+ try (InputStream is = openComplianceSampleStream("OPCCompliance_CoreProperties_OnlyOneCorePropertiesPart.docx")) {
+ assertDoesNotThrow(() -> OPCPackage.open(is).close());
}
- pkg.revert();
}
private static String extractInvalidFormatMessage(String sampleNameSuffix) throws IOException {
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java
index a6b0c1a0ef..aab917ec63 100644
--- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java
+++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java
@@ -17,11 +17,15 @@
package org.apache.poi.openxml4j.opc.internal;
+import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.util.Arrays;
import java.util.List;
import org.apache.poi.ooxml.util.POIXMLUnits;
@@ -34,6 +38,7 @@ import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Sheet;
@@ -127,7 +132,6 @@ public final class TestContentTypeManager {
* Test the addition then removal of content types in a package.
*/
@Disabled
- @Test
void testContentTypeRemovalPackage() {
// TODO
}
@@ -145,48 +149,48 @@ public final class TestContentTypeManager {
void bug62629CombinePictures() throws Exception {
// this file has incorrect default content-types which caused problems in Apache POI
// we now handle this broken file more gracefully
- XSSFWorkbook book = XSSFTestDataSamples.openSampleWorkbook("62629_target.xlsm");
- XSSFWorkbook b = XSSFTestDataSamples.openSampleWorkbook("62629_toMerge.xlsx");
- for (int i = 0; i < b.getNumberOfSheets(); i++) {
- XSSFSheet sheet = book.createSheet(b.getSheetName(i));
- copyPictures(sheet, b.getSheetAt(i));
- }
-
- XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(book);
- wbBack.close();
- book.close();
- b.close();
- }
-
- private static void copyPictures(Sheet newSheet, Sheet sheet) {
- Drawing drawingOld = sheet.createDrawingPatriarch();
- Drawing drawingNew = newSheet.createDrawingPatriarch();
- CreationHelper helper = newSheet.getWorkbook().getCreationHelper();
- if (drawingNew instanceof XSSFDrawing) {
- List<XSSFShape> shapes = ((XSSFDrawing) drawingOld).getShapes();
- for (int i = 0; i < shapes.size(); i++) {
- if (shapes.get(i) instanceof XSSFPicture) {
- XSSFPicture pic = (XSSFPicture) shapes.get(i);
+ try (XSSFWorkbook targetWB = openSampleWorkbook("62629_target.xlsm");
+ XSSFWorkbook mergeWB = openSampleWorkbook("62629_toMerge.xlsx")) {
+ for (Sheet b_sheet : mergeWB) {
+ XSSFSheet sheet = targetWB.createSheet(b_sheet.getSheetName());
+
+ XSSFDrawing drawingOld = (XSSFDrawing)b_sheet.createDrawingPatriarch();
+ XSSFDrawing drawingNew = sheet.createDrawingPatriarch();
+ CreationHelper helper = sheet.getWorkbook().getCreationHelper();
+ List<XSSFShape> shapes = drawingOld.getShapes();
+
+ for (XSSFShape shape : shapes) {
+ assertTrue(shape instanceof XSSFPicture);
+ XSSFPicture pic = (XSSFPicture)shape;
XSSFPictureData picData = pic.getPictureData();
- int pictureIndex = newSheet.getWorkbook().addPicture(picData.getData(), picData.getPictureType());
- XSSFClientAnchor anchor = null;
- CTTwoCellAnchor oldAnchor = ((XSSFDrawing) drawingOld).getCTDrawing().getTwoCellAnchorArray(i);
- if (oldAnchor != null) {
- anchor = (XSSFClientAnchor) helper.createClientAnchor();
- CTMarker markerFrom = oldAnchor.getFrom();
- CTMarker markerTo = oldAnchor.getTo();
- anchor.setDx1((int) POIXMLUnits.parseLength(markerFrom.xgetColOff()));
- anchor.setDx2((int) POIXMLUnits.parseLength(markerTo.xgetColOff()));
- anchor.setDy1((int) POIXMLUnits.parseLength(markerFrom.xgetRowOff()));
- anchor.setDy2((int) POIXMLUnits.parseLength(markerTo.xgetRowOff()));
- anchor.setCol1(markerFrom.getCol());
- anchor.setCol2(markerTo.getCol());
- anchor.setRow1(markerFrom.getRow());
- anchor.setRow2(markerTo.getRow());
- }
+ int pictureIndex = targetWB.addPicture(picData.getData(), picData.getPictureType());
+ ClientAnchor oldAnchor = pic.getClientAnchor();
+ assertNotNull(oldAnchor);
+ ClientAnchor anchor = helper.createClientAnchor();
+ anchor.setAnchorType(oldAnchor.getAnchorType());
+ anchor.setDx1(oldAnchor.getDx1());
+ anchor.setDx2(oldAnchor.getDx2());
+ anchor.setDy1(oldAnchor.getDy1());
+ anchor.setDy2(oldAnchor.getDy2());
+ anchor.setCol1(oldAnchor.getCol1());
+ anchor.setCol2(oldAnchor.getCol2());
+ anchor.setRow1(oldAnchor.getRow1());
+ anchor.setRow2(oldAnchor.getRow2());
drawingNew.createPicture(anchor, pictureIndex);
}
}
+
+ try (XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(targetWB)) {
+ for (XSSFWorkbook wb : Arrays.asList(targetWB, mergeWB)) {
+ for (Sheet sheet : wb) {
+ XSSFSheet backSheet = wbBack.getSheet(sheet.getSheetName());
+ assertNotNull(backSheet);
+ XSSFDrawing origPat = (XSSFDrawing)sheet.createDrawingPatriarch();
+ XSSFDrawing backPat = backSheet.createDrawingPatriarch();
+ assertEquals(origPat.getShapes().size(), backPat.getShapes().size());
+ }
+ }
+ }
}
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestDecryptor.java b/src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestDecryptor.java
index abd3a06e5e..6e852a393f 100644
--- a/src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestDecryptor.java
+++ b/src/ooxml/testcases/org/apache/poi/poifs/crypt/tests/TestDecryptor.java
@@ -27,14 +27,18 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
import javax.crypto.Cipher;
+import org.apache.commons.codec.binary.Base64;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.apache.poi.POIDataSamples;
+import org.apache.poi.poifs.crypt.CryptoFunctions;
import org.apache.poi.poifs.crypt.Decryptor;
import org.apache.poi.poifs.crypt.EncryptionInfo;
+import org.apache.poi.poifs.crypt.HashAlgorithm;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.IOUtils;
@@ -158,7 +162,11 @@ public class TestDecryptor {
POIFSFileSystem pfs = new POIFSFileSystem(is)) {
EncryptionInfo info = new EncryptionInfo(pfs);
Decryptor dec = Decryptor.getInstance(info);
- dec.getDataStream(pfs).close();
+ MessageDigest md = CryptoFunctions.getMessageDigest(HashAlgorithm.sha256);
+ try (InputStream is2 = dec.getDataStream(pfs)) {
+ md.update(IOUtils.toByteArray(is2));
+ }
+ assertEquals("L1vDQq2EuMSfU/FBfVQfM2zfOY5Jx9ZyVgIQhXPPVgs=", Base64.encodeBase64String(md.digest()));
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFChartRemoveSeries.java b/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFChartRemoveSeries.java
index bce8c1f975..e49d7622cb 100644
--- a/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFChartRemoveSeries.java
+++ b/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFChartRemoveSeries.java
@@ -17,8 +17,10 @@
package org.apache.poi.xddf.usermodel.chart;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -99,17 +101,7 @@ public class TestXDDFChartRemoveSeries {
* This method writes the workbook to resultDir/fileName.
*/
@AfterEach
- void cleanup() {
- if (workbook == null) {
- System.out.println(String.format(Locale.ROOT, "%s: workbook==null", procName));
- return;
- }
-
- if (fileName == null) {
- System.out.println(String.format(Locale.ROOT, "%s: fileName==null", procName));
- return;
- }
-
+ void cleanup() throws IOException {
// Finish up
chart.plot(chartData);
final int index = workbook.getSheetIndex(sheet);
@@ -120,18 +112,8 @@ public class TestXDDFChartRemoveSeries {
final File file = new File(resultDir, fileName);
try (OutputStream fileOut = new FileOutputStream(file)) {
workbook.write(fileOut);
- System.out.println(
- String.format(Locale.ROOT, "%s: test file written to %s", procName, file.getAbsolutePath()));
- } catch (Exception e) {
- System.err.println(e.getMessage());
- } finally {
- try {
- workbook.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
}
+ workbook.close();
}
/**
@@ -144,11 +126,8 @@ public class TestXDDFChartRemoveSeries {
procName = "testRemoveSeries0";
fileName = procName + ".xlsx";
- try {
- chartData.getSeries().remove(0);
- } catch (UnsupportedOperationException uoe) {
- assertEquals(2, chartData.getSeriesCount());
- }
+ assertThrows(UnsupportedOperationException.class, () -> chartData.getSeries().remove(0));
+ assertEquals(2, chartData.getSeriesCount());
}
/**
@@ -186,6 +165,10 @@ public class TestXDDFChartRemoveSeries {
void testDontRemoveSeries() {
procName = "testDontRemoveSeries";
fileName = procName + ".xlsx";
+
+ IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> chartData.removeSeries(2));
+ assertEquals("removeSeries(2): illegal index", e.getMessage());
+ assertEquals(2, chartData.getSeriesCount());
}
} \ No newline at end of file
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/XSSFMemoryLeakTests.java b/src/ooxml/testcases/org/apache/poi/xssf/XSSFMemoryLeakTests.java
index f67068e90d..63737632cc 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/XSSFMemoryLeakTests.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/XSSFMemoryLeakTests.java
@@ -17,6 +17,7 @@
package org.apache.poi.xssf;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -61,88 +62,91 @@ public class XSSFMemoryLeakTests {
@Test
void testWriteRow() throws IOException {
- final XSSFWorkbook wb = new XSSFWorkbook();
- final XSSFSheet sheet1 = wb.createSheet("Sheet1");
- final XSSFRow row = sheet1.createRow(0);
- final XSSFCell cell = row.createCell(0);
- cell.setCellValue("hello");
-
- // Cannot check the CTCell here as it is reused now and thus
- // not freed until we free up the Cell itself
- //verifier.addObject(ctCell);
-
- try (OutputStream out = new ByteArrayOutputStream(8192)) {
- wb.write(out);
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
+ final XSSFSheet sheet1 = wb.createSheet("Sheet1");
+ final XSSFRow row = sheet1.createRow(0);
+ final XSSFCell cell = row.createCell(0);
+ cell.setCellValue("hello");
+
+ // Cannot check the CTCell here as it is reused now and thus
+ // not freed until we free up the Cell itself
+ //verifier.addObject(ctCell);
+
+ try (OutputStream out = new ByteArrayOutputStream(8192)) {
+ wb.write(out);
+ }
+
+ CTCell ctCell = cell.getCTCell();
+ assertSame(cell.getCTCell(), ctCell, "The CTCell should not be replaced");
+ assertSame(row.getCTRow().getCArray(0), ctCell, "The CTCell in the row should not be replaced");
}
-
- CTCell ctCell = cell.getCTCell();
- assertSame(cell.getCTCell(), ctCell, "The CTCell should not be replaced");
- assertSame(row.getCTRow().getCArray(0), ctCell, "The CTCell in the row should not be replaced");
-
- wb.close();
}
@Test
void testRemoveCellFromRow() throws IOException {
- final XSSFWorkbook wb = new XSSFWorkbook();
- final XSSFSheet sheet1 = wb.createSheet("Sheet1");
- final XSSFRow rowToCheck = sheet1.createRow(0);
- references.add(rowToCheck);
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
+ final XSSFSheet sheet1 = wb.createSheet("Sheet1");
+ final XSSFRow rowToCheck = sheet1.createRow(0);
+ references.add(rowToCheck);
- XSSFCell cell = rowToCheck.createCell(0);
- cell.setCellValue("hello");
+ XSSFCell cell = rowToCheck.createCell(0);
+ cell.setCellValue("hello");
- // previously the CTCell was still referenced in the CTRow, verify that it is freed
- verifier.addObject(cell);
- verifier.addObject(cell.getCTCell());
+ // previously the CTCell was still referenced in the CTRow, verify that it is freed
+ verifier.addObject(cell);
+ verifier.addObject(cell.getCTCell());
- rowToCheck.removeCell(cell);
+ rowToCheck.removeCell(cell);
- wb.close();
+ assertNull(rowToCheck.getCell(0));
+ }
}
@Test
void testRemove2CellsFromRow() throws IOException {
- final XSSFWorkbook wb = new XSSFWorkbook();
- final XSSFSheet sheet1 = wb.createSheet("Sheet1");
- final XSSFRow rowToCheck = sheet1.createRow(0);
- references.add(rowToCheck);
-
- XSSFCell cell1 = rowToCheck.createCell(0);
- cell1.setCellValue("hello");
- XSSFCell cell2 = rowToCheck.createCell(1);
- cell2.setCellValue("world");
-
- // previously the CTCell was still referenced in the CTRow, verify that it is freed
- verifier.addObject(cell1);
- verifier.addObject(cell1.getCTCell());
- verifier.addObject(cell2);
- verifier.addObject(cell2.getCTCell());
-
- rowToCheck.removeCell(cell2);
- rowToCheck.removeCell(cell1);
-
- wb.close();
+ try (XSSFWorkbook wb = new XSSFWorkbook()) {
+ final XSSFSheet sheet1 = wb.createSheet("Sheet1");
+ final XSSFRow rowToCheck = sheet1.createRow(0);
+ references.add(rowToCheck);
+
+ XSSFCell cell1 = rowToCheck.createCell(0);
+ cell1.setCellValue("hello");
+ XSSFCell cell2 = rowToCheck.createCell(1);
+ cell2.setCellValue("world");
+
+ // previously the CTCell was still referenced in the CTRow, verify that it is freed
+ verifier.addObject(cell1);
+ verifier.addObject(cell1.getCTCell());
+ verifier.addObject(cell2);
+ verifier.addObject(cell2.getCTCell());
+
+ rowToCheck.removeCell(cell2);
+ rowToCheck.removeCell(cell1);
+
+ assertNull(rowToCheck.getCell(0));
+ assertNull(rowToCheck.getCell(1));
+ }
}
@Test
void testRemoveRowFromSheet() throws IOException {
- final XSSFWorkbook wb1 = new XSSFWorkbook();
- final XSSFSheet sheetToCheck = wb1.createSheet("Sheet1");
- references.add(sheetToCheck);
- final XSSFRow row = sheetToCheck.createRow(0);
- final XSSFCell cell = row.createCell(0);
- cell.setCellValue(1);
-
- // ensure that the row-data is not kept somewhere in another member
- verifier.addObject(row.getCTRow());
- verifier.addObject(row);
- verifier.addObject(cell.getCTCell());
- verifier.addObject(cell);
-
- sheetToCheck.removeRow(row);
-
- wb1.close();
+ try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
+ final XSSFSheet sheetToCheck = wb1.createSheet("Sheet1");
+ references.add(sheetToCheck);
+ final XSSFRow row = sheetToCheck.createRow(0);
+ final XSSFCell cell = row.createCell(0);
+ cell.setCellValue(1);
+
+ // ensure that the row-data is not kept somewhere in another member
+ verifier.addObject(row.getCTRow());
+ verifier.addObject(row);
+ verifier.addObject(cell.getCTCell());
+ verifier.addObject(cell);
+
+ sheetToCheck.removeRow(row);
+
+ assertNull(sheetToCheck.getRow(0));
+ }
}
@Test
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java b/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
index 060ead5620..4c89852f9e 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
@@ -27,15 +27,21 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
+import java.io.IOException;
import java.io.InputStream;
+import java.security.MessageDigest;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import org.apache.commons.codec.binary.Base64;
import org.apache.poi.POIDataSamples;
import org.apache.poi.ooxml.POIXMLException;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.poifs.crypt.CryptoFunctions;
+import org.apache.poi.poifs.crypt.HashAlgorithm;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.util.IOUtils;
@@ -187,12 +193,7 @@ public final class TestXSSFReader {
void test50119() throws Exception {
try (OPCPackage pkg = XSSFTestDataSamples.openSamplePackage("WithChartSheet.xlsx")) {
XSSFReader r = new XSSFReader(pkg);
- XSSFReader.SheetIterator it = (XSSFReader.SheetIterator) r.getSheetsData();
-
- while (it.hasNext()) {
- InputStream stream = it.next();
- stream.close();
- }
+ assertEquals("bxdf4aa1n9VLkn/4++RNhoygSelxWDM2Can1m9TLlTw=", hash(r));
}
}
@@ -330,16 +331,24 @@ public final class TestXSSFReader {
void test64420() throws Exception {
try (OPCPackage pkg = OPCPackage.open(_ssTests.openResourceAsStream("64420.xlsm"))) {
XSSFReader reader = new XSSFReader(pkg);
+ assertEquals("U/j5UN7LN8wH6Gw/gsn6pCMASz+Nb1euCsFtC8tAPm0=", hash(reader));
+ }
+ }
- Iterator<InputStream> iter = reader.getSheetsData();
- byte[] data = new byte[4096];
- while (iter.hasNext()) {
- InputStream stream = iter.next();
- assertNotNull(stream);
- int read = IOUtils.readFully(stream, data);
- assertTrue(read > 0);
- stream.close();
+ private static String hash(XSSFReader reader) throws IOException {
+ Iterable<InputStream> iter = () -> {
+ try {
+ return reader.getSheetsData();
+ } catch (IOException | InvalidFormatException e) {
+ throw new RuntimeException(e);
}
+ };
+
+ MessageDigest md = CryptoFunctions.getMessageDigest(HashAlgorithm.sha256);
+ for (InputStream is : iter) {
+ md.update(IOUtils.toByteArray(is));
}
+
+ return Base64.encodeBase64String(md.digest());
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java b/src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java
index e6792636c0..a18313b577 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/model/TestStylesTable.java
@@ -196,15 +196,11 @@ public final class TestStylesTable {
try (XSSFWorkbook wb = new XSSFWorkbook()) {
StylesTable styles = wb.getStylesSource();
for (int i = 0; i < styles.getMaxNumberOfDataFormats(); i++) {
- wb.getStylesSource().putNumberFormat("\"test" + i + " \"0");
- }
- try {
- wb.getStylesSource().putNumberFormat("\"anotherformat \"0");
- } catch (final IllegalStateException e) {
- if (!e.getMessage().startsWith("The maximum number of Data Formats was exceeded.")) {
- throw e;
- }
+ styles.putNumberFormat("\"test" + i + " \"0");
}
+ IllegalStateException e = assertThrows(IllegalStateException.class,
+ () -> styles.putNumberFormat("\"anotherformat \"0"));
+ assertTrue(e.getMessage().startsWith("The maximum number of Data Formats was exceeded."));
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java
index 4fada399c3..b007d9b905 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java
@@ -181,7 +181,6 @@ public final class TestSXSSFFormulaEvaluation extends BaseTestFormulaEvaluator
wb.close();
}
- @Test
@Disabled(
"This test is disabled because it fails for SXSSF because " +
"handling of errors in formulas is slightly different than in XSSF, " +
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFRow.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFRow.java
index a44bdaf30b..59a18bc7e5 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFRow.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFRow.java
@@ -41,13 +41,13 @@ public final class TestSXSSFRow extends BaseTestXRow {
}
@Override
- @Disabled("see <https://bz.apache.org/bugzilla/show_bug.cgi?id=62030#c1>") @Test
+ @Disabled("see <https://bz.apache.org/bugzilla/show_bug.cgi?id=62030#c1>")
protected void testCellShiftingRight(){
// Remove when SXSSFRow.shiftCellsRight() is implemented.
}
@Override
- @Disabled("see <https://bz.apache.org/bugzilla/show_bug.cgi?id=62030#c1>") @Test
+ @Disabled("see <https://bz.apache.org/bugzilla/show_bug.cgi?id=62030#c1>")
protected void testCellShiftingLeft(){
// Remove when SXSSFRow.shiftCellsLeft() is implemented.
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java
index 605b53d12e..485518ab57 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java
@@ -16,6 +16,7 @@
==================================================================== */
package org.apache.poi.xssf.streaming;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -97,7 +98,8 @@ public class TestSXSSFSheetAutoSizeColumn {
sheet.trackAllColumnsForAutoSizing();
for (int i = 0; i < 10; i++) {
- sheet.autoSizeColumn(i, useMergedCells);
+ int i2 = i;
+ assertDoesNotThrow(() -> sheet.autoSizeColumn(i2, useMergedCells));
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
index b53706a12a..7789dc6a40 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
@@ -21,6 +21,7 @@ package org.apache.poi.xssf.streaming;
import static org.apache.poi.POITestCase.assertEndsWith;
import static org.apache.poi.POITestCase.assertStartsWith;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -359,7 +360,6 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook {
@Disabled("Crashes the JVM because of documented JVM behavior with concurrent writing/reading of zip-files, "
+ "see http://www.oracle.com/technetwork/java/javase/documentation/overview-156328.html")
- @Test
void bug53515a() throws Exception {
File out = new File("Test.xlsx");
assertTrue(!out.exists() || out.delete());
@@ -382,7 +382,7 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook {
System.gc();
}
- wb.write(outSteam);
+ wb.write(outSteam);
// assertTrue(wb.dispose());
outSteam.close();
} finally {
@@ -456,26 +456,25 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook {
*/
@Test
void testZipBombNotTriggeredOnUselessContent() throws IOException {
- SXSSFWorkbook swb = new SXSSFWorkbook(null, 1, true, true);
- SXSSFSheet s = swb.createSheet();
- char[] useless = new char[32767];
- Arrays.fill(useless, ' ');
-
- for (int row=0; row<1; row++) {
- Row r = s.createRow(row);
- for (int col=0; col<10; col++) {
- char[] prefix = Integer.toHexString(row * 1000 + col).toCharArray();
- Arrays.fill(useless, 0, 10, ' ');
- System.arraycopy(prefix, 0, useless, 0, prefix.length);
- String ul = new String(useless);
- r.createCell(col, CellType.STRING).setCellValue(ul);
+ try (SXSSFWorkbook swb = new SXSSFWorkbook(null, 1, true, true)) {
+ SXSSFSheet s = swb.createSheet();
+ char[] useless = new char[32767];
+ Arrays.fill(useless, ' ');
+
+ for (int row = 0; row < 1; row++) {
+ Row r = s.createRow(row);
+ for (int col = 0; col < 10; col++) {
+ char[] prefix = Integer.toHexString(row * 1000 + col).toCharArray();
+ Arrays.fill(useless, 0, 10, ' ');
+ System.arraycopy(prefix, 0, useless, 0, prefix.length);
+ String ul = new String(useless);
+ r.createCell(col, CellType.STRING).setCellValue(ul);
+ }
}
- }
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- swb.write(bos);
- swb.dispose();
- swb.close();
+ assertDoesNotThrow(() -> swb.write(new NullOutputStream()));
+ swb.dispose();
+ }
}
/**