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
This commit is contained in:
Andreas Beeker 2021-01-08 22:56:05 +00:00
parent 09464f1fea
commit fb2a96a048
29 changed files with 630 additions and 715 deletions

View File

@ -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;
}

View File

@ -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());
}
}

View File

@ -306,4 +306,8 @@ public final class TestDeferredSXSSFWorkbook extends BaseTestXWorkbook {
});
}
}
public void changeSheetNameWithSharedFormulas() {
/* not implemented */
}
}

View File

@ -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

View File

@ -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 */
}
}

View File

@ -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,50 +44,12 @@ 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();
try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
Cell cell = wb1.createSheet("bug58778").createRow(0).createCell(0);
cell.setCellValue(5.25);
CellStyle style = wb1.createCellStyle();
@ -96,28 +57,28 @@ public final class TestXSSFDataFormat extends BaseTestDataFormat {
XSSFDataFormat dataFormat = wb1.createDataFormat();
short poundFmtIdx = 6;
dataFormat.putFormat(poundFmtIdx, poundFmt);
dataFormat.putFormat(poundFmtIdx, POUND_FMT);
style.setDataFormat(poundFmtIdx);
cell.setCellStyle(style);
// Cell should appear as "<poundsymbol>5"
XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutCloseAndReadBack(wb1);
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(POUND_FMT, style.getDataFormatString());
assertEquals(poundFmtIdx, style.getDataFormat());
// manually check the file to make sure the cell is rendered as "<poundsymbol>5"
// Verified with LibreOffice 4.2.8.2 on 2015-12-28
wb2.close();
wb1.close();
}
}
}
@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();
@ -144,7 +105,6 @@ public final class TestXSSFDataFormat extends BaseTestDataFormat {
assertEquals("$1,000", formatter.formatCellValue(cell, evaluator, cfEvaluator));
// verify cell format without the conditional rule applied
assertEquals("1000", formatter.formatCellValue(cell, evaluator));
wb.close();
}
}
}

View File

@ -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<Arguments> 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");
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");
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));
wb.close();
}
}
// store test from TestSheetUtil here as it uses XSSF
@ -383,7 +385,7 @@ public final class TestXSSFFont extends BaseTestFont{
*/
@Test
public void testFindFont() throws IOException {
XSSFWorkbook wb = new XSSFWorkbook();
try (XSSFWorkbook wb = new XSSFWorkbook()) {
assertEquals(1, wb.getNumberOfFonts());
XSSFSheet s = wb.createSheet();
@ -477,7 +479,7 @@ public final class TestXSSFFont extends BaseTestFont{
)
);
wb.close();
}
}
@Test

View File

@ -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: <f t="shared" si="0"/>
// 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<String, Workbook> 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<String, Workbook> 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();
}
@ParameterizedTest
@ValueSource(strings = {
// bug 57721
@Test
public void structuredReferences() throws IOException {
verifyAllFormulasInWorkbookCanBeEvaluated("evaluate_formula_with_structured_table_references.xlsx");
}
"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);

View File

@ -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,19 +41,9 @@ 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<XSSFShape> 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 {

View File

@ -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);
}
}
}

View File

@ -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();

View File

@ -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);
List<String> 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();
if(fmt == null) {
_logger.log(POILogger.WARN, cell + ": " + fmt);
assertEquals(expNull.contains(coord), fmt == null, coord+" unexpected");
}
}
}
}
wb.close();
}
}

View File

@ -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)
);
}
}
}

View File

@ -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<Arguments> defaultFont() {
return Stream.of(Arguments.of(HSSFFont.FONT_ARIAL, (short)200, Font.COLOR_NORMAL));
}
}

View File

@ -286,9 +286,4 @@ public final class TestHSSFFormulaEvaluator extends BaseTestFormulaEvaluator {
}
}
}
@Test
public void testSharedFormulas() throws IOException {
baseTestSharedFormulas("shared_formulas.xls");
}
}

View File

@ -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<HSSFShape> 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());

View File

@ -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;

View File

@ -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));
}
}
}

View File

@ -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();
try (HSSFWorkbook wb=new HSSFWorkbook()) {
assertDoesNotThrow(wb::insertChartRecord);
//wb.dumpDrawingGroupRecords(true);
//wb.dumpDrawingGroupRecords(false);
wb.close();
}
}
@Test
@ -1114,14 +1108,12 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
@Test
public void setSheetOrderToEnd() throws Exception {
final HSSFWorkbook workbook = new HSSFWorkbook();
try (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);
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();
// Read and check
wb = new HSSFWorkbook(new POIFSFileSystem(file));
assertEquals(3, wb.getNumberOfSheets());
wb.close();
// Open from a Stream
try (HSSFWorkbook wb = new HSSFWorkbook(
samples.openResourceAsStream("SampleSS.xls"))) {
wb.write(file);
}
// Read and check
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
}
}

