aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2020-08-14 07:42:18 +0000
committerPJ Fanning <fanningpj@apache.org>2020-08-14 07:42:18 +0000
commit4e3008acdb1287325e93ce27de91e28d265be058 (patch)
tree6a799ecd243ec4106f4d9378cdb8e51744097cdc /src/testcases/org
parentdfdf9e6d6f470b82ad2a6b77e3059dd0df23905b (diff)
downloadpoi-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.java39
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");
+ }
}