From 044151f658d7c1f5dec9087e6acd2a7e47452390 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 31 Jul 2015 23:53:54 +0000 Subject: [PATCH] Unit test for #55747 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1693674 13f79535-47bb-0310-9956-ffa450edef68 --- .../ss/usermodel/BaseTestBugzillaIssues.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) 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()); + } } -- 2.39.5