View File

@ -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();

View File

@ -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,7 +47,7 @@ public abstract class BaseTestDataFormat {
@Test
public final void testBuiltinFormats() throws IOException {
Workbook wb = _testDataProvider.createWorkbook();
try (Workbook wb = _testDataProvider.createWorkbook()) {
DataFormat df = wb.createDataFormat();
@ -69,18 +71,17 @@ public abstract class BaseTestDataFormat {
//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();
assertEquals(customFmt, df.getFormat((short) customIdx));
}
}
/**
* [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){
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);
@ -91,20 +92,35 @@ public abstract class BaseTestDataFormat {
// than BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX
short poundFmtIdx = 6;
assertEquals(poundFmt, style.getDataFormatString());
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));
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,9 +136,13 @@ 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) {
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();
@ -149,7 +169,7 @@ public abstract class BaseTestDataFormat {
// 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<s.getLastRowNum(); rn++) {
for (int rn = 1; rn < s.getLastRowNum(); rn++) {
Row r = s.getRow(rn);
if (r == null) break;
@ -164,20 +184,21 @@ public abstract class BaseTestDataFormat {
"Wrong formatting of " + value + " for row " + rn);
}
}
}
/**
* Localized accountancy formats
*/
@Test
public final void test58536() throws IOException {
Workbook wb = _testDataProvider.createWorkbook();
try (Workbook wb = _testDataProvider.createWorkbook()) {
DataFormatter formatter = new DataFormatter();
DataFormat fmt = wb.createDataFormat();
Sheet sheet = wb.createSheet();
Row r = sheet.createRow(0);
char pound = '\u00A3';
String formatUK = "_-[$"+pound+"-809]* #,##0_-;\\-[$"+pound+"-809]* #,##0_-;_-[$"+pound+"-809]* \"-\"??_-;_-@_-";
String formatUK = "_-[$" + pound + "-809]* #,##0_-;\\-[$" + pound + "-809]* #,##0_-;_-[$" + pound + "-809]* \"-\"??_-;_-@_-";
CellStyle cs = wb.createCellStyle();
cs.setDataFormat(fmt.getFormat(formatUK));
@ -194,12 +215,11 @@ public abstract class BaseTestDataFormat {
zero.setCellValue(0);
zero.setCellStyle(cs);
assertEquals(pound+" 12,345", formatter.formatCellValue(pve));
assertEquals("-"+pound+" 12,345", formatter.formatCellValue(nve));
assertEquals(pound + " 12,345", formatter.formatCellValue(pve));
assertEquals("-" + pound + " 12,345", formatter.formatCellValue(nve));
// TODO Fix this to not have an extra 0 at the end
//assertEquals(pound+" - ", formatter.formatCellValue(zero));
wb.close();
}
}
/**
@ -208,7 +228,7 @@ public abstract class BaseTestDataFormat {
*/
@Test
public final void test55265() throws IOException {
Workbook wb = _testDataProvider.createWorkbook();
try (Workbook wb = _testDataProvider.createWorkbook()) {
DataFormatter formatter = new DataFormatter();
DataFormat fmt = wb.createDataFormat();
Sheet sheet = wb.createSheet();
@ -237,6 +257,6 @@ public abstract class BaseTestDataFormat {
assertEquals("12", formatter.formatCellValue(sml));
assertEquals("1'234", formatter.formatCellValue(med));
assertEquals("12'345'678", formatter.formatCellValue(lge));
wb.close();
}
}
}

View File

@ -29,6 +29,8 @@ import java.io.IOException;
import org.apache.poi.ss.ITestDataProvider;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
/**
* @author Yegor Kozlov
@ -41,51 +43,54 @@ public abstract class BaseTestFont {
_testDataProvider = testDataProvider;
}
@SuppressWarnings("JUnit5MalformedParameterized")
@ParameterizedTest
@MethodSource("defaultFont")
protected final void baseTestDefaultFont(String defaultName, short defaultSize, short defaultColor) throws IOException {
//get default font and check against default value
Workbook workbook = _testDataProvider.createWorkbook();
Font fontFind=workbook.findFont(false, defaultColor, defaultSize, defaultName, false, false, Font.SS_NONE, Font.U_NONE);
try (Workbook workbook = _testDataProvider.createWorkbook()) {
Font fontFind = workbook.findFont(false, defaultColor, defaultSize, defaultName, false, false, Font.SS_NONE, Font.U_NONE);
assertNotNull(fontFind);
//get default font, then change 2 values and check against different values (height changes)
Font font=workbook.createFont();
Font font = workbook.createFont();
font.setBold(true);
assertTrue(font.getBold());
font.setUnderline(Font.U_DOUBLE);
assertEquals(Font.U_DOUBLE, font.getUnderline());
font.setFontHeightInPoints((short)15);
assertEquals(15*20, font.getFontHeight());
font.setFontHeightInPoints((short) 15);
assertEquals(15 * 20, font.getFontHeight());
assertEquals(15, font.getFontHeightInPoints());
fontFind=workbook.findFont(true, defaultColor, (short)(15*20), defaultName, false, false, Font.SS_NONE, Font.U_DOUBLE);
fontFind = workbook.findFont(true, defaultColor, (short) (15 * 20), defaultName, false, false, Font.SS_NONE, Font.U_DOUBLE);
assertNotNull(fontFind);
workbook.close();
}
}
@Test
public final void testGetNumberOfFonts() throws IOException {
Workbook wb = _testDataProvider.createWorkbook();
try (Workbook wb = _testDataProvider.createWorkbook()) {
int num0 = wb.getNumberOfFonts();
Font f1=wb.createFont();
Font f1 = wb.createFont();
f1.setBold(true);
int idx1 = f1.getIndex();
wb.createCellStyle().setFont(f1);
Font f2=wb.createFont();
Font f2 = wb.createFont();
f2.setUnderline(Font.U_DOUBLE);
int idx2 = f2.getIndex();
wb.createCellStyle().setFont(f2);
Font f3=wb.createFont();
f3.setFontHeightInPoints((short)23);
Font f3 = wb.createFont();
f3.setFontHeightInPoints((short) 23);
int idx3 = f3.getIndex();
wb.createCellStyle().setFont(f3);
assertEquals(num0 + 3,wb.getNumberOfFonts());
assertEquals(num0 + 3, wb.getNumberOfFonts());
assertTrue(wb.getFontAt(idx1).getBold());
assertEquals(Font.U_DOUBLE,wb.getFontAt(idx2).getUnderline());
assertEquals(23,wb.getFontAt(idx3).getFontHeightInPoints());
wb.close();
assertEquals(Font.U_DOUBLE, wb.getFontAt(idx2).getUnderline());
assertEquals(23, wb.getFontAt(idx3).getFontHeightInPoints());
}
}
/**
@ -94,7 +99,7 @@ public abstract class BaseTestFont {
*/
@Test
public final void testCreateSave() throws IOException {
Workbook wb1 = _testDataProvider.createWorkbook();
try (Workbook wb1 = _testDataProvider.createWorkbook()) {
Sheet s1 = wb1.createSheet();
Row r1 = s1.createRow(0);
Cell r1c1 = r1.createCell(0);
@ -102,7 +107,7 @@ public abstract class BaseTestFont {
int num0 = wb1.getNumberOfFonts();
Font font=wb1.createFont();
Font font = wb1.createFont();
font.setBold(true);
font.setStrikeout(true);
font.setColor(IndexedColors.YELLOW.getIndex());
@ -111,13 +116,12 @@ public abstract class BaseTestFont {
wb1.createCellStyle().setFont(font);
assertEquals(num0 + 1, wb1.getNumberOfFonts());
CellStyle cellStyleTitle=wb1.createCellStyle();
CellStyle cellStyleTitle = wb1.createCellStyle();
cellStyleTitle.setFont(font);
r1c1.setCellStyle(cellStyleTitle);
// Save and re-load
Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1);
wb1.close();
try (Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1)) {
s1 = wb2.getSheetAt(0);
assertEquals(num0 + 1, wb2.getNumberOfFonts());
@ -130,14 +134,13 @@ public abstract class BaseTestFont {
// Now add an orphaned one
Font font2 = wb2.createFont();
font2.setItalic(true);
font2.setFontHeightInPoints((short)15);
font2.setFontHeightInPoints((short) 15);
int font2Idx = font2.getIndex();
wb2.createCellStyle().setFont(font2);
assertEquals(num0 + 2, wb2.getNumberOfFonts());
// Save and re-load
Workbook wb3 = _testDataProvider.writeOutAndReadBack(wb2);
wb2.close();
try (Workbook wb3 = _testDataProvider.writeOutAndReadBack(wb2)) {
s1 = wb3.getSheetAt(0);
assertNotNull(s1);
@ -147,7 +150,9 @@ public abstract class BaseTestFont {
assertEquals(15, wb3.getFontAt(font2Idx).getFontHeightInPoints());
assertTrue(wb3.getFontAt(font2Idx).getItalic());
wb3.close();
}
}
}
}
/**
@ -155,7 +160,7 @@ public abstract class BaseTestFont {
*/
@Test
public final void test45338() throws IOException {
Workbook wb = _testDataProvider.createWorkbook();
try (Workbook wb = _testDataProvider.createWorkbook()) {
int num0 = wb.getNumberOfFonts();
Sheet s = wb.createSheet();
@ -177,8 +182,8 @@ public abstract class BaseTestFont {
// yet to add
assertNull(
wb.findFont(
true, (short)123, (short)(22*20),
"Thingy", false, true, (short)2, (byte)2
true, (short) 123, (short) (22 * 20),
"Thingy", false, true, (short) 2, (byte) 2
)
);
@ -189,13 +194,13 @@ public abstract class BaseTestFont {
assertSame(nf, wb.getFontAt(nfIdx));
nf.setBold(true);
nf.setColor((short)123);
nf.setFontHeightInPoints((short)22);
nf.setColor((short) 123);
nf.setFontHeightInPoints((short) 22);
nf.setFontName("Thingy");
nf.setItalic(false);
nf.setStrikeout(true);
nf.setTypeOffset((short)2);
nf.setUnderline((byte)2);
nf.setTypeOffset((short) 2);
nf.setUnderline((byte) 2);
assertEquals(num0 + 1, wb.getNumberOfFonts());
assertEquals(nf, wb.getFontAt(nfIdx));
@ -206,16 +211,16 @@ public abstract class BaseTestFont {
// Find it now
assertNotNull(
wb.findFont(
true, (short)123, (short)(22*20),
"Thingy", false, true, (short)2, (byte)2
true, (short) 123, (short) (22 * 20),
"Thingy", false, true, (short) 2, (byte) 2
)
);
assertSame(nf,
wb.findFont(
true, (short)123, (short)(22*20),
"Thingy", false, true, (short)2, (byte)2
true, (short) 123, (short) (22 * 20),
"Thingy", false, true, (short) 2, (byte) 2
)
);
wb.close();
}
}
}

View File

@ -116,8 +116,10 @@ public abstract class BaseTestFormulaEvaluator {
wb.close();
}
public void baseTestSharedFormulas(String sampleFile) throws IOException {
Workbook wb = _testDataProvider.openSampleWorkbook(sampleFile);
@Test
public void testSharedFormulas() throws IOException {
String fileName = "shared_formulas.xls" + (getClass().getName().contains("xssf") ? "x" : "");
try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) {
Sheet sheet = wb.getSheetAt(0);
@ -139,8 +141,7 @@ public abstract class BaseTestFormulaEvaluator {
cell = sheet.getRow(4).getCell(0);
assertEquals("B5", cell.getCellFormula());
assertEquals("UniqueDocumentNumberID", evaluator.evaluate(cell).getStringValue());
wb.close();
}
}
/**

View File

@ -53,21 +53,41 @@ public abstract class BaseTestPicture {
_testDataProvider = testDataProvider;
}
public void baseTestResize(Picture input, Picture compare, double scaleX, double scaleY) {
protected abstract Picture getPictureShape(Drawing<?> pat, int picIdx);
@Test
public void resize() throws IOException {
String fileName = "resize_compare.xls" + (getClass().getName().contains("xssf") ? "x" : "");
double scaleX = 2;
double scaleY = 2;
try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) {
Sheet sh = wb.getSheetAt(0);
Drawing<?> pat = sh.createDrawingPatriarch();
Picture input = getPictureShape(pat, 0);
Picture compare = getPictureShape(pat, 1);
input.resize(scaleX, scaleY);
ClientAnchor inpCA = input.getClientAnchor();
ClientAnchor cmpCA = compare.getClientAnchor();
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(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
@ -77,8 +97,9 @@ public abstract class BaseTestPicture {
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");
assertEquals(imgDim.getHeight(), inpDim.getHeight() / emuPX, 1, "the image height differs");
assertEquals(imgDim.getWidth(), inpDim.getWidth() / emuPX, 1, "the image width differs");
}
}

View File

@ -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();

View File

@ -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];

View File

@ -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();