You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2019/12/22 21:44:48 UTC

svn commit: r1871911 [15/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi/hssf/eventusermodel/dummyrecord/ java/org/apache/p...

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java?rev=1871911&r1=1871910&r2=1871911&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java Sun Dec 22 21:44:45 2019
@@ -18,23 +18,34 @@
 package org.apache.poi.hssf.record;
 
 import junit.framework.TestCase;
-
 import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
 import org.apache.poi.util.IntMapper;
+import org.apache.poi.util.LittleEndianConsts;
 
 /**
  * Tests that records size calculates correctly.
- * 
+ *
  * @author Glen Stampoultzis (glens at apache.org)
  */
 public final class TestSSTRecordSizeCalculator extends TestCase {
 	private static final String SMALL_STRING = "Small string";
 	private static final int COMPRESSED_PLAIN_STRING_OVERHEAD = 3;
 	private static final int OPTION_FIELD_SIZE = 1;
-	
+
 	private final IntMapper<UnicodeString> strings = new IntMapper<>();
 
+
+	/** standard record overhead: two shorts (record id plus data space size)*/
+	private static final int STD_RECORD_OVERHEAD = 2 * LittleEndianConsts.SHORT_SIZE;
+
+	/** SST overhead: the standard record overhead, plus the number of strings and the number of unique strings -- two ints */
+	private static final int SST_RECORD_OVERHEAD = STD_RECORD_OVERHEAD + 2 * LittleEndianConsts.INT_SIZE;
+
+	/** how much data can we stuff into an SST record? That would be _max minus the standard SST record overhead */
+	private static final int MAX_DATA_SPACE = RecordInputStream.MAX_RECORD_DATA_SIZE - 8;
+
+
 	private void confirmSize(int expectedSize) {
 		ContinuableRecordOutput cro = ContinuableRecordOutput.createForCountingOnly();
 		SSTSerializer ss = new SSTSerializer(strings, 0, 0);
@@ -44,64 +55,64 @@ public final class TestSSTRecordSizeCalc
 
 	public void testBasic() {
 		strings.add(makeUnicodeString(SMALL_STRING));
-		confirmSize(SSTRecord.SST_RECORD_OVERHEAD
+		confirmSize(SST_RECORD_OVERHEAD
 				+ COMPRESSED_PLAIN_STRING_OVERHEAD
 				+ SMALL_STRING.length());
 	}
 
 	public void testBigStringAcrossUnicode() {
-		int bigString = SSTRecord.MAX_DATA_SPACE + 100;
+		int bigString = MAX_DATA_SPACE + 100;
 		strings.add(makeUnicodeString(bigString));
-		confirmSize(SSTRecord.SST_RECORD_OVERHEAD
+		confirmSize(SST_RECORD_OVERHEAD
 				+ COMPRESSED_PLAIN_STRING_OVERHEAD
-				+ SSTRecord.MAX_DATA_SPACE
-				+ SSTRecord.STD_RECORD_OVERHEAD
+				+ MAX_DATA_SPACE
+				+ STD_RECORD_OVERHEAD
 				+ OPTION_FIELD_SIZE
 				+ 100);
 	}
 
 	public void testPerfectFit() {
-		int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
+		int perfectFit = MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
 		strings.add(makeUnicodeString(perfectFit));
-		confirmSize(SSTRecord.SST_RECORD_OVERHEAD
+		confirmSize(SST_RECORD_OVERHEAD
 				+ COMPRESSED_PLAIN_STRING_OVERHEAD
 				+ perfectFit);
 	}
 
 	public void testJustOversized() {
-		int tooBig = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1;
+		int tooBig = MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1;
 		strings.add(makeUnicodeString(tooBig));
-		confirmSize(SSTRecord.SST_RECORD_OVERHEAD
+		confirmSize(SST_RECORD_OVERHEAD
 				+ COMPRESSED_PLAIN_STRING_OVERHEAD
 				+ tooBig - 1
 				// continue record
-				+ SSTRecord.STD_RECORD_OVERHEAD
+				+ STD_RECORD_OVERHEAD
 				+ OPTION_FIELD_SIZE + 1);
 
 	}
 
 	public void testSecondStringStartsOnNewContinuation() {
-		int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
+		int perfectFit = MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
 		strings.add(makeUnicodeString(perfectFit));
 		strings.add(makeUnicodeString(SMALL_STRING));
-		confirmSize(SSTRecord.SST_RECORD_OVERHEAD
-				+ SSTRecord.MAX_DATA_SPACE
+		confirmSize(SST_RECORD_OVERHEAD
+				+ MAX_DATA_SPACE
 				// second string
-				+ SSTRecord.STD_RECORD_OVERHEAD
+				+ STD_RECORD_OVERHEAD
 				+ COMPRESSED_PLAIN_STRING_OVERHEAD
 				+ SMALL_STRING.length());
 	}
 
 	public void testHeaderCrossesNormalContinuePoint() {
-		int almostPerfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD - 2;
+		int almostPerfectFit = MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD - 2;
 		strings.add(makeUnicodeString(almostPerfectFit));
 		String oneCharString = new String(new char[1]);
 		strings.add(makeUnicodeString(oneCharString));
-		confirmSize(SSTRecord.SST_RECORD_OVERHEAD
+		confirmSize(SST_RECORD_OVERHEAD
 				+ COMPRESSED_PLAIN_STRING_OVERHEAD
 				+ almostPerfectFit
 				// second string
-				+ SSTRecord.STD_RECORD_OVERHEAD
+				+ STD_RECORD_OVERHEAD
 				+ COMPRESSED_PLAIN_STRING_OVERHEAD
 				+ oneCharString.length());
 

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java?rev=1871911&r1=1871910&r2=1871911&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java Sun Dec 22 21:44:45 2019
@@ -139,7 +139,7 @@ public final class TestTextObjectRecord
         obj.setStr( str );
 
 
-        TextObjectRecord cloned = (TextObjectRecord)obj.clone();
+        TextObjectRecord cloned = obj.copy();
         assertEquals(obj.getRecordSize(), cloned.getRecordSize());
         assertEquals(obj.getHorizontalTextAlignment(), cloned.getHorizontalTextAlignment());
         assertEquals(obj.getStr().getString(), cloned.getStr().getString());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java?rev=1871911&r1=1871910&r2=1871911&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java Sun Dec 22 21:44:45 2019
@@ -26,8 +26,6 @@ import java.io.IOException;
 import org.apache.poi.hssf.record.ContinueRecord;
 import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.record.SSTRecord;
-import org.apache.poi.hssf.record.common.UnicodeString.ExtRst;
-import org.apache.poi.hssf.record.common.UnicodeString.FormatRun;
 import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
 import org.apache.poi.hssf.usermodel.HSSFOptimiser;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -93,9 +91,9 @@ public final class TestUnicodeString {
         //Test a compressed small string that has rich text formatting
         s.setString("Test");
         s.setOptionFlags((byte)0x8);
-        UnicodeString.FormatRun r = new UnicodeString.FormatRun((short)0,(short)1);
+        FormatRun r = new FormatRun((short)0,(short)1);
         s.addFormatRun(r);
-        UnicodeString.FormatRun r2 = new UnicodeString.FormatRun((short)2,(short)2);
+        FormatRun r2 = new FormatRun((short)2,(short)2);
         s.addFormatRun(r2);
         confirmSize(17, s);
 
@@ -108,7 +106,7 @@ public final class TestUnicodeString {
         s.setString("Test");
         s.setOptionFlags((byte)0xC);
         confirmSize(17, s);
-        
+
         // Extended phonetics data
         // Minimum size is 14
         // Also adds 4 bytes to hold the length
@@ -121,7 +119,7 @@ public final class TestUnicodeString {
         s.setString(STR_16_BIT);
         s.setOptionFlags((byte)0xD);
         confirmSize(39, s);
-        
+
         s.setExtendedRst(null);
         confirmSize(21, s);
     }
@@ -144,8 +142,8 @@ public final class TestUnicodeString {
     public void perfectRichStringSize() {
       //Test a rich text string
       UnicodeString s = makeUnicodeString(MAX_DATA_SIZE-2-1-8-2);
-      s.addFormatRun(new UnicodeString.FormatRun((short)1,(short)0));
-      s.addFormatRun(new UnicodeString.FormatRun((short)2,(short)1));
+      s.addFormatRun(new FormatRun((short)1,(short)0));
+      s.addFormatRun(new FormatRun((short)2,(short)1));
       s.setOptionFlags((byte)0x8);
       confirmSize(MAX_DATA_SIZE, s);
 
@@ -153,8 +151,8 @@ public final class TestUnicodeString {
       //Note that we can only ever get to a maximum size of 8227 since an uncompressed
       //string is writing double bytes.
       s = makeUnicodeString((MAX_DATA_SIZE-2-1-8-2)/2, true);
-      s.addFormatRun(new UnicodeString.FormatRun((short)1,(short)0));
-      s.addFormatRun(new UnicodeString.FormatRun((short)2,(short)1));
+      s.addFormatRun(new FormatRun((short)1,(short)0));
+      s.addFormatRun(new FormatRun((short)2,(short)1));
       s.setOptionFlags((byte)0x9);
       confirmSize(MAX_DATA_SIZE-1, s);
     }
@@ -180,25 +178,25 @@ public final class TestUnicodeString {
       UnicodeString s = makeUnicodeString(strSize);
       confirmSize(MAX_DATA_SIZE*2, s);
     }
-    
+
     @Test
     public void formatRun() {
        FormatRun fr = new FormatRun((short)4, (short)0x15c);
        assertEquals(4, fr.getCharacterPos());
        assertEquals(0x15c, fr.getFontIndex());
-       
+
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        LittleEndianOutputStream out = new LittleEndianOutputStream(baos);
-       
+
        fr.serialize(out);
-       
+
        byte[] b = baos.toByteArray();
        assertEquals(4, b.length);
        assertEquals(4, b[0]);
        assertEquals(0, b[1]);
        assertEquals(0x5c, b[2]);
        assertEquals(0x01, b[3]);
-       
+
        LittleEndianInputStream inp = new LittleEndianInputStream(
              new ByteArrayInputStream(b)
        );
@@ -206,34 +204,34 @@ public final class TestUnicodeString {
        assertEquals(4, fr.getCharacterPos());
        assertEquals(0x15c, fr.getFontIndex());
     }
-    
+
     @Test
     public void extRstFromEmpty() {
        ExtRst ext = new ExtRst();
-       
+
        assertEquals(0, ext.getNumberOfRuns());
        assertEquals(0, ext.getFormattingFontIndex());
        assertEquals(0, ext.getFormattingOptions());
        assertEquals("", ext.getPhoneticText());
        assertEquals(0, ext.getPhRuns().length);
        assertEquals(10, ext.getDataSize()); // Excludes 4 byte header
-       
+
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        LittleEndianOutputStream out = new LittleEndianOutputStream(baos);
        ContinuableRecordOutput cout = new ContinuableRecordOutput(out, 0xffff);
-       
+
        ext.serialize(cout);
        cout.writeContinue();
-       
+
        byte[] b = baos.toByteArray();
        assertEquals(20, b.length);
-       
+
        // First 4 bytes from the outputstream
        assertEquals(-1, b[0]);
        assertEquals(-1, b[1]);
        assertEquals(14, b[2]);
        assertEquals(0, b[3]);
-       
+
        // Reserved
        assertEquals(1, b[4]);
        assertEquals(0, b[5]);
@@ -253,12 +251,12 @@ public final class TestUnicodeString {
        assertEquals(0, b[15]);
        assertEquals(0, b[16]);
        assertEquals(0, b[17]);
-       
+
        // Last 2 bytes from the outputstream
        assertEquals(ContinueRecord.sid, b[18]);
        assertEquals(0, b[19]);
-       
-       
+
+
        // Load in again and re-test
        byte[] data = new byte[14];
        System.arraycopy(b, 4, data, 0, data.length);
@@ -266,14 +264,14 @@ public final class TestUnicodeString {
              new ByteArrayInputStream(data)
        );
        ext = new ExtRst(inp, data.length);
-       
+
        assertEquals(0, ext.getNumberOfRuns());
        assertEquals(0, ext.getFormattingFontIndex());
        assertEquals(0, ext.getFormattingOptions());
        assertEquals("", ext.getPhoneticText());
        assertEquals(0, ext.getPhRuns().length);
     }
-    
+
     @Test
     public void extRstFromData() {
        byte[] data = new byte[] {
@@ -284,39 +282,39 @@ public final class TestUnicodeString {
                0, 0 // Cruft at the end, as found from real files
        };
        assertEquals(16, data.length);
-       
+
        LittleEndianInputStream inp = new LittleEndianInputStream(
              new ByteArrayInputStream(data)
        );
        ExtRst ext = new ExtRst(inp, data.length);
        assertEquals(0x0c, ext.getDataSize()); // Excludes 4 byte header
-       
+
        assertEquals(0, ext.getNumberOfRuns());
        assertEquals(0x37, ext.getFormattingOptions());
        assertEquals(0, ext.getFormattingFontIndex());
        assertEquals("", ext.getPhoneticText());
        assertEquals(0, ext.getPhRuns().length);
     }
-    
+
     @Test
     public void corruptExtRstDetection() {
        byte[] data = new byte[] {
-             0x79, 0x79, 0x11, 0x11, 
-             0x22, 0x22, 0x33, 0x33, 
+             0x79, 0x79, 0x11, 0x11,
+             0x22, 0x22, 0x33, 0x33,
        };
        assertEquals(8, data.length);
-       
+
        LittleEndianInputStream inp = new LittleEndianInputStream(
              new ByteArrayInputStream(data)
        );
        ExtRst ext = new ExtRst(inp, data.length);
-       
+
        // Will be empty
        assertEquals(ext, new ExtRst());
 
        // If written, will be the usual size
        assertEquals(10, ext.getDataSize()); // Excludes 4 byte header
-     
+
        // Is empty
        assertEquals(0, ext.getNumberOfRuns());
        assertEquals(0, ext.getFormattingOptions());
@@ -342,12 +340,12 @@ public final class TestUnicodeString {
         bos.writeShort(1);
         bos.writeShort(3);
         bos.writeShort(42);
-        
+
         LittleEndianInput in = new LittleEndianByteArrayInputStream(buf, 0, bos.getWriteIndex());
-        UnicodeString.ExtRst extRst1 = new UnicodeString.ExtRst(in, bos.getWriteIndex());
+        ExtRst extRst1 = new ExtRst(in, bos.getWriteIndex());
         in = new LittleEndianByteArrayInputStream(buf, 0, bos.getWriteIndex());
-        UnicodeString.ExtRst extRst2 = new UnicodeString.ExtRst(in, bos.getWriteIndex());
-        
+        ExtRst extRst2 = new ExtRst(in, bos.getWriteIndex());
+
         assertEquals(extRst1, extRst2);
         assertEquals(extRst1.hashCode(), extRst2.hashCode());
     }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=1871911&r1=1871910&r2=1871911&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java Sun Dec 22 21:44:45 2019
@@ -77,7 +77,7 @@ import org.junit.Test;
  */
 public final class TestHSSFWorkbook extends BaseTestWorkbook {
     private static final HSSFITestDataProvider _testDataProvider = HSSFITestDataProvider.instance;
-    
+
     public TestHSSFWorkbook() {
         super(_testDataProvider);
     }
@@ -215,10 +215,10 @@ public final class TestHSSFWorkbook exte
         confirmActiveSelected(sheet2, true);
         confirmActiveSelected(sheet3, false);
         confirmActiveSelected(sheet4, false);
-        
+
         wb.close();
     }
-    
+
     private static List<Integer> arrayToList(int[] array) {
         List<Integer> list = new ArrayList<>(array.length);
         for ( Integer element : array ) {
@@ -226,7 +226,7 @@ public final class TestHSSFWorkbook exte
         }
         return list;
     }
-    
+
     private static void assertCollectionsEquals(Collection<Integer> expected, Collection<Integer> actual) {
         assertEquals("size", expected.size(), actual.size());
         for (int e : expected) {
@@ -247,7 +247,7 @@ public final class TestHSSFWorkbook exte
         HSSFSheet sheet4 = wb.createSheet("Sheet4");
         HSSFSheet sheet5 = wb.createSheet("Sheet5");
 
-        
+
         List<Integer> selected = arrayToList(new int[] { 0, 2, 3 });
         wb.setSelectedTabs(selected);
 
@@ -292,7 +292,7 @@ public final class TestHSSFWorkbook exte
                 throw new RuntimeException(e);
             }
         }*/
-        
+
         wb.close();
     }
 
@@ -358,7 +358,7 @@ public final class TestHSSFWorkbook exte
         // The last remaining sheet should always be active+selected
         wb.removeSheetAt(1);
         confirmActiveSelected(sheet0, true,  true);
-        
+
         wb.close();
     }
 
@@ -394,7 +394,7 @@ public final class TestHSSFWorkbook exte
             // Expected badly behaved sheet record to cause exception
             assertTrue(e.getMessage().startsWith("Actual serialized sheet size"));
         }
-        
+
         wb.close();
     }
 
@@ -482,7 +482,7 @@ public final class TestHSSFWorkbook exte
         assertEquals("OnSheet3", n.getNameName());
         assertEquals("Sheet3", n.getSheetName());
         assertEquals("Sheet3!$A$1:$A$2", n.getRefersToFormula());
-        
+
         b.close();
     }
 
@@ -505,6 +505,10 @@ public final class TestHSSFWorkbook exte
 		public int getRecordSize() {
             return 8;
         }
+        @Override
+        public BadlyBehavedRecord copy() {
+            return null;
+        }
     }
 
     /**
@@ -571,12 +575,12 @@ public final class TestHSSFWorkbook exte
         ClassID clsid2 = fs2.getRoot().getStorageClsid();
 
         assertEquals(clsid1, clsid2);
-        
+
         fs2.close();
         wb.close();
         fs1.close();
     }
-    
+
     /**
      * If we try to open an old (pre-97) workbook, we get a helpful
      *  Exception give to explain what we've done wrong
@@ -591,7 +595,7 @@ public final class TestHSSFWorkbook exte
             assertContains(e.getMessage(), "BIFF4");
         }
         excel4.close();
-        
+
         InputStream excel5 = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("testEXCEL_5.xls");
         try {
             new HSSFWorkbook(excel5).close();
@@ -600,7 +604,7 @@ public final class TestHSSFWorkbook exte
             assertContains(e.getMessage(), "BIFF5");
         }
         excel5.close();
-        
+
         InputStream excel95 = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("testEXCEL_95.xls");
         try {
             new HSSFWorkbook(excel95).close();
@@ -722,7 +726,7 @@ public final class TestHSSFWorkbook exte
                     "You can define up to 4000 styles in a .xls workbook", e.getMessage());
         }
         assertEquals(MAX_STYLES, wb.getNumCellStyles());
-        
+
         wb.close();
     }
 
@@ -809,7 +813,7 @@ public final class TestHSSFWorkbook exte
             EscherBSERecord bse = iwb.getBSERecord(pictureIndex);
             assertEquals(3, bse.getRef());
         }
-        
+
         wb.close();
     }
 
@@ -829,7 +833,7 @@ public final class TestHSSFWorkbook exte
     @Test
     public void selectedSheetShort() throws IOException {
         HSSFWorkbook wb=new HSSFWorkbook();
-        
+
         HSSFSheet sheet1 = wb.createSheet("Sheet1");
         HSSFSheet sheet2 = wb.createSheet("Sheet2");
         HSSFSheet sheet3 = wb.createSheet("Sheet3");
@@ -895,7 +899,7 @@ public final class TestHSSFWorkbook exte
         } catch (IllegalArgumentException e) {
             assertTrue(e.getMessage(), e.getMessage().contains("outside the allowable range"));
         }
-        
+
         wb.close();
     }
 
@@ -905,7 +909,7 @@ public final class TestHSSFWorkbook exte
         wb.insertChartRecord();
         //wb.dumpDrawingGroupRecords(true);
         //wb.dumpDrawingGroupRecords(false);
-        
+
         wb.close();
     }
 
@@ -917,7 +921,7 @@ public final class TestHSSFWorkbook exte
 
         wb.writeProtectWorkbook("mypassword", "myuser");
         assertTrue(wb.isWriteProtected());
-        
+
 //        OutputStream os = new FileOutputStream("/tmp/protected.xls");
 //        try {
 //            wb.write(os);
@@ -1008,7 +1012,7 @@ public final class TestHSSFWorkbook exte
 		read.close();
 		wb.close();
 	}
-	
+
     @Test
 	public void bug54500() throws Exception {
 		String nameName = "AName";
@@ -1016,7 +1020,7 @@ public final class TestHSSFWorkbook exte
 		HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("54500.xls");
 
 		assertSheetOrder(wb, "Sheet1", "Sheet2", "Sheet3");
-		
+
 		wb.createSheet(sheetName);
 
 		assertSheetOrder(wb, "Sheet1", "Sheet2", "Sheet3", "ASheet");
@@ -1030,7 +1034,7 @@ public final class TestHSSFWorkbook exte
         final HSSFName name = wb.getName(nameName);
         assertNotNull(name);
         assertEquals("ASheet!A1", name.getRefersToFormula());
-		
+
 		ByteArrayOutputStream stream = new ByteArrayOutputStream();
 		wb.write(stream);
 
@@ -1068,7 +1072,7 @@ public final class TestHSSFWorkbook exte
 	public void test49423() throws Exception
     {
 		HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("49423.xls");
-		
+
 		boolean found = false;
         int numSheets = workbook.getNumberOfSheets();
         for (int i = 0; i < numSheets; i++) {
@@ -1076,7 +1080,7 @@ public final class TestHSSFWorkbook exte
             List<HSSFShape> shapes = sheet.getDrawingPatriarch().getChildren();
             for(HSSFShape shape : shapes){
                 HSSFAnchor anchor = shape.getAnchor();
-    
+
                 if(anchor instanceof HSSFClientAnchor){
                     // absolute coordinates
                     HSSFClientAnchor clientAnchor = (HSSFClientAnchor)anchor;
@@ -1084,7 +1088,7 @@ public final class TestHSSFWorkbook exte
                     //System.out.println(clientAnchor.getRow1() + "," + clientAnchor.getRow2());
                     found = true;
                 } else if (anchor instanceof HSSFChildAnchor){
-                    // shape is grouped and the anchor is expressed in the coordinate system of the group 
+                    // shape is grouped and the anchor is expressed in the coordinate system of the group
                     HSSFChildAnchor childAnchor = (HSSFChildAnchor)anchor;
                     assertNotNull(childAnchor);
                     //System.out.println(childAnchor.getDy1() + "," + childAnchor.getDy2());
@@ -1092,7 +1096,7 @@ public final class TestHSSFWorkbook exte
                 }
             }
         }
-        
+
         assertTrue("Should find some images via Client or Child anchors, but did not find any at all", found);
         workbook.close();
     }
@@ -1108,10 +1112,10 @@ public final class TestHSSFWorkbook exte
                 final Sheet sheet = workbook.createSheet("foo");
                 final Row row = sheet.createRow(1);
                 row.createCell(1).setCellValue("bar");
-                
+
                 writeAndCloseWorkbook(workbook, file);
             }
-    
+
             // edit the workbook
             {
                 try (POIFSFileSystem fs = new POIFSFileSystem(file, false)) {
@@ -1143,17 +1147,17 @@ public final class TestHSSFWorkbook exte
         fileOut.close();
 
     }
-    
+
     @Test
     public void closeDoesNotModifyWorkbook() throws IOException {
         final String filename = "SampleSS.xls";
         final File file = POIDataSamples.getSpreadSheetInstance().getFile(filename);
         Workbook wb;
-        
+
         // File via POIFileStream (java.nio)
         wb = new HSSFWorkbook(new POIFSFileSystem(file));
         assertCloseDoesNotModifyFile(filename, wb);
-        
+
         // InputStream
         wb = new HSSFWorkbook(new FileInputStream(file));
         assertCloseDoesNotModifyFile(filename, wb);
@@ -1171,11 +1175,11 @@ public final class TestHSSFWorkbook exte
             throw new Exception("Moving a sheet to the end should not throw an exception, but threw ", e);
         }
     }
-    
+
     @Test
     public void invalidInPlaceWrite() throws Exception {
         HSSFWorkbook wb;
-        
+
         // Can't work for new files
         wb = new HSSFWorkbook();
         try {
@@ -1185,7 +1189,7 @@ public final class TestHSSFWorkbook exte
             // expected here
         }
         wb.close();
-        
+
         // Can't work for InputStream opened files
         wb = new HSSFWorkbook(
             POIDataSamples.getSpreadSheetInstance().openResourceAsStream("SampleSS.xls"));
@@ -1196,7 +1200,7 @@ public final class TestHSSFWorkbook exte
             // expected here
         }
         wb.close();
-        
+
         // Can't work for Read-Only files
         POIFSFileSystem fs = new POIFSFileSystem(
                 POIDataSamples.getSpreadSheetInstance().getFile("SampleSS.xls"), true);
@@ -1209,7 +1213,7 @@ public final class TestHSSFWorkbook exte
         }
         wb.close();
     }
-    
+
     @Test
     public void inPlaceWrite() throws Exception {
         // Setup as a copy of a known-good file
@@ -1218,27 +1222,27 @@ public final class TestHSSFWorkbook exte
              FileOutputStream outputStream = new FileOutputStream(file)) {
             IOUtils.copy(inputStream, outputStream);
         }
-        
+
         // Open from the temp file in read-write mode
         HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(file, false));
         assertEquals(3, wb.getNumberOfSheets());
-        
+
         // Change
         wb.removeSheetAt(2);
         wb.removeSheetAt(1);
         wb.getSheetAt(0).getRow(0).getCell(0).setCellValue("Changed!");
-        
+
         // Save in-place, close, re-open and check
         wb.write();
         wb.close();
-        
+
         wb = new HSSFWorkbook(new POIFSFileSystem(file));
         assertEquals(1, wb.getNumberOfSheets());
         assertEquals("Changed!", wb.getSheetAt(0).getRow(0).getCell(0).toString());
 
         wb.close();
     }
-    
+
     @Test
     public void testWriteToNewFile() throws Exception {
         // Open from a Stream
@@ -1249,13 +1253,13 @@ public final class TestHSSFWorkbook exte
         final File file = TempFile.createTempFile("TestHSSFWorkbook", ".xls");
         wb.write(file);
         wb.close();
-        
+
         // Read and check
         wb = new HSSFWorkbook(new POIFSFileSystem(file));
         assertEquals(3, wb.getNumberOfSheets());
         wb.close();
     }
-    
+
     @Ignore
     @Test
     @Override

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/ptg/TestAbstractFunctionPtg.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/ptg/TestAbstractFunctionPtg.java?rev=1871911&r1=1871910&r2=1871911&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/ptg/TestAbstractFunctionPtg.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/ptg/TestAbstractFunctionPtg.java Sun Dec 22 21:44:45 2019
@@ -41,7 +41,7 @@ public class TestAbstractFunctionPtg  {
     public void testInvalidRuntimeClass() {
         new FunctionPtg(1, 300, null, 255);
     }
-    
+
     private static class FunctionPtg extends AbstractFunctionPtg {
 
         protected FunctionPtg(int functionIndex, int pReturnClass,
@@ -54,7 +54,13 @@ public class TestAbstractFunctionPtg  {
         }
 
         public void write(LittleEndianOutput out) {
-            
+
+        }
+
+        @Override
+        public FunctionPtg copy() {
+            // immutable
+            return this;
         }
     }
 }



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