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-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org