fixed bug in junit which was exposed due to new caching feature of the formula evaluator

git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@693179 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2008-09-08 18:04:34 +00:00
parent 8e18c4ad16
commit d84d5e0b58
1 changed files with 65 additions and 67 deletions

View File

@ -26,79 +26,77 @@ import org.apache.poi.ss.usermodel.Workbook;
import junit.framework.TestCase;
public class TestXSSFFormulaEvaluation extends TestCase {
public TestXSSFFormulaEvaluation(String name) {
public TestXSSFFormulaEvaluation(String name) {
super(name);
// Use system out logger
System.setProperty(
"org.apache.poi.util.POILogger",
"org.apache.poi.util.SystemOutLogger"
);
System.setProperty(
"org.apache.poi.util.POILogger",
"org.apache.poi.util.SystemOutLogger"
);
}
public void testSimpleArithmatic() throws Exception {
Workbook wb = new XSSFWorkbook();
Sheet s = wb.createSheet();
Row r = s.createRow(0);
Cell c1 = r.createCell(0);
c1.setCellFormula("1+5");
assertTrue( Double.isNaN(c1.getNumericCellValue()) );
Cell c2 = r.createCell(1);
c2.setCellFormula("10/2");
assertTrue( Double.isNaN(c2.getNumericCellValue()) );
FormulaEvaluator fe = new FormulaEvaluator(s, wb);
fe.setCurrentRow(r);
fe.evaluateFormulaCell(c1);
fe.evaluateFormulaCell(c2);
assertEquals(6.0, c1.getNumericCellValue(), 0.0001);
assertEquals(5.0, c2.getNumericCellValue(), 0.0001);
}
public void testSumCount() throws Exception {
Workbook wb = new XSSFWorkbook();
Sheet s = wb.createSheet();
Row r = s.createRow(0);
r.createCell(0).setCellValue(2.5);
r.createCell(1).setCellValue(1.1);
r.createCell(2).setCellValue(3.2);
r.createCell(4).setCellValue(10.7);
r = s.createRow(1);
Cell c1 = r.createCell(0);
c1.setCellFormula("SUM(A1:B1)");
assertTrue( Double.isNaN(c1.getNumericCellValue()) );
Cell c2 = r.createCell(1);
c2.setCellFormula("SUM(A1:E1)");
assertTrue( Double.isNaN(c2.getNumericCellValue()) );
Cell c3 = r.createCell(2);
c3.setCellFormula("COUNT(A1:A1)");
assertTrue( Double.isNaN(c3.getNumericCellValue()) );
public void testSimpleArithmatic() {
Workbook wb = new XSSFWorkbook();
Sheet s = wb.createSheet();
Row r = s.createRow(0);
Cell c1 = r.createCell(0);
c1.setCellFormula("1+5");
assertTrue( Double.isNaN(c1.getNumericCellValue()) );
Cell c2 = r.createCell(1);
c2.setCellFormula("10/2");
assertTrue( Double.isNaN(c2.getNumericCellValue()) );
FormulaEvaluator fe = new FormulaEvaluator(s, wb);
fe.evaluateFormulaCell(c1);
fe.evaluateFormulaCell(c2);
assertEquals(6.0, c1.getNumericCellValue(), 0.0001);
assertEquals(5.0, c2.getNumericCellValue(), 0.0001);
}
public void testSumCount() {
Workbook wb = new XSSFWorkbook();
Sheet s = wb.createSheet();
Row r = s.createRow(0);
r.createCell(0).setCellValue(2.5);
r.createCell(1).setCellValue(1.1);
r.createCell(2).setCellValue(3.2);
r.createCell(4).setCellValue(10.7);
r = s.createRow(1);
Cell c1 = r.createCell(0);
c1.setCellFormula("SUM(A1:B1)");
assertTrue( Double.isNaN(c1.getNumericCellValue()) );
Cell c2 = r.createCell(1);
c2.setCellFormula("SUM(A1:E1)");
assertTrue( Double.isNaN(c2.getNumericCellValue()) );
Cell c3 = r.createCell(2);
c3.setCellFormula("COUNT(A1:A1)");
assertTrue( Double.isNaN(c3.getNumericCellValue()) );
Cell c4 = r.createCell(2);
c4.setCellFormula("COUNTA(A1:E1)");
assertTrue( Double.isNaN(c4.getNumericCellValue()) );
Cell c4 = r.createCell(3);
c4.setCellFormula("COUNTA(A1:E1)");
assertTrue( Double.isNaN(c4.getNumericCellValue()) );
// Evaluate and test
FormulaEvaluator fe = new FormulaEvaluator(s, wb);
fe.setCurrentRow(r);
fe.evaluateFormulaCell(c1);
fe.evaluateFormulaCell(c2);
fe.evaluateFormulaCell(c3);
fe.evaluateFormulaCell(c4);
assertEquals(3.6, c1.getNumericCellValue(), 0.0001);
assertEquals(17.5, c2.getNumericCellValue(), 0.0001);
assertEquals(1, c3.getNumericCellValue(), 0.0001);
assertEquals(4, c4.getNumericCellValue(), 0.0001);
}
// Evaluate and test
FormulaEvaluator fe = new FormulaEvaluator(s, wb);
fe.evaluateFormulaCell(c1);
fe.evaluateFormulaCell(c2);
fe.evaluateFormulaCell(c3);
fe.evaluateFormulaCell(c4);
assertEquals(3.6, c1.getNumericCellValue(), 0.0001);
assertEquals(17.5, c2.getNumericCellValue(), 0.0001);
assertEquals(1, c3.getNumericCellValue(), 0.0001);
assertEquals(4, c4.getNumericCellValue(), 0.0001);
}
}