From: Nick Burch Date: Sat, 18 Oct 2014 20:37:56 +0000 (+0000) Subject: Start on unit tests for the problem reported in stackoverflow post 26437323 X-Git-Tag: REL_3_11_BETA3~51 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9517e9254e415875016f556a7e7fe436453a7c9e;p=poi.git Start on unit tests for the problem reported in stackoverflow post 26437323 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1632841 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java index 5e044886c3..0f20edc8f4 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java @@ -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()); + } }