From bc4eb140c503bdeddd078d366d9c5502abab93ae Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 1 Jan 2018 14:39:08 +0000 Subject: [PATCH] Add test which verifies that bug 61652 is not appearing any more on latest trunk git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1819769 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFBugs.java | 22 ++++++++++++++++++ test-data/spreadsheet/61652.xlsx | Bin 0 -> 17614 bytes 2 files changed, 22 insertions(+) create mode 100644 test-data/spreadsheet/61652.xlsx diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 106dceb49..f5a51c100 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -65,11 +65,14 @@ import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.SpreadsheetVersion; +import org.apache.poi.ss.formula.ConditionalFormattingEvaluator; +import org.apache.poi.ss.formula.EvaluationConditionalFormatRule; import org.apache.poi.ss.formula.FormulaParser; import org.apache.poi.ss.formula.FormulaRenderer; import org.apache.poi.ss.formula.FormulaShifter; import org.apache.poi.ss.formula.FormulaType; import org.apache.poi.ss.formula.WorkbookEvaluator; +import org.apache.poi.ss.formula.WorkbookEvaluatorProvider; import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.formula.eval.NumberEval; import org.apache.poi.ss.formula.functions.Function; @@ -3209,4 +3212,23 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(1, cellValue.getNumberValue(), 0.0001); } } + + @Test + public void test61652() throws IOException { + try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("61652.xlsx")) { + Sheet sheet = wb.getSheet("IRPPCalc"); + Row row = sheet.getRow(11); + Cell cell = row.getCell(18); + WorkbookEvaluatorProvider fe = (WorkbookEvaluatorProvider) wb.getCreationHelper().createFormulaEvaluator(); + ConditionalFormattingEvaluator condfmt = new ConditionalFormattingEvaluator(wb, fe); + + assertEquals("Conditional formatting is not triggered for this cell", + "[]", condfmt.getConditionalFormattingForCell(cell).toString()); + + // but we can read the conditional formatting itself + List rules = condfmt.getFormatRulesForSheet(sheet); + assertEquals(1, rules.size()); + assertEquals("AND($A1>=EDATE($D$6,3),$B1>0)", rules.get(0).getFormula1()); + } + } } diff --git a/test-data/spreadsheet/61652.xlsx b/test-data/spreadsheet/61652.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..024d377c46d9400fc4c7cdd4b2c6c18156010138 GIT binary patch literal 17614 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