From fb2a96a04832a62c6ceb7bf5011b106547780ff9 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Fri, 8 Jan 2021 22:56:05 +0000 Subject: [PATCH] Sonar fixes Fixed offset of compare picture in resize_compare.xlsx git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885280 13f79535-47bb-0310-9956-ffa450edef68 --- src/multimodule/poi/test9/module-info.class | Bin 3541 -> 3549 bytes src/multimodule/poi/test9/module-info.java | 1 + .../poi/ss/tests/usermodel/BaseTestXRow.java | 13 - .../streaming/TestDeferredSXSSFWorkbook.java | 4 + .../streaming/TestSXSSFFormulaEvaluation.java | 5 +- .../poi/xssf/streaming/TestSXSSFWorkbook.java | 5 +- .../xssf/usermodel/TestXSSFDataFormat.java | 130 +++------ .../poi/xssf/usermodel/TestXSSFFont.java | 160 ++++++----- .../usermodel/TestXSSFFormulaEvaluation.java | 111 ++++--- .../poi/xssf/usermodel/TestXSSFPicture.java | 16 +- .../poi/xssf/usermodel/TestXSSFSheet.java | 20 +- .../poi/xssf/usermodel/TestXSSFWorkbook.java | 6 - .../hssf/usermodel/TestHSSFDataFormat.java | 65 ++--- .../usermodel/TestHSSFEvaluationSheet.java | 17 +- .../poi/hssf/usermodel/TestHSSFFont.java | 12 +- .../usermodel/TestHSSFFormulaEvaluator.java | 5 - .../poi/hssf/usermodel/TestHSSFPicture.java | 17 +- .../poi/hssf/usermodel/TestHSSFRow.java | 11 - .../poi/hssf/usermodel/TestHSSFSheet.java | 28 +- .../poi/hssf/usermodel/TestHSSFWorkbook.java | 54 ++-- .../poi/hssf/usermodel/TestOLE2Embeding.java | 12 +- .../poi/ss/usermodel/BaseTestDataFormat.java | 264 +++++++++-------- .../apache/poi/ss/usermodel/BaseTestFont.java | 271 +++++++++--------- .../usermodel/BaseTestFormulaEvaluator.java | 39 +-- .../poi/ss/usermodel/BaseTestPicture.java | 59 ++-- .../apache/poi/ss/usermodel/BaseTestRow.java | 8 +- .../poi/ss/usermodel/BaseTestSheet.java | 7 +- .../poi/ss/usermodel/BaseTestWorkbook.java | 5 +- test-data/spreadsheet/resize_compare.xlsx | Bin 37715 -> 37768 bytes 29 files changed, 630 insertions(+), 715 deletions(-) diff --git a/src/multimodule/poi/test9/module-info.class b/src/multimodule/poi/test9/module-info.class index 47a7d5329769a2f66450d06fd0321ad93d72ba6a..25212bba07b130ecf5796faffec5a7694241527f 100644 GIT binary patch delta 26 icmcaAeOG$JDQ-rg&8N99GcvMFp3f`EIC=6$UKId}UI|11 delta 24 gcmcaBeN}qHDQ-rt&8N99Gcqzyp3f^e`2eph0C=znuK)l5 diff --git a/src/multimodule/poi/test9/module-info.java b/src/multimodule/poi/test9/module-info.java index 12b98cc595..b6dc53ff7d 100644 --- a/src/multimodule/poi/test9/module-info.java +++ b/src/multimodule/poi/test9/module-info.java @@ -110,4 +110,5 @@ module org.apache.poi.poi { opens org.apache.poi.hpsf.basic to org.junit.platform.commons; opens org.apache.poi.hssf.record.pivot to org.junit.platform.commons; opens org.apache.poi.hssf.dev to org.junit.platform.commons; + opens org.apache.poi.ss.usermodel to org.junit.platform.commons; } \ No newline at end of file diff --git a/src/ooxml/testcases/org/apache/poi/ss/tests/usermodel/BaseTestXRow.java b/src/ooxml/testcases/org/apache/poi/ss/tests/usermodel/BaseTestXRow.java index c0f57156d7..744f342694 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/tests/usermodel/BaseTestXRow.java +++ b/src/ooxml/testcases/org/apache/poi/ss/tests/usermodel/BaseTestXRow.java @@ -17,13 +17,10 @@ package org.apache.poi.ss.tests.usermodel; -import java.io.IOException; - import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.usermodel.BaseTestRow; import org.apache.poi.xssf.streaming.SXSSFRow; import org.apache.poi.xssf.usermodel.XSSFRow; -import org.junit.jupiter.api.Test; /** * Class for combined testing of XML-specific functionality of @@ -36,14 +33,4 @@ public abstract class BaseTestXRow extends BaseTestRow { protected BaseTestXRow(ITestDataProvider testDataProvider) { super(testDataProvider); } - - @Test - public void testRowBounds() throws IOException { - baseTestRowBounds(_testDataProvider.getSpreadsheetVersion().getLastRowIndex()); - } - - @Test - public void testCellBounds() throws IOException { - baseTestCellBounds(_testDataProvider.getSpreadsheetVersion().getLastColumnIndex()); - } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestDeferredSXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestDeferredSXSSFWorkbook.java index a171d62bf3..f0d27d85ce 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestDeferredSXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestDeferredSXSSFWorkbook.java @@ -306,4 +306,8 @@ public final class TestDeferredSXSSFWorkbook extends BaseTestXWorkbook { }); } } + + public void changeSheetNameWithSharedFormulas() { + /* not implemented */ + } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java index 39cd66ae0e..ec97fdf769 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java @@ -22,7 +22,6 @@ package org.apache.poi.xssf.streaming; 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.fail; import java.io.IOException; @@ -49,6 +48,10 @@ public final class TestSXSSFFormulaEvaluation extends BaseTestFormulaEvaluator super(SXSSFITestDataProvider.instance); } + public void testSharedFormulas() throws IOException { + /* not implemented */ + } + /** * EvaluateAll will normally fail, as any reference or * formula outside of the window will fail, and any diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java index 000c3ba747..91cf6d6b9f 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java @@ -27,7 +27,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -534,4 +533,8 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook { wb.close(); } + + public void changeSheetNameWithSharedFormulas() { + /* not implemented */ + } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java index 128ee0a867..a2c556fe93 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java @@ -17,17 +17,16 @@ package org.apache.poi.xssf.usermodel; -import static org.junit.jupiter.api.Assertions.*; +import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; import org.apache.poi.ss.formula.ConditionalFormattingEvaluator; import org.apache.poi.ss.formula.WorkbookEvaluatorProvider; import org.apache.poi.ss.usermodel.BaseTestDataFormat; -import org.apache.poi.ss.usermodel.BuiltinFormats; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.DataFormat; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Workbook; @@ -45,106 +44,67 @@ public final class TestXSSFDataFormat extends BaseTestDataFormat { super(XSSFITestDataProvider.instance); } - /** - * [Bug 49928] formatCellValue returns incorrect value for \u00a3 formatted cells - */ - @Override - @Test - public void test49928() throws IOException { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49928.xlsx"); - doTest49928Core(wb); - - DataFormat dataFormat = wb.createDataFormat(); - - // As of 2015-12-27, there is no way to override a built-in number format with POI XSSFWorkbook - // 49928.xlsx has been saved with a poundFmt that overrides the default value (dollar) - short poundFmtIdx = wb.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getDataFormat(); - assertEquals(poundFmtIdx, dataFormat.getFormat(poundFmt)); - - // now create a custom format with Pound (\u00a3) - - String customFmt = "\u00a3##.00[Yellow]"; - assertNotBuiltInFormat(customFmt); - short customFmtIdx = dataFormat.getFormat(customFmt); - assertTrue(customFmtIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX); - assertEquals(customFmt, dataFormat.getFormat(customFmtIdx)); - - wb.close(); - } - - /** - * [Bug 58532] Handle formats that go numnum, numK, numM etc - */ - @Override - @Test - public void test58532() throws IOException { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("FormatKM.xlsx"); - doTest58532Core(wb); - wb.close(); - } - /** * [Bug 58778] Built-in number formats can be overridden with XSSFDataFormat.putFormat(int id, String fmt) */ @Test public void test58778() throws IOException { - XSSFWorkbook wb1 = new XSSFWorkbook(); - Cell cell = wb1.createSheet("bug58778").createRow(0).createCell(0); - cell.setCellValue(5.25); - CellStyle style = wb1.createCellStyle(); + try (XSSFWorkbook wb1 = new XSSFWorkbook()) { + Cell cell = wb1.createSheet("bug58778").createRow(0).createCell(0); + cell.setCellValue(5.25); + CellStyle style = wb1.createCellStyle(); - XSSFDataFormat dataFormat = wb1.createDataFormat(); + XSSFDataFormat dataFormat = wb1.createDataFormat(); - short poundFmtIdx = 6; - dataFormat.putFormat(poundFmtIdx, poundFmt); - style.setDataFormat(poundFmtIdx); - cell.setCellStyle(style); - // Cell should appear as "5" + short poundFmtIdx = 6; + dataFormat.putFormat(poundFmtIdx, POUND_FMT); + style.setDataFormat(poundFmtIdx); + cell.setCellStyle(style); + // Cell should appear as "5" - XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutCloseAndReadBack(wb1); - cell = wb2.getSheet("bug58778").getRow(0).getCell(0); - assertEquals(5.25, cell.getNumericCellValue(), 0); + try (XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutCloseAndReadBack(wb1)) { + cell = wb2.getSheet("bug58778").getRow(0).getCell(0); + assertEquals(5.25, cell.getNumericCellValue(), 0); - style = cell.getCellStyle(); - assertEquals(poundFmt, style.getDataFormatString()); - assertEquals(poundFmtIdx, style.getDataFormat()); + style = cell.getCellStyle(); + assertEquals(POUND_FMT, style.getDataFormatString()); + assertEquals(poundFmtIdx, style.getDataFormat()); - // manually check the file to make sure the cell is rendered as "5" - // Verified with LibreOffice 4.2.8.2 on 2015-12-28 - wb2.close(); - wb1.close(); + // manually check the file to make sure the cell is rendered as "5" + // Verified with LibreOffice 4.2.8.2 on 2015-12-28 + } + } } @Test public void testConditionalFormattingEvaluation() throws IOException { - final Workbook wb = XSSFTestDataSamples.openSampleWorkbook("61060-conditional-number-formatting.xlsx"); + try (Workbook wb = openSampleWorkbook("61060-conditional-number-formatting.xlsx")) { - final DataFormatter formatter = new DataFormatter(); - final FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); - final ConditionalFormattingEvaluator cfEvaluator = new ConditionalFormattingEvaluator(wb, (WorkbookEvaluatorProvider) evaluator); + final DataFormatter formatter = new DataFormatter(); + final FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); + final ConditionalFormattingEvaluator cfEvaluator = new ConditionalFormattingEvaluator(wb, (WorkbookEvaluatorProvider) evaluator); - CellReference ref = new CellReference("A1"); - Cell cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol()); - assertEquals("0.10", formatter.formatCellValue(cell, evaluator, cfEvaluator)); - // verify cell format without the conditional rule applied - assertEquals("0.1", formatter.formatCellValue(cell, evaluator)); + CellReference ref = new CellReference("A1"); + Cell cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol()); + assertEquals("0.10", formatter.formatCellValue(cell, evaluator, cfEvaluator)); + // verify cell format without the conditional rule applied + assertEquals("0.1", formatter.formatCellValue(cell, evaluator)); - ref = new CellReference("A3"); - cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol()); - assertEquals("-2.00E+03", formatter.formatCellValue(cell, evaluator, cfEvaluator)); - // verify cell format without the conditional rule applied - assertEquals("-2000", formatter.formatCellValue(cell, evaluator)); + ref = new CellReference("A3"); + cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol()); + assertEquals("-2.00E+03", formatter.formatCellValue(cell, evaluator, cfEvaluator)); + // verify cell format without the conditional rule applied + assertEquals("-2000", formatter.formatCellValue(cell, evaluator)); - ref = new CellReference("A4"); - cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol()); - assertEquals("100", formatter.formatCellValue(cell, evaluator, cfEvaluator)); + ref = new CellReference("A4"); + cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol()); + assertEquals("100", formatter.formatCellValue(cell, evaluator, cfEvaluator)); - ref = new CellReference("A5"); - cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol()); - assertEquals("$1,000", formatter.formatCellValue(cell, evaluator, cfEvaluator)); - // verify cell format without the conditional rule applied - assertEquals("1000", formatter.formatCellValue(cell, evaluator)); - - wb.close(); + ref = new CellReference("A5"); + cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol()); + assertEquals("$1,000", formatter.formatCellValue(cell, evaluator, cfEvaluator)); + // verify cell format without the conditional rule applied + assertEquals("1000", formatter.formatCellValue(cell, evaluator)); + } } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java index 84e5835bdc..f1b58eeed5 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java @@ -20,6 +20,7 @@ package org.apache.poi.xssf.usermodel; import static org.junit.jupiter.api.Assertions.*; import java.io.IOException; +import java.util.stream.Stream; import org.apache.poi.common.usermodel.fonts.FontCharset; import org.apache.poi.ooxml.POIXMLException; @@ -35,6 +36,7 @@ import org.apache.poi.util.LocaleUtil; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.provider.Arguments; import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STVerticalAlignRun; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor; @@ -55,9 +57,9 @@ public final class TestXSSFFont extends BaseTestFont{ super(XSSFITestDataProvider.instance); } - @Test - public void testDefaultFont() throws IOException { - baseTestDefaultFont("Calibri", (short) 220, IndexedColors.BLACK.getIndex()); + @SuppressWarnings("unused") + public static Stream defaultFont() { + return Stream.of(Arguments.of("Calibri", (short) 220, IndexedColors.BLACK.getIndex())); } @Test @@ -157,18 +159,18 @@ public final class TestXSSFFont extends BaseTestFont{ // Now try with a few sample files // Normal charset - XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx"); - assertEquals(0, + try (XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx")) { + assertEquals(0, wb1.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getFont().getCharSet() - ); - wb1.close(); + ); + } // GB2312 charset - XSSFWorkbook wb2 = XSSFTestDataSamples.openSampleWorkbook("49273.xlsx"); - assertEquals(134, + try (XSSFWorkbook wb2 = XSSFTestDataSamples.openSampleWorkbook("49273.xlsx")) { + assertEquals(134, wb2.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getFont().getCharSet() - ); - wb2.close(); + ); + } } @Test @@ -360,12 +362,12 @@ public final class TestXSSFFont extends BaseTestFont{ // store test from TestSheetUtil here as it uses XSSF @Test public void testCanComputeWidthXSSF() throws IOException { - Workbook wb = new XSSFWorkbook(); + try (Workbook wb = new XSSFWorkbook()) { - // cannot check on result because on some machines we get back false here! - SheetUtil.canComputeColumnWidth(wb.getFontAt(0)); + // cannot check on result because on some machines we get back false here! + SheetUtil.canComputeColumnWidth(wb.getFontAt(0)); - wb.close(); + } } // store test from TestSheetUtil here as it uses XSSF @@ -383,101 +385,101 @@ public final class TestXSSFFont extends BaseTestFont{ */ @Test public void testFindFont() throws IOException { - XSSFWorkbook wb = new XSSFWorkbook(); - assertEquals(1, wb.getNumberOfFonts()); + try (XSSFWorkbook wb = new XSSFWorkbook()) { + assertEquals(1, wb.getNumberOfFonts()); - XSSFSheet s = wb.createSheet(); - s.createRow(0); - s.createRow(1); - s.getRow(0).createCell(0); - s.getRow(1).createCell(0); + XSSFSheet s = wb.createSheet(); + s.createRow(0); + s.createRow(1); + s.getRow(0).createCell(0); + s.getRow(1).createCell(0); - assertEquals(1, wb.getNumberOfFonts()); + assertEquals(1, wb.getNumberOfFonts()); - XSSFFont f1 = wb.getFontAt(0); - assertFalse(f1.getBold()); + XSSFFont f1 = wb.getFontAt(0); + assertFalse(f1.getBold()); - // Check that asking for the same font - // multiple times gives you the same thing. - // Otherwise, our tests wouldn't work! - assertSame(wb.getFontAt(0), wb.getFontAt(0)); - assertEquals( + // Check that asking for the same font + // multiple times gives you the same thing. + // Otherwise, our tests wouldn't work! + assertSame(wb.getFontAt(0), wb.getFontAt(0)); + assertEquals( wb.getFontAt(0), wb.getFontAt(0) - ); + ); - // Look for a new font we have - // yet to add - assertNull( + // Look for a new font we have + // yet to add + assertNull( wb.findFont( - false, IndexedColors.INDIGO.getIndex(), (short) 22, - "Thingy", false, true, (short) 2, (byte) 2 + false, IndexedColors.INDIGO.getIndex(), (short) 22, + "Thingy", false, true, (short) 2, (byte) 2 ) - ); - assertNull( + ); + assertNull( wb.getStylesSource().findFont( - false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22, - "Thingy", false, true, (short) 2, (byte) 2 + false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22, + "Thingy", false, true, (short) 2, (byte) 2 ) - ); + ); - XSSFFont nf = wb.createFont(); - assertEquals(2, wb.getNumberOfFonts()); + XSSFFont nf = wb.createFont(); + assertEquals(2, wb.getNumberOfFonts()); - assertEquals(1, nf.getIndex()); - assertEquals(nf, wb.getFontAt(1)); + assertEquals(1, nf.getIndex()); + assertEquals(nf, wb.getFontAt(1)); - nf.setBold(false); - nf.setColor(IndexedColors.INDIGO.getIndex()); - nf.setFontHeight((short) 22); - nf.setFontName("Thingy"); - nf.setItalic(false); - nf.setStrikeout(true); - nf.setTypeOffset((short) 2); - nf.setUnderline((byte) 2); + nf.setBold(false); + nf.setColor(IndexedColors.INDIGO.getIndex()); + nf.setFontHeight((short) 22); + nf.setFontName("Thingy"); + nf.setItalic(false); + nf.setStrikeout(true); + nf.setTypeOffset((short) 2); + nf.setUnderline((byte) 2); - assertEquals(2, wb.getNumberOfFonts()); - assertEquals(nf, wb.getFontAt(1)); + assertEquals(2, wb.getNumberOfFonts()); + assertEquals(nf, wb.getFontAt(1)); - assertNotSame(wb.getFontAt(0), wb.getFontAt(1)); + assertNotSame(wb.getFontAt(0), wb.getFontAt(1)); - // Find it now - assertNotNull( + // Find it now + assertNotNull( wb.findFont( - false, IndexedColors.INDIGO.getIndex(), (short) 22, - "Thingy", false, true, (short) 2, (byte) 2 + false, IndexedColors.INDIGO.getIndex(), (short) 22, + "Thingy", false, true, (short) 2, (byte) 2 ) - ); - assertNotNull( + ); + assertNotNull( wb.getStylesSource().findFont( - false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22, - "Thingy", false, true, (short) 2, (byte) 2 + false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22, + "Thingy", false, true, (short) 2, (byte) 2 ) - ); + ); - XSSFFont font = wb.findFont( + XSSFFont font = wb.findFont( false, IndexedColors.INDIGO.getIndex(), (short) 22, "Thingy", false, true, (short) 2, (byte) 2 - ); - assertNotNull(font); - assertEquals( + ); + assertNotNull(font); + assertEquals( 1, font.getIndex() - ); - assertEquals(nf, + ); + assertEquals(nf, wb.findFont( - false, IndexedColors.INDIGO.getIndex(), (short) 22, - "Thingy", false, true, (short) 2, (byte) 2 + false, IndexedColors.INDIGO.getIndex(), (short) 22, + "Thingy", false, true, (short) 2, (byte) 2 ) - ); - assertEquals(nf, + ); + assertEquals(nf, wb.getStylesSource().findFont( - false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22, - "Thingy", false, true, (short) 2, (byte) 2 + false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22, + "Thingy", false, true, (short) 2, (byte) 2 ) - ); + ); - wb.close(); + } } @Test diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java index 7f03808ea8..883b53165a 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java @@ -17,15 +17,16 @@ package org.apache.poi.xssf.usermodel; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; 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.assertThrows; -import static org.junit.jupiter.api.Assertions.fail; import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.function.Function; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.ss.usermodel.BaseTestFormulaEvaluator; @@ -40,6 +41,8 @@ import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { @@ -47,16 +50,11 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { super(XSSFITestDataProvider.instance); } - @Test - public void testSharedFormulas() throws IOException { - baseTestSharedFormulas("shared_formulas.xlsx"); - } - @Test public void testSharedFormulas_evaluateInCell() throws IOException { - try (XSSFWorkbook wb = (XSSFWorkbook)_testDataProvider.openSampleWorkbook("49872.xlsx")) { + try (Workbook wb = _testDataProvider.openSampleWorkbook("49872.xlsx")) { FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); - XSSFSheet sheet = wb.getSheetAt(0); + Sheet sheet = wb.getSheetAt(0); double result = 3.0; @@ -67,14 +65,14 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { // C3 and D3: // get B3 and evaluate it in the cell - XSSFCell b3 = sheet.getRow(2).getCell(1); + Cell b3 = sheet.getRow(2).getCell(1); assertEquals(result, evaluator.evaluateInCell(b3).getNumericCellValue(), 0); //at this point the master formula is gone, but we are still able to evaluate dependent cells - XSSFCell c3 = sheet.getRow(2).getCell(2); + Cell c3 = sheet.getRow(2).getCell(2); assertEquals(result, evaluator.evaluateInCell(c3).getNumericCellValue(), 0); - XSSFCell d3 = sheet.getRow(2).getCell(3); + Cell d3 = sheet.getRow(2).getCell(3); assertEquals(result, evaluator.evaluateInCell(d3).getNumericCellValue(), 0); } } @@ -84,16 +82,16 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { */ @Test public void testEvaluateColumnGreaterThan255() throws IOException { - try (XSSFWorkbook wb = (XSSFWorkbook) _testDataProvider.openSampleWorkbook("50096.xlsx")) { - XSSFFormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); + try (Workbook wb = _testDataProvider.openSampleWorkbook("50096.xlsx")) { + FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); /* * The first row simply contains the numbers 1 - 300. * The second row simply refers to the cell value above in the first row by a simple formula. */ for (int i = 245; i < 265; i++) { - XSSFCell cell_noformula = wb.getSheetAt(0).getRow(0).getCell(i); - XSSFCell cell_formula = wb.getSheetAt(0).getRow(1).getCell(i); + Cell cell_noformula = wb.getSheetAt(0).getRow(0).getCell(i); + Cell cell_formula = wb.getSheetAt(0).getRow(1).getCell(i); CellReference ref_noformula = new CellReference(cell_noformula.getRowIndex(), cell_noformula.getColumnIndex()); CellReference ref_formula = new CellReference(cell_noformula.getRowIndex(), cell_noformula.getColumnIndex()); @@ -118,9 +116,9 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { */ @Test public void testReferencesToOtherWorkbooks() throws Exception { - try (XSSFWorkbook wb = (XSSFWorkbook) _testDataProvider.openSampleWorkbook("ref2-56737.xlsx")) { - XSSFFormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); - XSSFSheet s = wb.getSheetAt(0); + try (Workbook wb = _testDataProvider.openSampleWorkbook("ref2-56737.xlsx")) { + FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); + Sheet s = wb.getSheetAt(0); // References to a .xlsx file Row rXSLX = s.getRow(2); @@ -226,16 +224,16 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { } } - /** + /* * If a formula references cells or named ranges in another workbook, * but that isn't available at evaluation time, the cached values * should be used instead * TODO Add the support then add a unit test * See bug #56752 */ - @Disabled - public void testCachedReferencesToOtherWorkbooks() { - } +// @Disabled +// public void testCachedReferencesToOtherWorkbooks() { +// } /** * A handful of functions (such as SUM, COUNTA, MIN) support @@ -244,12 +242,13 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { * This test, based on common test files for HSSF and XSSF, checks * that we can correctly evaluate these */ - @Test - public void testMultiSheetReferencesHSSFandXSSF() throws Exception { - Workbook wb1 = HSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xls"); - Workbook wb2 = XSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xlsx"); + @ParameterizedTest + @ValueSource(strings = {"55906-MultiSheetRefs.xls","55906-MultiSheetRefs.xlsx"}) + public void testMultiSheetReferencesHSSFandXSSF(String sampleFileName) throws Exception { + Function fun = sampleFileName.endsWith("x") + ? XSSFTestDataSamples::openSampleWorkbook : HSSFTestDataSamples::openSampleWorkbook; - for (Workbook wb : new Workbook[] {wb1,wb2}) { + try (Workbook wb = fun.apply(sampleFileName)) { FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); Sheet s1 = wb.getSheetAt(0); @@ -299,9 +298,6 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { assertEquals("COUNTA(Sheet1:Sheet3!E1)", countA_3F.getCellFormula()); assertEquals("3.0", evaluator.evaluate(countA_3F).formatAsString()); } - - wb2.close(); - wb1.close(); } /** @@ -311,12 +307,13 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { * This test, based on common test files for HSSF and XSSF, checks * that we can correctly evaluate these */ - @Test - public void testMultiSheetAreasHSSFandXSSF() throws IOException { - Workbook wb1 = HSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xls"); - Workbook wb2 = XSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xlsx"); + @ParameterizedTest + @ValueSource(strings = {"55906-MultiSheetRefs.xls","55906-MultiSheetRefs.xlsx"}) + public void testMultiSheetAreasHSSFandXSSF(String sampleFileName) throws Exception { + Function fun = sampleFileName.endsWith("x") + ? XSSFTestDataSamples::openSampleWorkbook : HSSFTestDataSamples::openSampleWorkbook; - for (Workbook wb : new Workbook[]{wb1,wb2}) { + try (Workbook wb = fun.apply(sampleFileName)) { FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); Sheet s1 = wb.getSheetAt(0); @@ -349,28 +346,20 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { assertEquals("COUNT(Sheet1:Sheet3!$A$1:$B$2)", countFA.getCellFormula()); assertEquals("4.0", evaluator.evaluate(countFA).formatAsString()); } - - wb2.close(); - wb1.close(); } - // bug 57721 - @Test - public void structuredReferences() throws IOException { - verifyAllFormulasInWorkbookCanBeEvaluated("evaluate_formula_with_structured_table_references.xlsx"); - } + @ParameterizedTest + @ValueSource(strings = { + // bug 57721 + "evaluate_formula_with_structured_table_references.xlsx" - // bug 57840 - @Disabled("Takes over a minute to evaluate all formulas in this large workbook. Run this test when profiling for formula evaluation speed.") - @Test - public void testLotsOfFormulasWithStructuredReferencesToCalculatedTableColumns() throws IOException { - verifyAllFormulasInWorkbookCanBeEvaluated("StructuredRefs-lots-with-lookups.xlsx"); - } - - // FIXME: use junit4 parametrization - private static void verifyAllFormulasInWorkbookCanBeEvaluated(String sampleWorkbook) throws IOException { + // bug 57840: + // Takes over a minute to evaluate all formulas in this large workbook. Run this test when profiling for formula evaluation speed. + // , "StructuredRefs-lots-with-lookups.xlsx" + }) + public void verifyAllFormulasInWorkbookCanBeEvaluated(String sampleWorkbook) throws IOException { try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook(sampleWorkbook)) { - XSSFFormulaEvaluator.evaluateAllFormulaCells(wb); + assertDoesNotThrow(() -> XSSFFormulaEvaluator.evaluateAllFormulaCells(wb)); } } @@ -415,19 +404,19 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { } @Test - @Disabled // this is from an open bug/discussion over handling localization for number formats + @Disabled("this is from an open bug/discussion over handling localization for number formats") public void testBug61495() throws IOException { try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("61495-test.xlsm")) { FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); Cell cell = wb.getSheetAt(0).getRow(0).getCell(1); -// assertEquals("D 67.10", cell.getStringCellValue()); + // assertEquals("D 67.10", cell.getStringCellValue()); - CellValue value = evaluator.evaluate(cell); - assertEquals("D 67.10", - value.getStringValue()); + String act = evaluator.evaluate(cell).getStringValue(); + assertEquals("D 67.10", act); - assertEquals("D 0,068", - evaluator.evaluate(wb.getSheetAt(0).getRow(1).getCell(1)).getStringValue()); + cell = wb.getSheetAt(0).getRow(1).getCell(1); + act = evaluator.evaluate(cell).getStringValue(); + assertEquals("D 0,068", act); } } @@ -444,7 +433,7 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { Cell value = evaluator.evaluateInCell(a2); assertEquals("a value", value.getStringCellValue(), "wrong value A2"); -// evaluator.clearAllCachedResultValues(); + // evaluator.clearAllCachedResultValues(); Cell a3 = wb.getSheetAt(0).getRow(2).getCell(0); value = evaluator.evaluateInCell(a3); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java index be741242c3..068f363883 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java @@ -26,6 +26,8 @@ import java.util.List; import org.apache.poi.ss.usermodel.BaseTestPicture; import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType; +import org.apache.poi.ss.usermodel.Drawing; +import org.apache.poi.ss.usermodel.Picture; import org.apache.poi.util.LocaleUtil; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; @@ -39,20 +41,10 @@ public final class TestXSSFPicture extends BaseTestPicture { super(XSSFITestDataProvider.instance); } - - @Test - public void resize() throws Exception { - try (XSSFWorkbook wb = XSSFITestDataProvider.instance.openSampleWorkbook("resize_compare.xlsx")) { - XSSFDrawing dp = wb.getSheetAt(0).createDrawingPatriarch(); - List pics = dp.getShapes(); - XSSFPicture inpPic = (XSSFPicture) pics.get(0); - XSSFPicture cmpPic = (XSSFPicture) pics.get(0); - - baseTestResize(inpPic, cmpPic, 2.0, 2.0); - } + protected Picture getPictureShape(Drawing pat, int picIdx) { + return (Picture)((XSSFDrawing)pat).getShapes().get(picIdx); } - @Test public void create() throws IOException { try (XSSFWorkbook wb = new XSSFWorkbook()) { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 204190b0c9..9113c2296d 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -101,11 +101,6 @@ public final class TestXSSFSheet extends BaseTestXSheet { //super.defaultColumnStyle(); } - @Test - public void getSetMargin() throws IOException { - baseTestGetSetMargin(new double[]{0.7, 0.7, 0.75, 0.75, 0.3, 0.3}); - } - @Test public void existingHeaderFooter() throws IOException { XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("45540_classic_Header.xlsx"); @@ -543,16 +538,15 @@ public final class TestXSSFSheet extends BaseTestXSheet { // Save and re-load try (XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1)) { sheet1 = wb2.getSheetAt(0); - // FIXME: forgot to reassign! - //cols = sheet1.getCTWorksheet().getColsArray(0); + cols = sheet1.getCTWorksheet().getColsArray(0); assertEquals(6, cols.sizeOfColArray()); - checkColumnGroup(cols.getColArray(0), 4, 7); // false, true - checkColumnGroup(cols.getColArray(1), 8, 8, false, false); - checkColumnGroup(cols.getColArray(2), 9, 9); // false, true - checkColumnGroup(cols.getColArray(3), 10, 11); // false, true - checkColumnGroup(cols.getColArray(4), 12, 12, false, false); - checkColumnGroup(cols.getColArray(5), 13, 13, false, false); + checkColumnGroup(cols.getColArray(0), 4, 7, false, true); + checkColumnGroup(cols.getColArray(1), 8, 8, false, true); + checkColumnGroup(cols.getColArray(2), 9, 9, false, true); + checkColumnGroup(cols.getColArray(3), 10, 11, false, true); + checkColumnGroup(cols.getColArray(4), 12, 12, false, true); + checkColumnGroup(cols.getColArray(5), 13, 13, false, true); } } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java index 230af2331e..196395eb6d 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java @@ -25,7 +25,6 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -513,11 +512,6 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook { } } - @Test - public void changeSheetNameWithSharedFormulas() throws IOException { - changeSheetNameWithSharedFormulas("shared_formulas.xlsx"); - } - @Test public void columnWidthPOI52233() throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDataFormat.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDataFormat.java index 2747b19d52..8a8b1063e6 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDataFormat.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDataFormat.java @@ -17,19 +17,20 @@ package org.apache.poi.hssf.usermodel; +import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; import java.io.IOException; +import java.util.Arrays; +import java.util.List; import org.apache.poi.hssf.HSSFITestDataProvider; -import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.ss.usermodel.BaseTestDataFormat; -import org.apache.poi.ss.usermodel.BuiltinFormats; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.DataFormat; import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; import org.junit.jupiter.api.Test; @@ -38,65 +39,31 @@ import org.junit.jupiter.api.Test; * Tests for {@link HSSFDataFormat} */ public final class TestHSSFDataFormat extends BaseTestDataFormat { - private static POILogger _logger = POILogFactory.getLogger(TestHSSFDataFormat.class); + private static final POILogger _logger = POILogFactory.getLogger(TestHSSFDataFormat.class); public TestHSSFDataFormat() { super(HSSFITestDataProvider.instance); } - /** - * [Bug 49928] formatCellValue returns incorrect value for \u00a3 formatted cells - */ - @Override - @Test - public void test49928() throws IOException { - HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("49928.xls"); - doTest49928Core(wb); - - // an attempt to register an existing format returns its index - int poundFmtIdx = wb.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getDataFormat(); - assertEquals(poundFmtIdx, wb.createDataFormat().getFormat(poundFmt)); - - // now create a custom format with Pound (\u00a3) - DataFormat dataFormat = wb.createDataFormat(); - short customFmtIdx = dataFormat.getFormat("\u00a3##.00[Yellow]"); - assertTrue(customFmtIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX ); - assertEquals("\u00a3##.00[Yellow]", dataFormat.getFormat(customFmtIdx)); - - wb.close(); - } - - /** - * [Bug 58532] Handle formats that go numnum, numK, numM etc - */ - @Override - @Test - public void test58532() throws IOException { - HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("FormatKM.xls"); - doTest58532Core(wb); - wb.close(); - } - /** * Bug 51378: getDataFormatString method call crashes when reading the test file */ @Test public void test51378() throws IOException { - HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("12561-1.xls"); - for (int i = 0; i < wb.getNumberOfSheets(); i++) { - HSSFSheet sheet = wb.getSheetAt(i); - for (Row row : sheet) { - for (Cell cell : row) { - CellStyle style = cell.getCellStyle(); - - String fmt = style.getDataFormatString(); - if(fmt == null) { - _logger.log(POILogger.WARN, cell + ": " + fmt); + List expNull = Arrays.asList( "0-3-0","0-43-11" ); + try (HSSFWorkbook wb = openSampleWorkbook("12561-1.xls")) { + for (Sheet sheet : wb) { + for (Row row : sheet) { + for (Cell cell : row) { + CellStyle style = cell.getCellStyle(); + assertNotNull(style); + String coord = wb.getSheetIndex(sheet)+"-"+cell.getRowIndex()+"-"+cell.getColumnIndex(); + String fmt = style.getDataFormatString(); + assertEquals(expNull.contains(coord), fmt == null, coord+" unexpected"); } } } } - wb.close(); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java index 538d266cf4..09bad315a6 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFEvaluationSheet.java @@ -17,13 +17,15 @@ package org.apache.poi.hssf.usermodel; +import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; + +import java.io.IOException; import java.util.AbstractMap; import java.util.Map; -import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.ss.formula.EvaluationSheet; import org.apache.poi.ss.usermodel.BaseTestXEvaluationSheet; -import org.apache.poi.ss.usermodel.Name; import org.apache.poi.ss.usermodel.Sheet; import org.junit.jupiter.api.Test; @@ -35,13 +37,12 @@ public class TestHSSFEvaluationSheet extends BaseTestXEvaluationSheet { } @Test - public void testMissingExternalName() { - HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("external_name.xls"); - for (Name name : wb.getAllNames()) { + public void testMissingExternalName() throws IOException { + try (HSSFWorkbook wb = openSampleWorkbook("external_name.xls")) { // this sometimes causes exceptions - if(!name.isFunctionName()) { - name.getRefersToFormula(); - } + wb.getAllNames().stream().filter(n -> !n.isFunctionName()).forEach( + n -> assertDoesNotThrow(n::getRefersToFormula) + ); } } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java index f05ebb5203..541b34708a 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java @@ -17,17 +17,15 @@ package org.apache.poi.hssf.usermodel; -import java.io.IOException; +import java.util.stream.Stream; import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.ss.usermodel.BaseTestFont; import org.apache.poi.ss.usermodel.Font; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.provider.Arguments; /** * Tests various functionality having to do with {@link org.apache.poi.ss.usermodel.Name}. - * - * @author Yegor Kozlov */ public final class TestHSSFFont extends BaseTestFont { @@ -35,8 +33,8 @@ public final class TestHSSFFont extends BaseTestFont { super(HSSFITestDataProvider.instance); } - @Test - public void testDefaultFont() throws IOException { - baseTestDefaultFont(HSSFFont.FONT_ARIAL, (short)200, Font.COLOR_NORMAL); + @SuppressWarnings("unused") + public static Stream defaultFont() { + return Stream.of(Arguments.of(HSSFFont.FONT_ARIAL, (short)200, Font.COLOR_NORMAL)); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java index c421e2cee5..f7dedf8c21 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFormulaEvaluator.java @@ -286,9 +286,4 @@ public final class TestHSSFFormulaEvaluator extends BaseTestFormulaEvaluator { } } } - - @Test - public void testSharedFormulas() throws IOException { - baseTestSharedFormulas("shared_formulas.xls"); - } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java index 5de42c63ef..51eea4a289 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java @@ -17,6 +17,7 @@ package org.apache.poi.hssf.usermodel; +import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -32,6 +33,8 @@ import org.apache.poi.hssf.model.InternalSheet; import org.apache.poi.ss.usermodel.BaseTestPicture; import org.apache.poi.ss.usermodel.ClientAnchor; import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.Drawing; +import org.apache.poi.ss.usermodel.Picture; import org.apache.poi.ss.usermodel.PictureData; import org.apache.poi.ss.usermodel.Workbook; import org.junit.jupiter.api.Test; @@ -42,16 +45,8 @@ public final class TestHSSFPicture extends BaseTestPicture { super(HSSFITestDataProvider.instance); } - @Test - public void resize() throws Exception { - try (HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("resize_compare.xls")) { - HSSFPatriarch dp = wb.getSheetAt(0).createDrawingPatriarch(); - List pics = dp.getChildren(); - HSSFPicture inpPic = (HSSFPicture) pics.get(0); - HSSFPicture cmpPic = (HSSFPicture) pics.get(1); - - baseTestResize(inpPic, cmpPic, 2.0, 2.0); - } + protected Picture getPictureShape(Drawing pat, int picIdx) { + return (Picture)((HSSFPatriarch)pat).getChildren().get(picIdx); } /** @@ -199,7 +194,7 @@ public final class TestHSSFPicture extends BaseTestPicture { @Test public void readExistingImage() throws IOException { - try (HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("drawings.xls")) { + try (HSSFWorkbook wb = openSampleWorkbook("drawings.xls")) { HSSFSheet sheet = wb.getSheet("picture"); HSSFPatriarch drawing = sheet.getDrawingPatriarch(); assertEquals(1, drawing.getChildren().size()); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java index 0bfef5735b..8efbfde89f 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java @@ -29,7 +29,6 @@ import java.io.IOException; import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.record.BlankRecord; import org.apache.poi.hssf.record.RowRecord; -import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.usermodel.BaseTestRow; import org.junit.jupiter.api.Test; @@ -44,16 +43,6 @@ public final class TestHSSFRow extends BaseTestRow { super(HSSFITestDataProvider.instance); } - @Test - public void testRowBounds() throws IOException { - baseTestRowBounds(SpreadsheetVersion.EXCEL97.getLastRowIndex()); - } - - @Test - public void testCellBounds() throws IOException { - baseTestCellBounds(SpreadsheetVersion.EXCEL97.getLastColumnIndex()); - } - @Test public void testLastAndFirstColumns_bug46654() throws IOException { int ROW_IX = 10; diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java index 38f5b28422..15c9ef2414 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java @@ -78,11 +78,6 @@ public final class TestHSSFSheet extends BaseTestSheet { } } - @Test - public void getSetMargin() throws IOException { - baseTestGetSetMargin(new double[]{0.75, 0.75, 1.0, 1.0, 0.3, 0.3}); - } - /** * Test the gridset field gets set as expected. */ @@ -555,22 +550,29 @@ public final class TestHSSFSheet extends BaseTestSheet { @Test public void addEmptyRow() throws IOException { //try to add 5 empty rows to a new sheet - try (HSSFWorkbook wb = new HSSFWorkbook()) { - HSSFSheet sheet = wb.createSheet(); + try (HSSFWorkbook wb1 = new HSSFWorkbook()) { + HSSFSheet sheet = wb1.createSheet(); for (int i = 0; i < 5; i++) { sheet.createRow(i); } - writeOutAndReadBack(wb).close(); + try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) { + HSSFSheet sheet2 = wb2.getSheetAt(0); + assertNotNull(sheet2.getRow(4)); + } } //try adding empty rows in an existing worksheet - try (HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("Simple.xls")) { + try (HSSFWorkbook wb1 = HSSFTestDataSamples.openSampleWorkbook("Simple.xls")) { + HSSFSheet sheet = wb1.getSheetAt(0); + for (int i = 3; i < 10; i++) { + sheet.createRow(i); + } - HSSFSheet sheet = wb.getSheetAt(0); - for (int i = 3; i < 10; i++) sheet.createRow(i); - - writeOutAndReadBack(wb).close(); + try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) { + HSSFSheet sheet2 = wb2.getSheetAt(0); + assertNotNull(sheet2.getRow(4)); + } } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java index 4a7c855958..9cf92f3c1e 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java @@ -19,6 +19,7 @@ package org.apache.poi.hssf.usermodel; import static org.apache.poi.POITestCase.assertContains; import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -71,7 +72,6 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.util.IOUtils; import org.apache.poi.util.TempFile; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -787,11 +787,6 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook { wb.close(); } - @Test - public void changeSheetNameWithSharedFormulas() throws IOException { - changeSheetNameWithSharedFormulas("shared_formulas.xls"); - } - // Should throw exception about invalid POIFSFileSystem @Test public void emptyDirectoryNode() throws IOException { @@ -863,12 +858,11 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook { @Test public void testMethods() throws IOException { - HSSFWorkbook wb=new HSSFWorkbook(); - wb.insertChartRecord(); - //wb.dumpDrawingGroupRecords(true); - //wb.dumpDrawingGroupRecords(false); - - wb.close(); + try (HSSFWorkbook wb=new HSSFWorkbook()) { + assertDoesNotThrow(wb::insertChartRecord); + //wb.dumpDrawingGroupRecords(true); + //wb.dumpDrawingGroupRecords(false); + } } @Test @@ -1114,14 +1108,12 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook { @Test public void setSheetOrderToEnd() throws Exception { - final HSSFWorkbook workbook = new HSSFWorkbook(); - workbook.createSheet("A"); - try { - for (int i = 0; i < 2 * workbook.getInternalWorkbook().getRecords().size(); i++) { - workbook.setSheetOrder("A", 0); - } - } catch (Exception e) { - throw new Exception("Moving a sheet to the end should not throw an exception, but threw ", e); + try (HSSFWorkbook workbook = new HSSFWorkbook()) { + workbook.createSheet("A"); + workbook.createSheet("B"); + assertEquals("A", workbook.getSheetName(0)); + workbook.setSheetOrder("A", 1); + assertEquals("A", workbook.getSheetName(1)); } } @@ -1176,26 +1168,22 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook { @Test public void testWriteToNewFile() throws Exception { - // Open from a Stream - HSSFWorkbook wb = new HSSFWorkbook( - samples.openResourceAsStream("SampleSS.xls")); - // Save to a new temp file final File file = TempFile.createTempFile("TestHSSFWorkbook", ".xls"); - wb.write(file); - wb.close(); + + // Open from a Stream + try (HSSFWorkbook wb = new HSSFWorkbook( + samples.openResourceAsStream("SampleSS.xls"))) { + wb.write(file); + } // Read and check - wb = new HSSFWorkbook(new POIFSFileSystem(file)); - assertEquals(3, wb.getNumberOfSheets()); - wb.close(); + try (HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(file))) { + assertEquals(3, wb.getNumberOfSheets()); + } } - @Disabled - @Test - @Override public void createDrawing() throws Exception { - super.createDrawing(); // the dimensions for this image are different than for XSSF and SXSSF } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java b/src/testcases/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java index 340839bdde..7df9275555 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java @@ -18,6 +18,7 @@ package org.apache.poi.hssf.usermodel; import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.ByteArrayInputStream; @@ -36,9 +37,6 @@ import org.apache.poi.ss.usermodel.CreationHelper; import org.apache.poi.util.LocaleUtil; import org.junit.jupiter.api.Test; -/** - * - */ public final class TestOLE2Embeding { @Test @@ -46,7 +44,7 @@ public final class TestOLE2Embeding { // This used to break, until bug #43116 was fixed try (HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("ole2-embedding.xls")) { // Check we can get at the Escher layer still - workbook.getAllPictures(); + assertDoesNotThrow(workbook::getAllPictures); } } @@ -106,12 +104,6 @@ public final class TestOLE2Embeding { circle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL); circle.setNoFill(true); -// if (false) { -// FileOutputStream fos = new FileOutputStream("embed.xls"); -// wb.write(fos); -// fos.close(); -// } - HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); wb1.close(); diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataFormat.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataFormat.java index 4f6d4b6aa9..3fe041a1df 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataFormat.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataFormat.java @@ -32,6 +32,8 @@ import org.junit.jupiter.api.Test; */ public abstract class BaseTestDataFormat { + protected static final String POUND_FMT = "\"\u00a3\"#,##0;[Red]\\-\"\u00a3\"#,##0"; + private final ITestDataProvider _testDataProvider; protected BaseTestDataFormat(ITestDataProvider testDataProvider) { @@ -45,66 +47,80 @@ public abstract class BaseTestDataFormat { @Test public final void testBuiltinFormats() throws IOException { - Workbook wb = _testDataProvider.createWorkbook(); + try (Workbook wb = _testDataProvider.createWorkbook()) { - DataFormat df = wb.createDataFormat(); + DataFormat df = wb.createDataFormat(); - String[] formats = BuiltinFormats.getAll(); - for (int idx = 0; idx < formats.length; idx++) { - String fmt = formats[idx]; - assertEquals(idx, df.getFormat(fmt)); + String[] formats = BuiltinFormats.getAll(); + for (int idx = 0; idx < formats.length; idx++) { + String fmt = formats[idx]; + assertEquals(idx, df.getFormat(fmt)); + } + + //default format for new cells is General + Sheet sheet = wb.createSheet(); + Cell cell = sheet.createRow(0).createCell(0); + assertEquals(0, cell.getCellStyle().getDataFormat()); + assertEquals("General", cell.getCellStyle().getDataFormatString()); + + //create a custom data format + String customFmt = "#0.00 AM/PM"; + //check it is not in built-in formats + assertNotBuiltInFormat(customFmt); + int customIdx = df.getFormat(customFmt); + //The first user-defined format starts at 164. + assertTrue(customIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX); + //read and verify the string representation + assertEquals(customFmt, df.getFormat((short) customIdx)); } - - //default format for new cells is General - Sheet sheet = wb.createSheet(); - Cell cell = sheet.createRow(0).createCell(0); - assertEquals(0, cell.getCellStyle().getDataFormat()); - assertEquals("General", cell.getCellStyle().getDataFormatString()); - - //create a custom data format - String customFmt = "#0.00 AM/PM"; - //check it is not in built-in formats - assertNotBuiltInFormat(customFmt); - int customIdx = df.getFormat(customFmt); - //The first user-defined format starts at 164. - assertTrue(customIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX); - //read and verify the string representation - assertEquals(customFmt, df.getFormat((short)customIdx)); - - wb.close(); } /** * [Bug 49928] formatCellValue returns incorrect value for \u00a3 formatted cells */ @Test - public abstract void test49928() throws IOException; - protected final static String poundFmt = "\"\u00a3\"#,##0;[Red]\\-\"\u00a3\"#,##0"; - public void doTest49928Core(Workbook wb){ - DataFormatter df = new DataFormatter(); + public void test49928() throws IOException { + String fileName = "49928.xls" + (getClass().getName().contains("xssf") ? "x" : ""); + try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) { + DataFormatter df = new DataFormatter(); - Sheet sheet = wb.getSheetAt(0); - Cell cell = sheet.getRow(0).getCell(0); - CellStyle style = cell.getCellStyle(); + Sheet sheet = wb.getSheetAt(0); + Cell cell = sheet.getRow(0).getCell(0); + CellStyle style = cell.getCellStyle(); - // not expected normally, id of a custom format should be greater - // than BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX - short poundFmtIdx = 6; + // not expected normally, id of a custom format should be greater + // than BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX + short poundFmtIdx = 6; - assertEquals(poundFmt, style.getDataFormatString()); - assertEquals(poundFmtIdx, style.getDataFormat()); - assertEquals("\u00a31", df.formatCellValue(cell)); + assertEquals(POUND_FMT, style.getDataFormatString()); + assertEquals(poundFmtIdx, style.getDataFormat()); + assertEquals("\u00a31", df.formatCellValue(cell)); - DataFormat dataFormat = wb.createDataFormat(); - assertEquals(poundFmtIdx, dataFormat.getFormat(poundFmt)); - assertEquals(poundFmt, dataFormat.getFormat(poundFmtIdx)); + DataFormat dataFormat = wb.createDataFormat(); + assertEquals(poundFmtIdx, dataFormat.getFormat(POUND_FMT)); + assertEquals(POUND_FMT, dataFormat.getFormat(poundFmtIdx)); + + + // As of 2015-12-27, there is no way to override a built-in number format with POI XSSFWorkbook + // 49928.xlsx has been saved with a poundFmt that overrides the default value (dollar) + poundFmtIdx = wb.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getDataFormat(); + assertEquals(poundFmtIdx, dataFormat.getFormat(POUND_FMT)); + + // now create a custom format with Pound (\u00a3) + + String customFmt = "\u00a3##.00[Yellow]"; + assertNotBuiltInFormat(customFmt); + short customFmtIdx = dataFormat.getFormat(customFmt); + assertTrue(customFmtIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX); + assertEquals(customFmt, dataFormat.getFormat(customFmtIdx)); + } } @Test public void testReadbackFormat() throws IOException { readbackFormat("built-in format", "0.00"); - readbackFormat("overridden built-in format", poundFmt); + readbackFormat("overridden built-in format", POUND_FMT); String customFormat = "#0.00 AM/PM"; assertNotBuiltInFormat(customFormat); @@ -120,48 +136,53 @@ public abstract class BaseTestDataFormat { } } + /** + * [Bug 58532] Handle formats that go numnum, numK, numM etc + */ @Test - public abstract void test58532() throws IOException; - public void doTest58532Core(Workbook wb) { - Sheet s = wb.getSheetAt(0); - DataFormatter fmt = new DataFormatter(); - FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator(); + public void test58532() throws IOException { + String fileName = "FormatKM.xls" + (getClass().getName().contains("xssf") ? "x" : ""); + try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) { + Sheet s = wb.getSheetAt(0); + DataFormatter fmt = new DataFormatter(); + FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator(); - // Column A is the raw values - // Column B is the ##/#K/#M values - // Column C is strings of what they should look like - // Column D is the #.##/#.#K/#.#M values - // Column E is strings of what they should look like + // Column A is the raw values + // Column B is the ##/#K/#M values + // Column C is strings of what they should look like + // Column D is the #.##/#.#K/#.#M values + // Column E is strings of what they should look like - String formatKMWhole = "[>999999]#,,\"M\";[>999]#,\"K\";#"; - String formatKM3dp = "[>999999]#.000,,\"M\";[>999]#.000,\"K\";#.000"; + String formatKMWhole = "[>999999]#,,\"M\";[>999]#,\"K\";#"; + String formatKM3dp = "[>999999]#.000,,\"M\";[>999]#.000,\"K\";#.000"; - // Check the formats are as expected - Row headers = s.getRow(0); - assertNotNull(headers); - assertEquals(formatKMWhole, headers.getCell(1).getStringCellValue()); - assertEquals(formatKM3dp, headers.getCell(3).getStringCellValue()); + // Check the formats are as expected + Row headers = s.getRow(0); + assertNotNull(headers); + assertEquals(formatKMWhole, headers.getCell(1).getStringCellValue()); + assertEquals(formatKM3dp, headers.getCell(3).getStringCellValue()); - Row r2 = s.getRow(1); - assertNotNull(r2); - assertEquals(formatKMWhole, r2.getCell(1).getCellStyle().getDataFormatString()); - assertEquals(formatKM3dp, r2.getCell(3).getCellStyle().getDataFormatString()); + Row r2 = s.getRow(1); + assertNotNull(r2); + assertEquals(formatKMWhole, r2.getCell(1).getCellStyle().getDataFormatString()); + assertEquals(formatKM3dp, r2.getCell(3).getCellStyle().getDataFormatString()); - // For all of the contents rows, check that DataFormatter is able - // to format the cells to the same value as the one next to it - for (int rn=1; rn pat, int picIdx); - Dimension inpDim = ImageUtils.getDimensionFromAnchor(input); - Dimension cmpDim = ImageUtils.getDimensionFromAnchor(compare); + @Test + public void resize() throws IOException { + String fileName = "resize_compare.xls" + (getClass().getName().contains("xssf") ? "x" : ""); + double scaleX = 2; + double scaleY = 2; - double emuPX = Units.EMU_PER_PIXEL; + try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) { + Sheet sh = wb.getSheetAt(0); + Drawing pat = sh.createDrawingPatriarch(); - assertEquals(inpDim.getHeight(), cmpDim.getHeight(), emuPX*6, "the image height differs"); - assertEquals(inpDim.getWidth(), cmpDim.getWidth(), emuPX*6, "the image width differs"); - assertEquals(inpCA.getCol1(), cmpCA.getCol1(), "the starting column differs"); - assertEquals(inpCA.getDx1(), cmpCA.getDx1(), 1, "the column x-offset differs"); - assertEquals(inpCA.getDy1(), cmpCA.getDy1(), 1, "the column y-offset differs"); - assertEquals(inpCA.getCol2(), cmpCA.getCol2(), "the ending columns differs"); - // can't compare row heights because of variable test heights + Picture input = getPictureShape(pat, 0); + Picture compare = getPictureShape(pat, 1); - input.resize(); - inpDim = ImageUtils.getDimensionFromAnchor(input); + input.resize(scaleX, scaleY); - Dimension imgDim = input.getImageDimension(); + ClientAnchor inpCA = input.getClientAnchor(); + ClientAnchor cmpCA = compare.getClientAnchor(); - assertEquals(imgDim.getHeight(), inpDim.getHeight()/emuPX, 1, "the image height differs"); - assertEquals(imgDim.getWidth(), inpDim.getWidth()/emuPX, 1, "the image width differs"); + double origDy1 = inpCA.getDy1(); + double origDx1 = inpCA.getDx1(); + + Dimension inpDim = ImageUtils.getDimensionFromAnchor(input); + Dimension cmpDim = ImageUtils.getDimensionFromAnchor(compare); + + double emuPX = Units.EMU_PER_PIXEL; + + assertEquals(inpDim.getHeight(), cmpDim.getHeight(), emuPX * 6, "the image height differs"); + assertEquals(inpDim.getWidth(), cmpDim.getWidth(), emuPX * 6, "the image width differs"); + assertEquals(inpCA.getCol1(), cmpCA.getCol1(), "the starting column differs"); + assertEquals(inpCA.getDx1(), cmpCA.getDx1(), 1, "the column x-offset differs"); + assertEquals(inpCA.getDy1(), origDy1, 1, "the column y-offset differs - image has moved"); + assertEquals(inpCA.getDx1(), origDx1, 1, "the column x-offset differs - image has moved"); + assertEquals(inpCA.getDy1(), cmpCA.getDy1(), 1, "the column y-offset differs"); + assertEquals(inpCA.getCol2(), cmpCA.getCol2(), "the ending columns differs"); + // can't compare row heights because of variable test heights + + input.resize(); + inpDim = ImageUtils.getDimensionFromAnchor(input); + + Dimension imgDim = input.getImageDimension(); + + assertEquals(imgDim.getHeight(), inpDim.getHeight() / emuPX, 1, "the image height differs"); + assertEquals(imgDim.getWidth(), inpDim.getWidth() / emuPX, 1, "the image width differs"); + } } diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java index 2579ac1e98..2086fd70dc 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java @@ -144,7 +144,9 @@ public abstract class BaseTestRow { wb2.close(); } - protected void baseTestRowBounds(int maxRowNum) throws IOException { + @Test + public void testRowBounds() throws IOException { + int maxRowNum = _testDataProvider.getSpreadsheetVersion().getLastRowIndex(); try (Workbook workbook = _testDataProvider.createWorkbook()) { Sheet sheet = workbook.createSheet(); //Test low row bound @@ -161,7 +163,9 @@ public abstract class BaseTestRow { } } - protected void baseTestCellBounds(int maxCellNum) throws IOException { + @Test + protected void testCellBounds() throws IOException { + int maxCellNum = _testDataProvider.getSpreadsheetVersion().getLastColumnIndex(); try (Workbook wb1 = _testDataProvider.createWorkbook()) { Sheet sheet = wb1.createSheet(); diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java index 978c36c278..56efecc08a 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java @@ -755,7 +755,12 @@ public abstract class BaseTestSheet { } } - public void baseTestGetSetMargin(double[] defaultMargins) throws IOException { + @Test + public void testGetSetMargin() throws IOException { + double[] defaultMargins = (getClass().getName().contains("xssf")) + ? new double[]{0.7, 0.7, 0.75, 0.75, 0.3, 0.3} + : new double[]{0.75, 0.75, 1.0, 1.0, 0.3, 0.3}; + double marginLeft = defaultMargins[0]; double marginRight = defaultMargins[1]; double marginTop = defaultMargins[2]; diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java index 08835946ba..b0015b18c3 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java @@ -723,7 +723,10 @@ public abstract class BaseTestWorkbook { } } - protected void changeSheetNameWithSharedFormulas(String sampleFile) throws IOException { + @Test + public void changeSheetNameWithSharedFormulas() throws IOException { + String sampleFile = "shared_formulas.xls" + (getClass().getName().contains("xssf") ? "x" : ""); + try (Workbook wb = _testDataProvider.openSampleWorkbook(sampleFile)) { FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); diff --git a/test-data/spreadsheet/resize_compare.xlsx b/test-data/spreadsheet/resize_compare.xlsx index 7fb4437fe86662f6df30d334f2d81571e6cd7ab1..d37771cf39583153fd1f29e59f86b9153946fe8e 100644 GIT binary patch delta 912 zcmcb-jHzQe(*&u_EPaz0Cr@RO*eErbW%9gc_Q`hj&&8P;7&sUrw`c^_d{UG$VPaso z$icuM!7zE^M5+3x!MC$+I|$UC57+s9&m-z|SB_4*z~m&2wVH3)*MzUmNYqa%uRXc_ z>%#e0;$K7*MR+SN5(#3ey*<;i_*sw1^XvWdyKgU^lyQEou$#EW&OXCOvt|apIL=i6 z|Jw(}<0mRtd297PW379{cVBP4*zrr}`14W)zhs-YZ#b~^`&pYVnflc`7rnb>663tp zC@heFVQr6>H~)b(DK3vJx?_?pbz{%&j4u_fdA7Lz;Ib7L&i}1nax7$OLQU!ozrwfH zLZ?-~9?A&sKKAgbsMFh3{}SHqoKimP>M^A_uKMR(KHJZonEPD!UC){|fw2{S2FlYv zDp}dLFVzp-suC>0J7L1Bg=;Kz>V;R7olkt(a_*5y`@ad6uRDJ=?eaatU78XSYqnGI z@uNJqqZ2JoJ_^5DS-fzq;F{wLzDpl8+jg2YcK&ziZkNaei!fi&n5R+Z*89T>>{QFo zh)KBX&$3!)CV#A*lX2J7MU?_UaRwL6I^WD$t=oREELP3p72}-kcQ)@j+nU2_6K`4n zdHRhEj<4T^}ao885YLdc0hJP&Q93Qf~5({~t=G+w2hCQ_nm>YVukZp~?IcSvPY! z>Dg{x%i?Ogd2$msq~?{xhg24%7ROF*m?ScJ zNxu}+D#pnN`puaRGfn>4Z^N{Md9wKgTP9`J$z>CCCaX-8VzOnM>@ZPN!=70LM+#N} znGOUB4OrtB05=QqQKLWv|z3)(#;{%0g*FXg@$J%dtQgBWW-B`;P2&mMsp1wuHXeqd7C@ zj7JB&zC9@!9k_ME=n5q_F^afmrV;wNLO*{zd@fMrJk<@AM)L~2aEET|PwP`-%cI-a z2>P`v;aH*0`@Y23v5qV1ZcNWLpnt8gih4NOXWUqN1ZE{MiQ^o*-g4Twj&r{m5p?FG zf54`w&{O}rrZH_R7~dGSS6us%#BxbJ?80@Tcc>n|(;v+}m-0@t&e(`I!r!?H(Va7L z@A9Ra+%dQq zgfF$B6Q7x{h;~x+4?@Cc&>@a&$<>YnvE4Qa>>Q8zfIDxwXI%(eXnEqyQ?mX6164FwKr#4}*5e*r9nGjzsn@Isy-B3@btzDV(BmGLUdFL#W zguLIdi+SO+D6;Gg;VhmPPO>=rE6XO6W$%sZspbFHwB$ofo26vA$R&SsZBk^5p&;0n zZ^2vq$f-V*`<0Fnli!2%q!PJ{~qvk8ix1(U@B7_(W0umrIh zk^z(Gk0=TN0001Aa%F6DFO%Pp6_YQJ8Uh&slS`010uBO`iI6=4c>|L_1ss#)kPwsb zks1P%1d|MsC6n-x8Uolslgp7Mlk|`p0v&&o5Roa9=#UH?RQ)9069NDLk_G?(7ytkO z0000000000001C>lVOn>lOd8S0(pXyP=pqf+mb2*goBd{iY1dQlPUszgp*j49Ft{| yC;~c(laG=)0uzjr%90_IwT~JC>W!1pj~5gL1^@s601f~S0I3520F;ja0002Q3Tp=d