diff options
author | PJ Fanning <fanningpj@apache.org> | 2020-08-14 07:42:18 +0000 |
---|---|---|
committer | PJ Fanning <fanningpj@apache.org> | 2020-08-14 07:42:18 +0000 |
commit | 4e3008acdb1287325e93ce27de91e28d265be058 (patch) | |
tree | 6a799ecd243ec4106f4d9378cdb8e51744097cdc /src/testcases/org | |
parent | dfdf9e6d6f470b82ad2a6b77e3059dd0df23905b (diff) | |
download | poi-4e3008acdb1287325e93ce27de91e28d265be058.tar.gz poi-4e3008acdb1287325e93ce27de91e28d265be058.zip |
[github-191] Fix RuntimeException on array formula referencing blank cell. Thanks to Miłosz Rembisz. This closes #191
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1880844 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases/org')
-rw-r--r-- | src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java b/src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java index 06c37dc025..bf89fca10c 100644 --- a/src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java +++ b/src/testcases/org/apache/poi/ss/formula/TestWorkbookEvaluator.java @@ -46,6 +46,7 @@ import org.apache.poi.ss.usermodel.Name; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.util.CellRangeAddress; import org.junit.Ignore; import org.junit.Test; @@ -613,4 +614,42 @@ public class TestWorkbookEvaluator { testIFEqualsFormulaEvaluation_teardown(wb); } + + @Test + public void testRefToBlankCellInArrayFormula() { + Workbook wb = new HSSFWorkbook(); + Sheet sheet = wb.createSheet(); + Row row = sheet.createRow(0); + Cell cellA1 = row.createCell(0); + Cell cellB1 = row.createCell(1); + Cell cellC1 = row.createCell(2); + Row row2 = sheet.createRow(1); + Cell cellA2 = row2.createCell(0); + Cell cellB2 = row2.createCell(1); + Cell cellC2 = row2.createCell(2); + Row row3 = sheet.createRow(2); + Cell cellA3 = row3.createCell(0); + Cell cellB3 = row3.createCell(1); + Cell cellC3 = row3.createCell(2); + + cellA1.setCellValue("1"); + // cell B1 intentionally left blank + cellC1.setCellValue("3"); + + cellA2.setCellFormula("A1"); + cellB2.setCellFormula("B1"); + cellC2.setCellFormula("C1"); + + sheet.setArrayFormula("A1:C1", CellRangeAddress.valueOf("A3:C3")); + + wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); + + assertEquals(cellA2.getStringCellValue(), "1"); + assertEquals(cellB2.getNumericCellValue(),0, 0.00001); + assertEquals(cellC2.getStringCellValue(),"3"); + + assertEquals(cellA3.getStringCellValue(), "1"); + assertEquals(cellB3.getNumericCellValue(),0, 0.00001); + assertEquals(cellC3.getStringCellValue(),"3"); + } } |