]> source.dussan.org Git - poi.git/commitdiff
Unit test for #55747
authorNick Burch <nick@apache.org>
Fri, 31 Jul 2015 23:53:54 +0000 (23:53 +0000)
committerNick Burch <nick@apache.org>
Fri, 31 Jul 2015 23:53:54 +0000 (23:53 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1693674 13f79535-47bb-0310-9956-ffa450edef68

src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java

index c1b66a3a8f2352d85c3d6d8aabf46f803bedce52..9161b0a98f1dded54ae55e41b56069540dbdc09e 100644 (file)
@@ -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());
+    }
 }