]> source.dussan.org Git - poi.git/commitdiff
[bug-65939] add partial fix for clearing formula with circular ref
authorPJ Fanning <fanningpj@apache.org>
Mon, 7 Mar 2022 13:15:01 +0000 (13:15 +0000)
committerPJ Fanning <fanningpj@apache.org>
Mon, 7 Mar 2022 13:15:01 +0000 (13:15 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1898681 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java
poi/src/test/java/org/apache/poi/ss/formula/TestFormulaEval.java

index 6d40f40f56a7950f540778b0432e9ac89d914fbe..60e3f3144cddee7b94684ddf374076e705514188 100644 (file)
@@ -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());
+        }
+    }
 }
index 3f2a43d76ea4c21dd25ed5c7a57bfc5939c39faa..3a507f57c150d24d9ba50cc9d544c3a854c536d9 100644 (file)
@@ -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());
+        }
+    }
 }