Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestAbortableListener.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestAbortableListener.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestAbortableListener.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestAbortableListener.java Thu Dec 24 18:42:29 2020 @@ -17,8 +17,8 @@ package org.apache.poi.hssf.eventmodel; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -31,7 +31,7 @@ import org.apache.poi.hssf.record.BOFRec import org.apache.poi.hssf.record.EOFRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * Tests for {@link AbortableHSSFListener}
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java Thu Dec 24 18:42:29 2020 @@ -17,10 +17,10 @@ package org.apache.poi.hssf.eventmodel; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -40,8 +40,8 @@ import org.apache.poi.hssf.record.Standa import org.apache.poi.hssf.record.TestcaseRecordInputStream; import org.apache.poi.hssf.record.UnknownRecord; import org.apache.poi.util.NotImplemented; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; /** * enclosing_type describe the purpose here @@ -65,7 +65,7 @@ public final class TestEventRecordFactor ERFListener listener = rec -> { wascalled[0] = true; - assertEquals("must be BOFRecord got SID=" + rec.getSid(), rec.getSid(), BOFRecord.sid); + assertEquals(rec.getSid(), BOFRecord.sid, "must be BOFRecord got SID=" + rec.getSid()); return true; }; EventRecordFactory factory = new EventRecordFactory(listener, new short[] {BOFRecord.sid}); @@ -85,7 +85,7 @@ public final class TestEventRecordFactor eof.serialize(offset,bytes); factory.processRecords(new ByteArrayInputStream(bytes)); - assertTrue("The record listener must be called", wascalled[0]); + assertTrue(wascalled[0], "The record listener must be called"); } @@ -107,7 +107,7 @@ public final class TestEventRecordFactor Record[] records = RecordFactory.createRecord(TestcaseRecordInputStream.create(bytes)); - assertEquals("record.length must be 1, was =" + records.length, 1, records.length); + assertEquals(1, records.length, "record.length must be 1, was =" + records.length); byte[] rec1 = bof.serialize(); byte[] rec2 = records[0].serialize(); @@ -121,9 +121,8 @@ public final class TestEventRecordFactor */ @NotImplemented @Test - @Ignore + @Disabled public void testCreateContinuedRecord() { - // fail("not implemented"); } @@ -145,7 +144,7 @@ public final class TestEventRecordFactor } @Test - @Ignore("same as testContinuedUnknownRecord but with SequenceInputStream which causes the available() bug 59893") + @Disabled("same as testContinuedUnknownRecord but with SequenceInputStream which causes the available() bug 59893") public void bug59893() { Iterator<ByteArrayInputStream> iter = Stream.of(CONTINUE_DATA).map(ByteArrayInputStream::new).iterator(); SequenceInputStream sis = new SequenceInputStream(IteratorUtils.asEnumeration(iter)); @@ -164,6 +163,6 @@ public final class TestEventRecordFactor }; EventRecordFactory factory = new EventRecordFactory(listener, new short[] {-256, 0x3C}); factory.processRecords(data); - assertFalse("left over input data", expectedData.hasNext()); + assertFalse(expectedData.hasNext(), "left over input data"); } } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java Thu Dec 24 18:42:29 2020 @@ -17,9 +17,9 @@ package org.apache.poi.hssf.eventusermodel; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; import java.io.InputStream; @@ -31,14 +31,13 @@ import org.apache.poi.hssf.eventusermode import org.apache.poi.hssf.model.HSSFFormulaParser; import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.FormulaRecord; -import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.usermodel.HSSFEvaluationWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.formula.ptg.Ref3DPtg; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; /** * Tests for {@link EventWorkbookBuilder} @@ -47,7 +46,7 @@ public final class TestEventWorkbookBuil private final List<FormulaRecord> fRecs = new ArrayList<>(); private SheetRecordCollectingListener listener; - @Before + @BeforeEach public void setUp() throws IOException { HSSFRequest req = new HSSFRequest(); fRecs.clear(); Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestFormatTrackingHSSFListener.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestFormatTrackingHSSFListener.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestFormatTrackingHSSFListener.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestFormatTrackingHSSFListener.java Thu Dec 24 18:42:29 2020 @@ -16,9 +16,9 @@ ==================================================================== */ package org.apache.poi.hssf.eventusermodel; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; import java.util.ArrayList; @@ -28,9 +28,9 @@ import org.apache.poi.hssf.HSSFTestDataS import org.apache.poi.hssf.record.CellValueRecordInterface; import org.apache.poi.hssf.record.FormulaRecord; import org.apache.poi.hssf.record.NumberRecord; -import org.apache.poi.hssf.record.Record; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.junit.Test; +import org.junit.jupiter.api.Test; + /** * Tests for FormatTrackingHSSFListener */ @@ -43,14 +43,14 @@ public final class TestFormatTrackingHSS mockListen = new MockHSSFListener(); listener = new FormatTrackingHSSFListener(mockListen); req.addListenerForAllRecords(listener); - + File file = HSSFTestDataSamples.getSampleFile(filename); HSSFEventFactory factory = new HSSFEventFactory(); POIFSFileSystem fs = new POIFSFileSystem(file); factory.processWorkbookEvents(req, fs); fs.close(); - } - + } + @Test public void testFormats() throws Exception { processFile("MissingBits.xls"); @@ -60,7 +60,7 @@ public final class TestFormatTrackingHSS assertEquals("_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);_(@_)", listener.getFormatString(43)); assertEquals("_(\"$\"* #,##0.00_);_(\"$\"* (#,##0.00);_(\"$\"* \"-\"??_);_(@_)", listener.getFormatString(44)); } - + /** * Ensure that all number and formula records can be * turned into strings without problems. @@ -70,40 +70,40 @@ public final class TestFormatTrackingHSS */ @Test public void testTurnToString() throws Exception { - String[] files = new String[] { - "45365.xls", "45365-2.xls", "MissingBits.xls" + String[] files = new String[] { + "45365.xls", "45365-2.xls", "MissingBits.xls" }; for (String file : files) { processFile(file); - + // Check we found our formats assertTrue(listener.getNumberOfCustomFormats() > 5); assertTrue(listener.getNumberOfExtendedFormats() > 5); - + // Now check we can turn all the numeric // cells into strings without error for(org.apache.poi.hssf.record.Record r : mockListen._records) { CellValueRecordInterface cvr = null; - + if(r instanceof NumberRecord) { cvr = (CellValueRecordInterface)r; } if(r instanceof FormulaRecord) { cvr = (CellValueRecordInterface)r; } - + if(cvr != null) { - // Should always give us a string + // Should always give us a string String s = listener.formatNumberDateCell(cvr); assertNotNull(s); assertTrue(s.length() > 0); } } - + // TODO - test some specific format strings } } - + private static final class MockHSSFListener implements HSSFListener { public MockHSSFListener() {} private final List<org.apache.poi.hssf.record.Record> _records = new ArrayList<>(); Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java Thu Dec 24 18:42:29 2020 @@ -17,10 +17,11 @@ package org.apache.poi.hssf.eventusermodel; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; import java.io.InputStream; @@ -40,7 +41,7 @@ import org.apache.poi.hssf.record.Select import org.apache.poi.hssf.record.WindowTwoRecord; import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * Testing for {@link HSSFEventFactory} @@ -115,11 +116,11 @@ public final class TestHSSFEventFactory openSample("WORKBOOK_in_capitals.xls"); } - @Test(expected = EncryptedDocumentException.class) + @Test @SuppressWarnings("java:S2699") - public void testWithPasswordProtectedWorkbooksNoPass() throws Exception { + public void testWithPasswordProtectedWorkbooksNoPass() { // Without a password, can't be read - openSample("xor-encryption-abc.xls"); + assertThrows(EncryptedDocumentException.class, () -> openSample("xor-encryption-abc.xls")); } @Test @@ -157,10 +158,10 @@ public final class TestHSSFEventFactory } } - assertTrue("Sheet record not found", hasSheet); - assertTrue("Numeric record for A1 not found", hasA1); - assertTrue("Numeric record for A2 not found", hasA2); - assertTrue("Numeric record for A3 not found", hasA3); + assertTrue(hasSheet, "Sheet record not found"); + assertTrue(hasA1, "Numeric record for A1 not found"); + assertTrue(hasA2, "Numeric record for A2 not found"); + assertTrue(hasA3, "Numeric record for A3 not found"); } finally { Biff8EncryptionKey.setCurrentUserPassword(null); } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java Thu Dec 24 18:42:29 2020 @@ -17,8 +17,8 @@ package org.apache.poi.hssf.eventusermodel; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; import java.io.InputStream; @@ -36,12 +36,11 @@ import org.apache.poi.hssf.record.Dimens import org.apache.poi.hssf.record.LabelSSTRecord; import org.apache.poi.hssf.record.MulBlankRecord; import org.apache.poi.hssf.record.NumberRecord; -import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.RowRecord; import org.apache.poi.hssf.record.SharedFormulaRecord; import org.apache.poi.hssf.record.WindowTwoRecord; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * Tests for MissingRecordAwareHSSFListener Modified: poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java Thu Dec 24 18:42:29 2020 @@ -19,9 +19,9 @@ package org.apache.poi.hssf.extractor; import static org.apache.poi.POITestCase.assertContains; import static org.apache.poi.POITestCase.assertStartsWith; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; import java.io.IOException; @@ -34,7 +34,7 @@ import org.apache.poi.hssf.usermodel.HSS import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.LocaleUtil; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * Modified: poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java Thu Dec 24 18:42:29 2020 @@ -18,10 +18,10 @@ package org.apache.poi.hssf.extractor; import static org.apache.poi.POITestCase.assertContains; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.ByteArrayOutputStream; import java.io.File; @@ -38,8 +38,9 @@ import org.apache.poi.POIDataSamples; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.util.NullPrintStream; import org.apache.poi.util.RecordFormatException; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * Unit tests for the Excel 5/95 and Excel 4 (and older) text @@ -228,38 +229,31 @@ public final class TestOldExcelExtractor } } - @Test(expected=OfficeXmlFileException.class) + @Test public void testOpenInvalidFile1() throws IOException { // a file that exists, but is a different format - createExtractor("WithVariousData.xlsx").close(); - } - + assertThrows(OfficeXmlFileException.class, () -> createExtractor("WithVariousData.xlsx").close()); - @Test(expected=RecordFormatException.class) - public void testOpenInvalidFile2() throws IOException { // a completely different type of file - createExtractor("48936-strings.txt").close(); - } + assertThrows(RecordFormatException.class, () -> createExtractor("48936-strings.txt").close()); - @Test(expected=FileNotFoundException.class) - public void testOpenInvalidFile3() throws IOException { // a POIFS file which is not a Workbook try (InputStream is = POIDataSamples.getDocumentInstance().openResourceAsStream("47304.doc")) { - new OldExcelExtractor(is).close(); + assertThrows(FileNotFoundException.class, () -> new OldExcelExtractor(is).close()); } } - @Test(expected=EmptyFileException.class) - public void testOpenNonExistingFile() throws IOException { + @Test + public void testOpenNonExistingFile() { // a file that exists, but is a different format - new OldExcelExtractor(new File("notexistingfile.xls")).close(); + assertThrows(EmptyFileException.class, () -> new OldExcelExtractor(new File("notexistingfile.xls")).close()); } @Test public void testInputStream() throws IOException { File file = HSSFTestDataSamples.getSampleFile("testEXCEL_3.xls"); try (InputStream stream = new FileInputStream(file); - OldExcelExtractor extractor = new OldExcelExtractor(stream);) { + OldExcelExtractor extractor = new OldExcelExtractor(stream)) { String text = extractor.getText(); assertNotNull(text); } @@ -299,27 +293,23 @@ public final class TestOldExcelExtractor } } - @Test(expected = FileNotFoundException.class) + @Test public void testDirectoryNodeInvalidFile() throws IOException { File file = POIDataSamples.getDocumentInstance().getFile("test.doc"); - try (POIFSFileSystem fs = new POIFSFileSystem(file); - OldExcelExtractor extractor = new OldExcelExtractor(fs.getRoot())) { - fail("Should throw exception here"); + try (POIFSFileSystem fs = new POIFSFileSystem(file)) { + assertThrows(FileNotFoundException.class, () -> new OldExcelExtractor(fs.getRoot())); } } - @Test(expected = ExitException.class) - public void testMainUsage() throws IOException { + @Test + public void testMainUsage() { PrintStream save = System.err; SecurityManager sm = System.getSecurityManager(); System.setSecurityManager(new NoExitSecurityManager()); try { - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - PrintStream str = new PrintStream(out, false, "UTF-8"); - System.setErr(str); - // calls System.exit() - OldExcelExtractor.main(new String[]{}); - } + System.setErr(new NullPrintStream()); + // calls System.exit() + assertThrows(ExitException.class, () -> OldExcelExtractor.main(new String[]{})); } finally { System.setSecurityManager(sm); System.setErr(save); @@ -336,13 +326,13 @@ public final class TestOldExcelExtractor System.setOut(str); OldExcelExtractor.main(new String[] {file.getAbsolutePath()}); String string = out.toString("UTF-8"); - assertTrue("Had: " + string, string.contains("Table C-13--Lemons")); + assertTrue(string.contains("Table C-13--Lemons"), "Had: " + string); } finally { System.setOut(save); } } - @Test(expected = EncryptedDocumentException.class) + @Test public void testEncryptionException() throws IOException { //test file derives from Common Crawl File file = HSSFTestDataSamples.getSampleFile("60284.xls"); @@ -350,7 +340,7 @@ public final class TestOldExcelExtractor try (OldExcelExtractor ex = new OldExcelExtractor(file)) { assertEquals(5, ex.getBiffVersion()); assertEquals(5, ex.getFileType()); - ex.getText(); + assertThrows(EncryptedDocumentException.class, ex::getText); } } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java Thu Dec 24 18:42:29 2020 @@ -17,12 +17,11 @@ package org.apache.poi.hssf.model; import static org.apache.poi.poifs.storage.RawDataUtil.decompress; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -32,6 +31,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Stream; import org.apache.poi.ddf.DefaultEscherRecordFactory; import org.apache.poi.ddf.EscherContainerRecord; @@ -55,7 +55,10 @@ import org.apache.poi.hssf.usermodel.HSS import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFTestHelper; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; public class TestDrawingAggregate { /** @@ -123,82 +126,69 @@ public class TestDrawingAggregate { } } + public static Stream<Arguments> samples() { + File testData = new File(System.getProperty("POI.testdata.path"), "spreadsheet"); + File[] files = testData.listFiles((dir, name) -> name.endsWith(".xls")); + assertNotNull(files, "Need to find files in test-data path, had path: " + testData); + return Stream.of(files).map(Arguments::of); + } + /** + * test that we correctly read and write drawing aggregates in all .xls files in POI test samples. * iterate over all sheets, aggregate drawing records (if there are any) * and remember information about the aggregated data. * Then serialize the workbook, read back and assert that the aggregated data is preserved. * * The assertion is strict meaning that the drawing data before and after save must be equal. */ - private static void assertWriteAndReadBack(HSSFWorkbook wb) throws IOException { - // map aggregate info by sheet index - Map<Integer, DrawingAggregateInfo> aggs = new HashMap<>(); - for(int i = 0; i < wb.getNumberOfSheets(); i++){ - HSSFSheet sheet = wb.getSheetAt(i); - DrawingAggregateInfo info = DrawingAggregateInfo.get(sheet); - if(info != null) { - aggs.put(i, info); - HSSFPatriarch p = sheet.getDrawingPatriarch(); - - // compare aggregate.serialize() with raw bytes from the record stream - EscherAggregate agg = HSSFTestHelper.getEscherAggregate(p); - - byte[] dgBytes1 = info.getRawBytes(); - byte[] dgBytes2 = agg.serialize(); - - assertEquals("different size of raw data ande aggregate.serialize()", dgBytes1.length, dgBytes2.length); - assertArrayEquals("raw drawing data (" + dgBytes1.length + " bytes) and aggregate.serialize() are different.", dgBytes1, dgBytes2); - } - } + @ParameterizedTest + @MethodSource("samples") + public void testAllTestSamples(File file) throws IOException { + boolean ignoreParse = true; + try (HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook(file.getName())) { + ignoreParse = false; + + // map aggregate info by sheet index + Map<Integer, DrawingAggregateInfo> aggs = new HashMap<>(); + for (int i = 0; i < wb.getNumberOfSheets(); i++){ + HSSFSheet sheet = wb.getSheetAt(i); + DrawingAggregateInfo info = DrawingAggregateInfo.get(sheet); + if(info != null) { + aggs.put(i, info); + HSSFPatriarch p = sheet.getDrawingPatriarch(); - if(aggs.size() != 0){ - HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb); - for(int i = 0; i < wb2.getNumberOfSheets(); i++){ - DrawingAggregateInfo info1 = aggs.get(i); - if(info1 != null) { - HSSFSheet sheet2 = wb2.getSheetAt(i); - DrawingAggregateInfo info2 = DrawingAggregateInfo.get(sheet2); - byte[] dgBytes1 = info1.getRawBytes(); - byte[] dgBytes2 = info2.getRawBytes(); - assertEquals("different size of drawing data before and after save", dgBytes1.length, dgBytes2.length); - assertArrayEquals("drawing data (" + dgBytes1.length + " bytes) before and after save is different.", dgBytes1, dgBytes2); + // compare aggregate.serialize() with raw bytes from the record stream + EscherAggregate agg = HSSFTestHelper.getEscherAggregate(p); + + byte[] dgBytes1 = info.getRawBytes(); + byte[] dgBytes2 = agg.serialize(); + + assertEquals(dgBytes1.length, dgBytes2.length, "different size of raw data ande aggregate.serialize()"); + assertArrayEquals(dgBytes1, dgBytes2, "raw drawing data (" + dgBytes1.length + " bytes) and aggregate.serialize() are different."); } } - wb2.close(); - } - } - /** - * test that we correctly read and write drawing aggregates - * in all .xls files in POI test samples - */ - @Test - public void testAllTestSamples() throws IOException { - File[] xls = new File(System.getProperty("POI.testdata.path"), "spreadsheet").listFiles( - (dir, name) -> name.endsWith(".xls") - ); - assertNotNull( - "Need to find files in test-data path, had path: " + new File(System.getProperty("POI.testdata.path"), "spreadsheet"), - xls); - for(File file : xls) { - HSSFWorkbook wb; - try { - wb = HSSFTestDataSamples.openSampleWorkbook(file.getName()); - } catch (Throwable e){ - // don't bother about files we cannot read - they are different bugs - // System.out.println("[WARN] Cannot read " + file.getName()); - continue; + if(aggs.size() != 0){ + try (HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb)) { + for (int i = 0; i < wb2.getNumberOfSheets(); i++) { + DrawingAggregateInfo info1 = aggs.get(i); + if (info1 != null) { + HSSFSheet sheet2 = wb2.getSheetAt(i); + DrawingAggregateInfo info2 = DrawingAggregateInfo.get(sheet2); + byte[] dgBytes1 = info1.getRawBytes(); + byte[] dgBytes2 = info2.getRawBytes(); + assertEquals(dgBytes1.length, dgBytes2.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes1, dgBytes2, "drawing data (" + dgBytes1.length + " bytes) before and after save is different."); + } + } + } } - try { - assertWriteAndReadBack(wb); - } catch (Exception e) { - String filename = file.getName(); - System.out.println("Drawing Aggregate re-write test failed for " + filename); - e.printStackTrace(System.out); - fail("Error when writing and re-reading workbook " + filename + "\n" + e); + } catch (Throwable e) { + // don't bother about files we cannot read - they are different bugs + if (!ignoreParse) { + throw e; } - wb.close(); } } @@ -223,7 +213,7 @@ public class TestDrawingAggregate { records.add(r); pos += bytesRead; } - assertEquals("data was not fully read", dgBytes.length, pos); + assertEquals(dgBytes.length, pos, "data was not fully read"); // serialize to byte array ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -292,8 +282,8 @@ public class TestDrawingAggregate { agg = (EscherAggregate) ish.findFirstRecordBySid(EscherAggregate.sid); assertNotNull(agg); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } } } @@ -313,8 +303,8 @@ public class TestDrawingAggregate { EscherAggregate agg = (EscherAggregate) ish.findFirstRecordBySid(EscherAggregate.sid); assertNotNull(agg); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } } @@ -333,13 +323,13 @@ public class TestDrawingAggregate { EscherAggregate agg = (EscherAggregate) ish.findFirstRecordBySid(EscherAggregate.sid); assertNotNull(agg); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); for (int i = 0; i < dgBytes.length; i++) { if (dgBytes[i] != dgBytesAfterSave[i]) { System.out.println("pos = " + i); } } - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } } @@ -357,11 +347,10 @@ public class TestDrawingAggregate { List<RecordBase> records = isheet.getRecords(); // the sheet's drawing is not aggregated - assertEquals("wrong size of sheet records stream", 394, records.size()); + assertEquals(394, records.size(), "wrong size of sheet records stream"); // the last record before the drawing block - assertTrue( - "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName(), - records.get(18) instanceof RowRecordsAggregate); + assertTrue(records.get(18) instanceof RowRecordsAggregate, + "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName()); // records to be aggregated List<RecordBase> dgRecords = records.subList(19, 389); @@ -381,9 +370,7 @@ public class TestDrawingAggregate { } // the first record after the drawing block - assertTrue( - "records.get(389) is expected to be Window2", - records.get(389) instanceof WindowTwoRecord); + assertTrue(records.get(389) instanceof WindowTwoRecord, "records.get(389) is expected to be Window2"); // aggregate drawing records. // The subrange [19, 388] is expected to be replaced with a EscherAggregate object @@ -391,18 +378,17 @@ public class TestDrawingAggregate { int loc = isheet.aggregateDrawingRecords(drawingManager, false); EscherAggregate agg = (EscherAggregate) records.get(loc); - assertEquals("wrong size of the aggregated sheet records stream", 25, records.size()); - assertTrue( - "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName(), - records.get(18) instanceof RowRecordsAggregate); - assertTrue("records.get(19) is expected to be EscherAggregate but was " + records.get(19).getClass().getSimpleName(), - records.get(19) instanceof EscherAggregate); - assertTrue("records.get(20) is expected to be Window2 but was " + records.get(20).getClass().getSimpleName(), - records.get(20) instanceof WindowTwoRecord); + assertEquals(25, records.size(), "wrong size of the aggregated sheet records stream"); + assertTrue(records.get(18) instanceof RowRecordsAggregate, + "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName()); + assertTrue(records.get(19) instanceof EscherAggregate, + "records.get(19) is expected to be EscherAggregate but was " + records.get(19).getClass().getSimpleName()); + assertTrue(records.get(20) instanceof WindowTwoRecord, + "records.get(20) is expected to be Window2 but was " + records.get(20).getClass().getSimpleName()); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } } @@ -425,11 +411,10 @@ public class TestDrawingAggregate { List<RecordBase> records = isheet.getRecords(); // the sheet's drawing is not aggregated - assertEquals("wrong size of sheet records stream", 32, records.size()); + assertEquals(32, records.size(), "wrong size of sheet records stream"); // the last record before the drawing block - assertTrue( - "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName(), - records.get(18) instanceof RowRecordsAggregate); + assertTrue(records.get(18) instanceof RowRecordsAggregate, + "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName()); // records to be aggregated List<RecordBase> dgRecords = records.subList(19, 26); @@ -449,9 +434,7 @@ public class TestDrawingAggregate { byte[] dgBytes = toByteArray(dgRecords); // the first record after the drawing block - assertTrue( - "records.get(26) is expected to be Window2", - records.get(26) instanceof WindowTwoRecord); + assertTrue(records.get(26) instanceof WindowTwoRecord, "records.get(26) is expected to be Window2"); // aggregate drawing records. // The subrange [19, 38] is expected to be replaced with a EscherAggregate object @@ -459,18 +442,17 @@ public class TestDrawingAggregate { int loc = isheet.aggregateDrawingRecords(drawingManager, false); EscherAggregate agg = (EscherAggregate) records.get(loc); - assertEquals("wrong size of the aggregated sheet records stream", 26, records.size()); - assertTrue( - "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName(), - records.get(18) instanceof RowRecordsAggregate); - assertTrue("records.get(19) is expected to be EscherAggregate but was " + records.get(19).getClass().getSimpleName(), - records.get(19) instanceof EscherAggregate); - assertTrue("records.get(20) is expected to be Window2 but was " + records.get(20).getClass().getSimpleName(), - records.get(20) instanceof WindowTwoRecord); + assertEquals(26, records.size(), "wrong size of the aggregated sheet records stream"); + assertTrue(records.get(18) instanceof RowRecordsAggregate, + "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName()); + assertTrue(records.get(19) instanceof EscherAggregate, + "records.get(19) is expected to be EscherAggregate but was " + records.get(19).getClass().getSimpleName()); + assertTrue(records.get(20) instanceof WindowTwoRecord, + "records.get(20) is expected to be Window2 but was " + records.get(20).getClass().getSimpleName()); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } } @@ -510,11 +492,10 @@ public class TestDrawingAggregate { List<RecordBase> records = isheet.getRecords(); // the sheet's drawing is not aggregated - assertEquals("wrong size of sheet records stream", 46, records.size()); + assertEquals(46, records.size(), "wrong size of sheet records stream"); // the last record before the drawing block - assertTrue( - "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName(), - records.get(18) instanceof RowRecordsAggregate); + assertTrue(records.get(18) instanceof RowRecordsAggregate, + "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName()); // records to be aggregated List<RecordBase> dgRecords = records.subList(19, 39); @@ -534,9 +515,7 @@ public class TestDrawingAggregate { byte[] dgBytes = toByteArray(dgRecords); // the first record after the drawing block - assertTrue( - "records.get(39) is expected to be Window2", - records.get(39) instanceof WindowTwoRecord); + assertTrue(records.get(39) instanceof WindowTwoRecord, "records.get(39) is expected to be Window2"); // aggregate drawing records. // The subrange [19, 38] is expected to be replaced with a EscherAggregate object @@ -544,18 +523,17 @@ public class TestDrawingAggregate { int loc = isheet.aggregateDrawingRecords(drawingManager, false); EscherAggregate agg = (EscherAggregate) records.get(loc); - assertEquals("wrong size of the aggregated sheet records stream", 27, records.size()); - assertTrue( - "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName(), - records.get(18) instanceof RowRecordsAggregate); - assertTrue("records.get(19) is expected to be EscherAggregate but was " + records.get(19).getClass().getSimpleName(), - records.get(19) instanceof EscherAggregate); - assertTrue("records.get(20) is expected to be Window2 but was " + records.get(20).getClass().getSimpleName(), - records.get(20) instanceof WindowTwoRecord); + assertEquals(27, records.size(), "wrong size of the aggregated sheet records stream"); + assertTrue(records.get(18) instanceof RowRecordsAggregate, + "records.get(18) is expected to be RowRecordsAggregate but was " + records.get(18).getClass().getSimpleName()); + assertTrue(records.get(19) instanceof EscherAggregate, + "records.get(19) is expected to be EscherAggregate but was " + records.get(19).getClass().getSimpleName()); + assertTrue(records.get(20) instanceof WindowTwoRecord, + "records.get(20) is expected to be Window2 but was " + records.get(20).getClass().getSimpleName()); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } } @@ -571,11 +549,10 @@ public class TestDrawingAggregate { List<RecordBase> records = isheet.getRecords(); // the sheet's drawing is not aggregated - assertEquals("wrong size of sheet records stream", 315, records.size()); + assertEquals(315, records.size(), "wrong size of sheet records stream"); // the last record before the drawing block - assertTrue( - "records.get(21) is expected to be RowRecordsAggregate but was " + records.get(21).getClass().getSimpleName(), - records.get(21) instanceof RowRecordsAggregate); + assertTrue(records.get(21) instanceof RowRecordsAggregate, + "records.get(21) is expected to be RowRecordsAggregate but was " + records.get(21).getClass().getSimpleName()); // records to be aggregated List<RecordBase> dgRecords = records.subList(22, 300); @@ -594,9 +571,7 @@ public class TestDrawingAggregate { byte[] dgBytes = toByteArray(dgRecords); // the first record after the drawing block - assertTrue( - "records.get(300) is expected to be Window2", - records.get(300) instanceof WindowTwoRecord); + assertTrue(records.get(300) instanceof WindowTwoRecord, "records.get(300) is expected to be Window2"); // aggregate drawing records. // The subrange [19, 299] is expected to be replaced with a EscherAggregate object @@ -604,18 +579,17 @@ public class TestDrawingAggregate { int loc = isheet.aggregateDrawingRecords(drawingManager, false); EscherAggregate agg = (EscherAggregate) records.get(loc); - assertEquals("wrong size of the aggregated sheet records stream", 38, records.size()); - assertTrue( - "records.get(21) is expected to be RowRecordsAggregate but was " + records.get(21).getClass().getSimpleName(), - records.get(21) instanceof RowRecordsAggregate); - assertTrue("records.get(22) is expected to be EscherAggregate but was " + records.get(22).getClass().getSimpleName(), - records.get(22) instanceof EscherAggregate); - assertTrue("records.get(23) is expected to be Window2 but was " + records.get(23).getClass().getSimpleName(), - records.get(23) instanceof WindowTwoRecord); + assertEquals(38, records.size(), "wrong size of the aggregated sheet records stream"); + assertTrue(records.get(21) instanceof RowRecordsAggregate, + "records.get(21) is expected to be RowRecordsAggregate but was " + records.get(21).getClass().getSimpleName()); + assertTrue(records.get(22) instanceof EscherAggregate, + "records.get(22) is expected to be EscherAggregate but was " + records.get(22).getClass().getSimpleName()); + assertTrue(records.get(23) instanceof WindowTwoRecord, + "records.get(23) is expected to be Window2 but was " + records.get(23).getClass().getSimpleName()); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } } @@ -739,7 +713,7 @@ public class TestDrawingAggregate { }; int[] actualSids = dgRecords.stream().mapToInt(Record::getSid).toArray(); - assertArrayEquals("unexpected record.sid", expectedSids, actualSids); + assertArrayEquals(expectedSids, actualSids, "unexpected record.sid"); DrawingManager2 drawingManager = new DrawingManager2(new EscherDggRecord()); @@ -752,14 +726,14 @@ public class TestDrawingAggregate { sheet.aggregateDrawingRecords(drawingManager, false); - assertEquals("drawing was not fully aggregated", 2, records.size()); - assertTrue("expected EscherAggregate", records.get(0) instanceof EscherAggregate); - assertTrue("expected EOFRecord", records.get(1) instanceof EOFRecord); + assertEquals(2, records.size(), "drawing was not fully aggregated"); + assertTrue(records.get(0) instanceof EscherAggregate, "expected EscherAggregate"); + assertTrue(records.get(1) instanceof EOFRecord, "expected EOFRecord"); EscherAggregate agg = (EscherAggregate) records.get(0); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } @Test @@ -905,7 +879,7 @@ public class TestDrawingAggregate { }; int[] actualSids = dgRecords.stream().mapToInt(Record::getSid).toArray(); - assertArrayEquals("unexpected record.sid", expectedSids, actualSids); + assertArrayEquals(expectedSids, actualSids, "unexpected record.sid"); DrawingManager2 drawingManager = new DrawingManager2(new EscherDggRecord()); @@ -917,14 +891,14 @@ public class TestDrawingAggregate { records.add(EOFRecord.instance); sheet.aggregateDrawingRecords(drawingManager, false); - assertEquals("drawing was not fully aggregated", 2, records.size()); - assertTrue("expected EscherAggregate", records.get(0) instanceof EscherAggregate); - assertTrue("expected EOFRecord", records.get(1) instanceof EOFRecord); + assertEquals(2, records.size(), "drawing was not fully aggregated"); + assertTrue(records.get(0) instanceof EscherAggregate, "expected EscherAggregate"); + assertTrue(records.get(1) instanceof EOFRecord, "expected EOFRecord"); EscherAggregate agg = (EscherAggregate) records.get(0); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data brefpore and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data brefpore and after save is different"); } } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingManager2.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingManager2.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingManager2.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingManager2.java Thu Dec 24 18:42:29 2020 @@ -17,18 +17,18 @@ package org.apache.poi.hssf.model; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.apache.poi.ddf.EscherDgRecord; import org.apache.poi.ddf.EscherDggRecord; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public final class TestDrawingManager2 { private DrawingManager2 drawingManager2; private EscherDggRecord dgg; - @Before + @BeforeEach public void setUp() { dgg = new EscherDggRecord(); dgg.setFileIdClusters( new EscherDggRecord.FileIdCluster[0] ); Modified: poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java Thu Dec 24 18:42:29 2020 @@ -17,13 +17,13 @@ package org.apache.poi.hssf.model; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; import java.util.List; @@ -60,12 +60,12 @@ import org.apache.poi.hssf.usermodel.HSS import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.util.HexDump; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * Test escher drawing - * + * * optionally the system setting "poi.deserialize.escher" can be set to {@code true} */ public class TestDrawingShapes { @@ -107,7 +107,7 @@ public class TestDrawingShapes { assertEquals(HSSFShape.LINEWIDTH_DEFAULT, shape.getLineWidth()); assertEquals(HSSFShape.LINESTYLE_SOLID, shape.getLineStyle()); assertFalse(shape.isNoFill()); - + EscherOptRecord opt = shape.getOptRecord(); assertEquals(7, opt.getEscherProperties().size()); @@ -284,7 +284,7 @@ public class TestDrawingShapes { assertFalse(shape.isNoFill()); assertEquals(shape.getLineStyle(), HSSFShape.LINESTYLE_DASHDOTGEL); assertEquals(shape.getLineStyleColor(), 0x616161); - assertEquals(HexDump.toHex(shape.getFillColor()), shape.getFillColor(), 0x2CE03D); + assertEquals(shape.getFillColor(), 0x2CE03D, HexDump.toHex(shape.getFillColor())); assertEquals(shape.getLineWidth(), HSSFShape.LINEWIDTH_ONE_PT * 2); assertEquals(shape.getString().getString(), "POItest"); assertEquals(shape.getRotationDegree(), 27); @@ -307,8 +307,8 @@ public class TestDrawingShapes { EscherAggregate agg1 = HSSFTestHelper.getEscherAggregate(patriarch1); // last shape ID cached in EscherDgRecord - EscherDgRecord dg1 = - agg1.getEscherContainer().getChildById(EscherDgRecord.RECORD_ID); + EscherDgRecord dg1 = agg1.getEscherContainer().getChildById(EscherDgRecord.RECORD_ID); + assertNotNull(dg1); assertEquals(1026, dg1.getLastMSOSPID()); // iterate over shapes and check shapeId @@ -319,14 +319,17 @@ public class TestDrawingShapes { EscherSpRecord sp0 = ((EscherContainerRecord) spgrContainer.getChild(0)).getChildById(EscherSpRecord.RECORD_ID); + assertNotNull(sp0); assertEquals(1024, sp0.getShapeId()); EscherSpRecord sp1 = ((EscherContainerRecord) spgrContainer.getChild(1)).getChildById(EscherSpRecord.RECORD_ID); + assertNotNull(sp1); assertEquals(1025, sp1.getShapeId()); EscherSpRecord sp2 = ((EscherContainerRecord) spgrContainer.getChild(2)).getChildById(EscherSpRecord.RECORD_ID); + assertNotNull(sp2); assertEquals(1026, sp2.getShapeId()); wb2.close(); } @@ -380,22 +383,23 @@ public class TestDrawingShapes { assertSame(opt1, opt2); wb.close(); } - + @Test public void testCorrectOrderInOptRecord() throws IOException{ HSSFWorkbook wb = new HSSFWorkbook(); - + HSSFSheet sheet = wb.createSheet(); HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); HSSFTextbox textbox = patriarch.createTextbox(new HSSFClientAnchor()); EscherOptRecord opt = HSSFTestHelper.getOptRecord(textbox); - + String opt1Str = opt.toXml(); textbox.setFillColor(textbox.getFillColor()); EscherContainerRecord container = HSSFTestHelper.getEscherContainer(textbox); EscherOptRecord optRecord = container.getChildById(EscherOptRecord.RECORD_ID); + assertNotNull(optRecord); assertEquals(opt1Str, optRecord.toXml()); textbox.setLineStyle(textbox.getLineStyle()); assertEquals(opt1Str, optRecord.toXml()); @@ -689,7 +693,7 @@ public class TestDrawingShapes { @Test public void testShapeContainerImplementsIterable() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); - + HSSFSheet sheet = wb.createSheet(); HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); @@ -737,13 +741,13 @@ public class TestDrawingShapes { assertEquals(patriarch.getChildren().size(), 0); wb2.close(); } - + @Test public void testBug45312() throws Exception { try (HSSFWorkbook wb = new HSSFWorkbook()) { HSSFSheet sheet = wb.createSheet(); HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); - + { HSSFClientAnchor a1 = new HSSFClientAnchor(); a1.setAnchor( (short)1, 1, 0, 0, (short) 1, 1, 512, 100); @@ -771,7 +775,7 @@ public class TestDrawingShapes { shape1.setFlipHorizontal(true); shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE); } - + checkWorkbookBack(wb); } } @@ -779,13 +783,13 @@ public class TestDrawingShapes { private void checkWorkbookBack(HSSFWorkbook wb) throws IOException { HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); assertNotNull(wbBack); - + HSSFSheet sheetBack = wbBack.getSheetAt(0); assertNotNull(sheetBack); - + HSSFPatriarch patriarchBack = sheetBack.getDrawingPatriarch(); assertNotNull(patriarchBack); - + List<HSSFShape> children = patriarchBack.getChildren(); assertEquals(4, children.size()); HSSFShape hssfShape = children.get(0); @@ -843,7 +847,7 @@ public class TestDrawingShapes { assertEquals(2, cAnchor.getCol2()); assertEquals(2, cAnchor.getRow1()); assertEquals(2, cAnchor.getRow2()); - + wbBack.close(); } } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/model/TestEscherRecordFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/model/TestEscherRecordFactory.java?rev=1884783&r1=1884782&r2=1884783&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/hssf/model/TestEscherRecordFactory.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/model/TestEscherRecordFactory.java Thu Dec 24 18:42:29 2020 @@ -17,17 +17,18 @@ package org.apache.poi.hssf.model; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.apache.poi.ddf.DefaultEscherRecordFactory.isContainer; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; import java.util.Random; -import org.apache.poi.ddf.DefaultEscherRecordFactory; import org.apache.poi.ddf.EscherContainerRecord; import org.apache.poi.ddf.EscherTextboxRecord; import org.apache.poi.hssf.HSSFTestDataSamples; @@ -37,7 +38,7 @@ import org.apache.poi.hssf.record.Record import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFTestHelper; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.junit.Test; +import org.junit.jupiter.api.Test; public class TestEscherRecordFactory { @@ -57,30 +58,30 @@ public class TestEscherRecordFactory { @Test public void testDetectContainer() { Random rnd = new Random(); - assertTrue(DefaultEscherRecordFactory.isContainer((short) 0x0, EscherContainerRecord.DG_CONTAINER)); - assertTrue(DefaultEscherRecordFactory.isContainer((short) 0x0, EscherContainerRecord.SOLVER_CONTAINER)); - assertTrue(DefaultEscherRecordFactory.isContainer((short) 0x0, EscherContainerRecord.SP_CONTAINER)); - assertTrue(DefaultEscherRecordFactory.isContainer((short) 0x0, EscherContainerRecord.DGG_CONTAINER)); - assertTrue(DefaultEscherRecordFactory.isContainer((short) 0x0, EscherContainerRecord.BSTORE_CONTAINER)); - assertTrue(DefaultEscherRecordFactory.isContainer((short) 0x0, EscherContainerRecord.SPGR_CONTAINER)); + assertTrue(isContainer((short) 0x0, EscherContainerRecord.DG_CONTAINER)); + assertTrue(isContainer((short) 0x0, EscherContainerRecord.SOLVER_CONTAINER)); + assertTrue(isContainer((short) 0x0, EscherContainerRecord.SP_CONTAINER)); + assertTrue(isContainer((short) 0x0, EscherContainerRecord.DGG_CONTAINER)); + assertTrue(isContainer((short) 0x0, EscherContainerRecord.BSTORE_CONTAINER)); + assertTrue(isContainer((short) 0x0, EscherContainerRecord.SPGR_CONTAINER)); - for (Short i=EscherContainerRecord.DGG_CONTAINER; i<= EscherContainerRecord.SOLVER_CONTAINER; i++){ - assertTrue(DefaultEscherRecordFactory.isContainer(Integer.valueOf(rnd.nextInt(Short.MAX_VALUE)).shortValue(), i)); + for (short i=EscherContainerRecord.DGG_CONTAINER; i<= EscherContainerRecord.SOLVER_CONTAINER; i++){ + assertTrue(isContainer(Integer.valueOf(rnd.nextInt(Short.MAX_VALUE)).shortValue(), i)); } - assertFalse(DefaultEscherRecordFactory.isContainer((short) 0x0, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); - assertFalse(DefaultEscherRecordFactory.isContainer((short) 0x0, Integer.valueOf(EscherContainerRecord.SOLVER_CONTAINER + 1).shortValue())); + assertFalse(isContainer((short) 0x0, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); + assertFalse(isContainer((short) 0x0, Integer.valueOf(EscherContainerRecord.SOLVER_CONTAINER + 1).shortValue())); - assertTrue(DefaultEscherRecordFactory.isContainer((short) 0x000F, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); - assertTrue(DefaultEscherRecordFactory.isContainer((short) 0xFFFF, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); - assertFalse(DefaultEscherRecordFactory.isContainer((short) 0x000C, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); - assertFalse(DefaultEscherRecordFactory.isContainer((short) 0xCCCC, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); - assertFalse(DefaultEscherRecordFactory.isContainer((short) 0x000F, EscherTextboxRecord.RECORD_ID)); - assertFalse(DefaultEscherRecordFactory.isContainer((short) 0xCCCC, EscherTextboxRecord.RECORD_ID)); + assertTrue(isContainer((short) 0x000F, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); + assertTrue(isContainer((short) 0xFFFF, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); + assertFalse(isContainer((short) 0x000C, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); + assertFalse(isContainer((short) 0xCCCC, Integer.valueOf(EscherContainerRecord.DGG_CONTAINER - 1).shortValue())); + assertFalse(isContainer((short) 0x000F, EscherTextboxRecord.RECORD_ID)); + assertFalse(isContainer((short) 0xCCCC, EscherTextboxRecord.RECORD_ID)); } @Test - public void testDgContainerMustBeRootOfHSSFSheetEscherRecords() throws IOException { + public void testDgContainerMustBeRootOfHSSFSheetEscherRecords() { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("47251.xls"); HSSFSheet sh = wb.getSheetAt(0); InternalSheet ish = HSSFTestHelper.getSheetForTest(sh); @@ -90,12 +91,14 @@ public class TestEscherRecordFactory { byte[] dgBytes = toByteArray(dgRecords); sh.getDrawingPatriarch(); EscherAggregate agg = (EscherAggregate) ish.findFirstRecordBySid(EscherAggregate.sid); + assertNotNull(agg); assertTrue(agg.getEscherRecords().get(0) instanceof EscherContainerRecord); assertEquals(EscherContainerRecord.DG_CONTAINER, agg.getEscherRecords().get(0).getRecordId()); assertEquals((short) 0x0, agg.getEscherRecords().get(0).getOptions()); agg = (EscherAggregate) ish.findFirstRecordBySid(EscherAggregate.sid); + assertNotNull(agg); byte[] dgBytesAfterSave = agg.serialize(); - assertEquals("different size of drawing data before and after save", dgBytes.length, dgBytesAfterSave.length); - assertArrayEquals("drawing data before and after save is different", dgBytes, dgBytesAfterSave); + assertEquals(dgBytes.length, dgBytesAfterSave.length, "different size of drawing data before and after save"); + assertArrayEquals(dgBytes, dgBytesAfterSave, "drawing data before and after save is different"); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org