aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org/apache/poi/ss/usermodel
diff options
context:
space:
mode:
Diffstat (limited to 'src/testcases/org/apache/poi/ss/usermodel')
-rw-r--r--src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
index c1b66a3a8f..9161b0a98f 100644
--- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
+++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
@@ -1120,4 +1120,35 @@ public abstract class BaseTestBugzillaIssues {
assertTrue("HSSF will currently return empty string, XSSF/SXSSF will return null, but had: " + value,
value == null || value.length() == 0);
}
+
+ /**
+ * Formulas with Nested Ifs, or If with text functions like
+ * Mid in it, can give #VALUE in Excel
+ */
+ @Test
+ public void bug55747() {
+ Workbook wb = _testDataProvider.createWorkbook();
+ FormulaEvaluator ev = wb.getCreationHelper().createFormulaEvaluator();
+ Sheet s = wb.createSheet();
+
+ Row row = s.createRow(0);
+ row.createCell(0).setCellValue("abc");
+ row.createCell(1).setCellValue("");
+ row.createCell(2).setCellValue(3);
+
+ Cell cell = row.createCell(5);
+ cell.setCellFormula("IF(A1<>\"\",MID(A1,1,2),\" \")");
+ ev.evaluateAll();
+ assertEquals("ab", cell.getStringCellValue());
+
+ cell = row.createCell(6);
+ cell.setCellFormula("IF(B1<>\"\",MID(A1,1,2),\"empty\")");
+ ev.evaluateAll();
+ assertEquals("empty", cell.getStringCellValue());
+
+ cell = row.createCell(7);
+ cell.setCellFormula("IF(A1<>\"\",IF(C1<>\"\",MID(A1,1,2),\"c1\"),\"c2\")");
+ ev.evaluateAll();
+ assertEquals("ab", cell.getStringCellValue());
+ }
}