]> source.dussan.org Git - poi.git/commitdiff
Start on unit tests for the problem reported in stackoverflow post 26437323
authorNick Burch <nick@apache.org>
Sat, 18 Oct 2014 20:37:56 +0000 (20:37 +0000)
committerNick Burch <nick@apache.org>
Sat, 18 Oct 2014 20:37:56 +0000 (20:37 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1632841 13f79535-47bb-0310-9956-ffa450edef68

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

index 5e044886c34e76199d864b5657b8edff3d4e70ac..0f20edc8f4ba985b7db5cee905c2773e83acd4ce 100644 (file)
@@ -527,4 +527,56 @@ public abstract class BaseTestBugzillaIssues {
         assertAlmostEquals(2225, s.getColumnWidth(11), fontAccuracy);
     }
     
+    /**
+     * =ISNUMBER(SEARCH("*AM*",A1)) not evaluating properly 
+     */
+    //@Test
+    public void stackoverflow26437323() throws Exception {
+        Workbook wb = _testDataProvider.createWorkbook();
+        Sheet s = wb.createSheet();
+        Row r1 = s.createRow(0);
+        Row r2 = s.createRow(1);
+        
+        // A1 is a number
+        r1.createCell(0).setCellValue(1.1);
+        // B1 is a string, with the wanted text in it
+        r1.createCell(1).setCellValue("This is text with AM in it");
+        // C1 is a string, with different text
+        r1.createCell(2).setCellValue("This some other text");
+        // D1 is a blank cell
+        r1.createCell(3, Cell.CELL_TYPE_BLANK);
+        // E1 is null
+        
+        // A2 will hold our test formulas
+        Cell cf = r2.createCell(0, Cell.CELL_TYPE_FORMULA);
+        
+        
+        // First up, check that TRUE and ISLOGICAL both behave
+        cf.setCellFormula("TRUE()");
+        cf = evaluateCell(wb, cf);
+        assertEquals(true, cf.getBooleanCellValue());
+        
+        cf.setCellFormula("ISLOGICAL(TRUE())");
+        cf = evaluateCell(wb, cf);
+        assertEquals(true, cf.getBooleanCellValue());
+        
+        cf.setCellFormula("ISLOGICAL(4)");
+        cf = evaluateCell(wb, cf);
+        assertEquals(false, cf.getBooleanCellValue());
+        
+        
+        // Now, check ISNUMBER / ISTEXT / ISNONTEXT
+        // TODO
+        
+        // Next up, SEARCH on its own
+        // TODO
+        
+        // Finally, bring it all together
+        // TODO
+    }
+    private Cell evaluateCell(Workbook wb, Cell c) {
+        Sheet s = c.getSheet();
+        wb.getCreationHelper().createFormulaEvaluator().evaluate(c);
+        return s.getRow(c.getRowIndex()).getCell(c.getColumnIndex());
+    }
 }