diff --git a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java index 6d40f40f56..60e3f3144c 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java +++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java @@ -25,4 +25,26 @@ class TestFormulaEval { assertEquals(CellType.ERROR, cell.getCellType()); } } + + @Test + void testCircularRef2() throws IOException { + try (XSSFWorkbook wb = new XSSFWorkbook()) { + XSSFSheet sheet = wb.createSheet(); + XSSFRow row = sheet.createRow(0); + XSSFCell cell0 = row.createCell(0); + XSSFCell cell1 = row.createCell(1); + cell0.setCellFormula("B1"); + cell1.setCellFormula("A1"); + XSSFFormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); + formulaEvaluator.evaluateAll(); + + cell0.setCellFormula(null); + cell1.setCellFormula(null); + formulaEvaluator.notifyUpdateCell(cell0); + formulaEvaluator.notifyUpdateCell(cell1); + //the following asserts should probably be BLANK not ERROR + assertEquals(CellType.ERROR, cell0.getCellType()); + assertEquals(CellType.ERROR, cell1.getCellType()); + } + } } diff --git a/poi/src/test/java/org/apache/poi/ss/formula/TestFormulaEval.java b/poi/src/test/java/org/apache/poi/ss/formula/TestFormulaEval.java index 3f2a43d76e..3a507f57c1 100644 --- a/poi/src/test/java/org/apache/poi/ss/formula/TestFormulaEval.java +++ b/poi/src/test/java/org/apache/poi/ss/formula/TestFormulaEval.java @@ -50,4 +50,26 @@ class TestFormulaEval { assertEquals(CellType.ERROR, cell.getCellType()); } } + + @Test + void testCircularRef2() throws IOException { + try (HSSFWorkbook wb = new HSSFWorkbook()) { + HSSFSheet sheet = wb.createSheet(); + HSSFRow row = sheet.createRow(0); + HSSFCell cell0 = row.createCell(0); + HSSFCell cell1 = row.createCell(1); + cell0.setCellFormula("B1"); + cell1.setCellFormula("A1"); + HSSFFormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); + formulaEvaluator.evaluateAll(); + + cell0.setCellFormula(null); + cell1.setCellFormula(null); + formulaEvaluator.notifyUpdateCell(cell0); + formulaEvaluator.notifyUpdateCell(cell1); + //the following asserts should probably be BLANK not ERROR + assertEquals(CellType.ERROR, cell0.getCellType()); + assertEquals(CellType.ERROR, cell1.getCellType()); + } + } }