You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2021/01/30 18:41:58 UTC

svn commit: r1886060 - in /poi/trunk/src: ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java

Author: centic
Date: Sat Jan 30 18:41:57 2021
New Revision: 1886060

URL: http://svn.apache.org/viewvc?rev=1886060&view=rev
Log:
Enable storing an SXSSF workbook twice

Verify this via a unit-test for all types of workbooks
Add a test to verify the contents is byte-for-byte equal
Also remove an overwritten test which works the same now for all three workbook-types

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java
    poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java?rev=1886060&r1=1886059&r2=1886060&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java Sat Jan 30 18:41:57 2021
@@ -131,7 +131,7 @@ public class SheetDataWriter implements
      * This method <em>must</em> be invoked before calling {@link #getWorksheetXMLInputStream()}
      */
     public void close() throws IOException {
-        _out.flush();
+        // this would break writing the same document multiple times: _out.flush();
         _out.close();
     }
 

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java?rev=1886060&r1=1886059&r2=1886060&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java Sat Jan 30 18:41:57 2021
@@ -101,20 +101,6 @@ public final class TestSXSSFBugs extends
         wb2.close();
     }
 
-    // bug 60197: setSheetOrder should update sheet-scoped named ranges to maintain references to the sheets before the re-order
-    @Test
-    @Override
-    protected void bug60197_NamedRangesReferToCorrectSheetWhenSheetOrderIsChanged() throws Exception {
-        // expected on the second time that _testDataProvider.writeOutAndReadBack(SXSSFWorkbook) is called
-        // if the test makes it this far, then we know that XSSFName sheet indices are updated when sheet
-        // order is changed, which is the purpose of this test. Therefore, consider this a passing test.
-        RuntimeException e =
-            assertThrows(RuntimeException.class, () -> super.bug60197_NamedRangesReferToCorrectSheetWhenSheetOrderIsChanged());
-        Throwable cause = e.getCause();
-        assertTrue(cause instanceof IOException);
-        assertEquals("Stream closed", cause.getMessage());
-    }
-
     @Test
     void bug61648() throws Exception {
         // works as expected

Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java?rev=1886060&r1=1886059&r2=1886060&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java Sat Jan 30 18:41:57 2021
@@ -17,6 +17,7 @@
 
 package org.apache.poi.ss.usermodel;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -30,6 +31,7 @@ import java.awt.font.FontRenderContext;
 import java.awt.font.TextAttribute;
 import java.awt.font.TextLayout;
 import java.awt.geom.Rectangle2D;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.text.AttributedString;
 import java.util.HashMap;
@@ -106,7 +108,6 @@ public abstract class BaseTestBugzillaIs
     /**
      * test writing a file with large number of unique strings,
      * open resulting file in Excel to check results!
-     * @param  num the number of strings to generate
      */
     @Test
     public final void bug15375_2() throws IOException {
@@ -1804,4 +1805,32 @@ public abstract class BaseTestBugzillaIs
         FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator();
         assertEquals(expectedResultOrNull, eval.evaluate(intF).formatAsString());
     }
+
+    @Test
+    void testWriteDocumentTwice() throws Exception {
+        try (Workbook wb = _testDataProvider.createWorkbook()) {
+            Sheet sheet = wb.createSheet("RawData");
+            Row row = sheet.createRow(0);
+            Cell cell;
+
+            cell = row.createCell(0);
+            cell.setCellValue("Ernie & Bert");
+
+            cell = row.createCell(1);
+            // Set a precalculated formula value containing a special character.
+            cell.setCellValue("Ernie & Bert are cool!");
+            cell.setCellFormula("A1 & \" are cool!\"");
+
+            try (ByteArrayOutputStream out1 = new ByteArrayOutputStream();
+                 ByteArrayOutputStream out2 = new ByteArrayOutputStream()) {
+                wb.write(out1);
+                wb.write(out2);
+
+                out1.flush();
+                out2.flush();
+
+                assertArrayEquals(out1.toByteArray(), out2.toByteArray());
+            }
+        }
+    }
 }
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org