From 6c05ec47f2e7bb42f630815cb9aba9a88f9197ad Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 17 Jul 2014 16:18:39 +0000 Subject: [PATCH] Add disabled unit tests for bug #56737, which currently fails (differently) for HSSF and XSSF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1611400 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFBugs.java | 39 ++++++++++++++++++ .../apache/poi/hssf/usermodel/TestBugs.java | 39 ++++++++++++++++++ test-data/spreadsheet/56737.xls | Bin 0 -> 23552 bytes test-data/spreadsheet/56737.xlsx | Bin 0 -> 8936 bytes 4 files changed, 78 insertions(+) create mode 100644 test-data/spreadsheet/56737.xls create mode 100644 test-data/spreadsheet/56737.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 93d906f5e3..423220c66e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -1653,6 +1653,45 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals("0", formatter.formatCellValue(cell)); } + /** + * Formulas which reference named ranges, either in other + * sheets, or workbook scoped but in other workbooks. + * Currently failing with errors like + * org.apache.poi.ss.formula.FormulaParseException: Cell reference expected after sheet name at index 9 + * org.apache.poi.ss.formula.FormulaParseException: Parse error near char 0 '[' in specified formula '[0]!NR_Global_B2'. Expected number, string, or defined name + */ + @Ignore + @Test + public void bug56737() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56737.xlsx"); + + // Check the named range definitions + Name nSheetScope = wb.getName("NR_To_A1"); + Name nWBScope = wb.getName("NR_Global_B2"); + + assertNotNull(nSheetScope); + assertNotNull(nWBScope); + + assertEquals("Defines!$A$1", nSheetScope.getRefersToFormula()); + assertEquals("Defines!$B$2", nWBScope.getRefersToFormula()); + + // Check the different kinds of formulas + Sheet s = wb.getSheetAt(0); + Cell cRefSName = s.getRow(1).getCell(3); + Cell cRefWName = s.getRow(2).getCell(3); + + assertEquals("Defines!NR_To_A1", cRefSName.getCellFormula()); + assertEquals("[0]!NR_Global_B2", cRefWName.getCellFormula()); + + // Try to evaluate them + FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator(); + assertEquals("Test A1", eval.evaluate(cRefSName).getStringValue()); + assertEquals(142, (int)eval.evaluate(cRefWName).getNumberValue()); + + // Try to evaluate everything + eval.evaluateAll(); + } + private void saveAndReloadReport(Workbook wb, File outFile) throws IOException { // run some method on the font to verify if it is "disconnected" already //for(short i = 0;i < 256;i++) diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 141a8e4483..5d03b45d3f 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -67,6 +67,7 @@ import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.DataFormat; import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Name; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -2611,4 +2612,42 @@ public final class TestBugs extends BaseTestBugzillaIssues { wb = HSSFTestDataSamples.writeOutAndReadBack(wb); assertEquals(0, wb.getNumberOfSheets()); } + + /** + * Formulas which reference named ranges, either in other + * sheets, or workbook scoped but in other workbooks. + * Currently failing with + * java.lang.RuntimeException: Unexpected eval class (org.apache.poi.ss.formula.eval.NameXEval) + */ + @Ignore + @Test + public void bug56737() throws IOException { + Workbook wb = openSample("56737.xls"); + + // Check the named range definitions + Name nSheetScope = wb.getName("NR_To_A1"); + Name nWBScope = wb.getName("NR_Global_B2"); + + assertNotNull(nSheetScope); + assertNotNull(nWBScope); + + assertEquals("Defines!$A$1", nSheetScope.getRefersToFormula()); + assertEquals("Defines!$B$2", nWBScope.getRefersToFormula()); + + // Check the different kinds of formulas + Sheet s = wb.getSheetAt(0); + Cell cRefSName = s.getRow(1).getCell(3); + Cell cRefWName = s.getRow(2).getCell(3); + + assertEquals("Defines!NR_To_A1", cRefSName.getCellFormula()); + assertEquals("'56737.xls'!NR_Global_B2", cRefWName.getCellFormula()); + + // Try to evaluate them + FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator(); + assertEquals("Test A1", eval.evaluate(cRefSName).getStringValue()); + assertEquals(142, (int)eval.evaluate(cRefWName).getNumberValue()); + + // Try to evaluate everything + eval.evaluateAll(); + } } diff --git a/test-data/spreadsheet/56737.xls b/test-data/spreadsheet/56737.xls new file mode 100644 index 0000000000000000000000000000000000000000..59ab233a080e0290a43836c7d7c0000610edd086 GIT binary patch literal 23552 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 HbNv4SehB~N literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/56737.xlsx b/test-data/spreadsheet/56737.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3783483ef4a2c0aca9586b821cbc60f29d73f067 GIT binary patch literal 8936 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 literal 0 HcmV?d00001 -- 2.39.5