[bug-65939] add partial fix for clearing formula with circular ref

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1898681 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2022-03-07 13:15:01 +00:00
parent 3a496fded8
commit 19366d6013
2 changed files with 44 additions and 0 deletions

View File

@ -25,4 +25,26 @@ class TestFormulaEval {
assertEquals(CellType.ERROR, cell.getCellType()); 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());
}
}
} }

View File

@ -50,4 +50,26 @@ class TestFormulaEval {
assertEquals(CellType.ERROR, cell.getCellType()); 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());
}
}
} }