From b160859167ec92f705f6285f2648eea1f3174e4e Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 16 Mar 2008 15:38:09 +0000 Subject: [PATCH] Patch from Josh from bug #44608 - Support for PercentPtg in the formula evaluator git-svn-id: https://svn.eu.apache.org/repos/asf/poi/trunk@637598 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../poi/hssf/usermodel/HSSFFormulaEvaluator.java | 76 +----- .../hssf/usermodel/OperationEvaluatorFactory.java | 165 +++++++++++++ .../record/formula/eval/AllFormulaEvalTests.java | 1 + .../formula/eval/TestFormulasFromSpreadsheet.java | 261 ++++++++++----------- .../hssf/record/formula/eval/TestPercentEval.java | 82 +++++++ .../apache/poi/hssf/data/FormulaEvalTestData.xls | Bin 136704 -> 136704 bytes 8 files changed, 381 insertions(+), 206 deletions(-) create mode 100755 src/scratchpad/src/org/apache/poi/hssf/usermodel/OperationEvaluatorFactory.java create mode 100755 src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestPercentEval.java rewrite src/testcases/org/apache/poi/hssf/data/FormulaEvalTestData.xls (61%) diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 3b245dc..2b12bdf 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -36,6 +36,7 @@ + 44608 - Support for PercentPtg in the formula evaluator 44606 - Support calculated string values for evaluated formulas Add accessors to horizontal and vertical alignment in HSSFTextbox 44593 - Improved handling of short DVRecords diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index e174c79..57bc3fa 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -33,6 +33,7 @@ + 44608 - Support for PercentPtg in the formula evaluator 44606 - Support calculated string values for evaluated formulas Add accessors to horizontal and vertical alignment in HSSFTextbox 44593 - Improved handling of short DVRecords diff --git a/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java b/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java index 3fce306..58ab5b4 100644 --- a/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java +++ b/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java @@ -24,71 +24,40 @@ import java.util.Stack; import org.apache.poi.hssf.model.FormulaParser; import org.apache.poi.hssf.model.Workbook; -import org.apache.poi.hssf.record.formula.AddPtg; import org.apache.poi.hssf.record.formula.Area3DPtg; import org.apache.poi.hssf.record.formula.AreaPtg; import org.apache.poi.hssf.record.formula.AttrPtg; import org.apache.poi.hssf.record.formula.BoolPtg; -import org.apache.poi.hssf.record.formula.ConcatPtg; import org.apache.poi.hssf.record.formula.ControlPtg; -import org.apache.poi.hssf.record.formula.DividePtg; -import org.apache.poi.hssf.record.formula.EqualPtg; -import org.apache.poi.hssf.record.formula.FuncPtg; -import org.apache.poi.hssf.record.formula.FuncVarPtg; -import org.apache.poi.hssf.record.formula.GreaterEqualPtg; -import org.apache.poi.hssf.record.formula.GreaterThanPtg; import org.apache.poi.hssf.record.formula.IntPtg; -import org.apache.poi.hssf.record.formula.LessEqualPtg; -import org.apache.poi.hssf.record.formula.LessThanPtg; import org.apache.poi.hssf.record.formula.MemErrPtg; import org.apache.poi.hssf.record.formula.MissingArgPtg; -import org.apache.poi.hssf.record.formula.MultiplyPtg; import org.apache.poi.hssf.record.formula.NamePtg; import org.apache.poi.hssf.record.formula.NameXPtg; -import org.apache.poi.hssf.record.formula.NotEqualPtg; import org.apache.poi.hssf.record.formula.NumberPtg; import org.apache.poi.hssf.record.formula.OperationPtg; import org.apache.poi.hssf.record.formula.ParenthesisPtg; -import org.apache.poi.hssf.record.formula.PowerPtg; import org.apache.poi.hssf.record.formula.Ptg; import org.apache.poi.hssf.record.formula.Ref3DPtg; import org.apache.poi.hssf.record.formula.ReferencePtg; import org.apache.poi.hssf.record.formula.StringPtg; -import org.apache.poi.hssf.record.formula.SubtractPtg; -import org.apache.poi.hssf.record.formula.UnaryMinusPtg; -import org.apache.poi.hssf.record.formula.UnaryPlusPtg; import org.apache.poi.hssf.record.formula.UnionPtg; import org.apache.poi.hssf.record.formula.UnknownPtg; -import org.apache.poi.hssf.record.formula.eval.AddEval; import org.apache.poi.hssf.record.formula.eval.Area2DEval; import org.apache.poi.hssf.record.formula.eval.Area3DEval; import org.apache.poi.hssf.record.formula.eval.AreaEval; import org.apache.poi.hssf.record.formula.eval.BlankEval; import org.apache.poi.hssf.record.formula.eval.BoolEval; -import org.apache.poi.hssf.record.formula.eval.ConcatEval; -import org.apache.poi.hssf.record.formula.eval.DivideEval; -import org.apache.poi.hssf.record.formula.eval.EqualEval; import org.apache.poi.hssf.record.formula.eval.ErrorEval; import org.apache.poi.hssf.record.formula.eval.Eval; -import org.apache.poi.hssf.record.formula.eval.FuncVarEval; import org.apache.poi.hssf.record.formula.eval.FunctionEval; -import org.apache.poi.hssf.record.formula.eval.GreaterEqualEval; -import org.apache.poi.hssf.record.formula.eval.GreaterThanEval; -import org.apache.poi.hssf.record.formula.eval.LessEqualEval; -import org.apache.poi.hssf.record.formula.eval.LessThanEval; -import org.apache.poi.hssf.record.formula.eval.MultiplyEval; import org.apache.poi.hssf.record.formula.eval.NameEval; -import org.apache.poi.hssf.record.formula.eval.NotEqualEval; import org.apache.poi.hssf.record.formula.eval.NumberEval; import org.apache.poi.hssf.record.formula.eval.OperationEval; -import org.apache.poi.hssf.record.formula.eval.PowerEval; import org.apache.poi.hssf.record.formula.eval.Ref2DEval; import org.apache.poi.hssf.record.formula.eval.Ref3DEval; import org.apache.poi.hssf.record.formula.eval.RefEval; import org.apache.poi.hssf.record.formula.eval.StringEval; -import org.apache.poi.hssf.record.formula.eval.SubtractEval; -import org.apache.poi.hssf.record.formula.eval.UnaryMinusEval; -import org.apache.poi.hssf.record.formula.eval.UnaryPlusEval; import org.apache.poi.hssf.record.formula.eval.ValueEval; /** @@ -98,8 +67,6 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval; public class HSSFFormulaEvaluator { // params to lookup the right constructor using reflection - private static final Class[] OPERATION_CONSTRUCTOR_CLASS_ARRAY = new Class[] { Ptg.class }; - private static final Class[] VALUE_CONTRUCTOR_CLASS_ARRAY = new Class[] { Ptg.class }; private static final Class[] AREA3D_CONSTRUCTOR_CLASS_ARRAY = new Class[] { Ptg.class, ValueEval[].class }; @@ -111,8 +78,6 @@ public class HSSFFormulaEvaluator { // Maps for mapping *Eval to *Ptg private static final Map VALUE_EVALS_MAP = new HashMap(); - private static final Map OPERATION_EVALS_MAP = new HashMap(); - /* * Following is the mapping between the Ptg tokens returned * by the FormulaParser and the *Eval classes that are used @@ -124,26 +89,6 @@ public class HSSFFormulaEvaluator { VALUE_EVALS_MAP.put(NumberPtg.class, NumberEval.class); VALUE_EVALS_MAP.put(StringPtg.class, StringEval.class); - OPERATION_EVALS_MAP.put(AddPtg.class, AddEval.class); - OPERATION_EVALS_MAP.put(ConcatPtg.class, ConcatEval.class); - OPERATION_EVALS_MAP.put(DividePtg.class, DivideEval.class); - OPERATION_EVALS_MAP.put(EqualPtg.class, EqualEval.class); - //OPERATION_EVALS_MAP.put(ExpPtg.class, ExpEval.class); // TODO: check - // this - OPERATION_EVALS_MAP.put(FuncPtg.class, FuncVarEval.class); // TODO: - // check this - OPERATION_EVALS_MAP.put(FuncVarPtg.class, FuncVarEval.class); - OPERATION_EVALS_MAP.put(GreaterEqualPtg.class, GreaterEqualEval.class); - OPERATION_EVALS_MAP.put(GreaterThanPtg.class, GreaterThanEval.class); - OPERATION_EVALS_MAP.put(LessEqualPtg.class, LessEqualEval.class); - OPERATION_EVALS_MAP.put(LessThanPtg.class, LessThanEval.class); - OPERATION_EVALS_MAP.put(MultiplyPtg.class, MultiplyEval.class); - OPERATION_EVALS_MAP.put(NotEqualPtg.class, NotEqualEval.class); - OPERATION_EVALS_MAP.put(PowerPtg.class, PowerEval.class); - OPERATION_EVALS_MAP.put(SubtractPtg.class, SubtractEval.class); - OPERATION_EVALS_MAP.put(UnaryMinusPtg.class, UnaryMinusEval.class); - OPERATION_EVALS_MAP.put(UnaryPlusPtg.class, UnaryPlusEval.class); - } @@ -402,7 +347,7 @@ public class HSSFFormulaEvaluator { if (optg instanceof AttrPtg) { continue; } if (optg instanceof UnionPtg) { continue; } - OperationEval operation = (OperationEval) getOperationEvalForPtg(optg); + OperationEval operation = OperationEvaluatorFactory.create(optg); int numops = operation.getNumberOfOperands(); Eval[] ops = new Eval[numops]; @@ -558,25 +503,6 @@ public class HSSFFormulaEvaluator { } /** - * returns the OperationEval concrete impl instance corresponding - * to the suplied operationPtg - * @param ptg - */ - protected static Eval getOperationEvalForPtg(OperationPtg ptg) { - Eval retval = null; - - Class clazz = (Class) OPERATION_EVALS_MAP.get(ptg.getClass()); - try { - Constructor constructor = clazz.getConstructor(OPERATION_CONSTRUCTOR_CLASS_ARRAY); - retval = (OperationEval) constructor.newInstance(new Ptg[] { ptg }); - } - catch (Exception e) { - throw new RuntimeException("Fatal Error: ", e); - } - return retval; - } - - /** * returns an appropriate Eval impl instance for the Ptg. The Ptg must be * one of: Area3DPtg, AreaPtg, ReferencePtg, Ref3DPtg, IntPtg, NumberPtg, * StringPtg, BoolPtg
special Note: OperationPtg subtypes cannot be diff --git a/src/scratchpad/src/org/apache/poi/hssf/usermodel/OperationEvaluatorFactory.java b/src/scratchpad/src/org/apache/poi/hssf/usermodel/OperationEvaluatorFactory.java new file mode 100755 index 0000000..1292009 --- /dev/null +++ b/src/scratchpad/src/org/apache/poi/hssf/usermodel/OperationEvaluatorFactory.java @@ -0,0 +1,165 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.hssf.usermodel; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; +import java.util.HashMap; +import java.util.Map; + +import org.apache.poi.hssf.record.formula.AddPtg; +import org.apache.poi.hssf.record.formula.ConcatPtg; +import org.apache.poi.hssf.record.formula.DividePtg; +import org.apache.poi.hssf.record.formula.EqualPtg; +import org.apache.poi.hssf.record.formula.ExpPtg; +import org.apache.poi.hssf.record.formula.FuncPtg; +import org.apache.poi.hssf.record.formula.FuncVarPtg; +import org.apache.poi.hssf.record.formula.GreaterEqualPtg; +import org.apache.poi.hssf.record.formula.GreaterThanPtg; +import org.apache.poi.hssf.record.formula.LessEqualPtg; +import org.apache.poi.hssf.record.formula.LessThanPtg; +import org.apache.poi.hssf.record.formula.MultiplyPtg; +import org.apache.poi.hssf.record.formula.NotEqualPtg; +import org.apache.poi.hssf.record.formula.OperationPtg; +import org.apache.poi.hssf.record.formula.PercentPtg; +import org.apache.poi.hssf.record.formula.PowerPtg; +import org.apache.poi.hssf.record.formula.Ptg; +import org.apache.poi.hssf.record.formula.SubtractPtg; +import org.apache.poi.hssf.record.formula.UnaryMinusPtg; +import org.apache.poi.hssf.record.formula.UnaryPlusPtg; +import org.apache.poi.hssf.record.formula.eval.AddEval; +import org.apache.poi.hssf.record.formula.eval.ConcatEval; +import org.apache.poi.hssf.record.formula.eval.DivideEval; +import org.apache.poi.hssf.record.formula.eval.EqualEval; +import org.apache.poi.hssf.record.formula.eval.FuncVarEval; +import org.apache.poi.hssf.record.formula.eval.GreaterEqualEval; +import org.apache.poi.hssf.record.formula.eval.GreaterThanEval; +import org.apache.poi.hssf.record.formula.eval.LessEqualEval; +import org.apache.poi.hssf.record.formula.eval.LessThanEval; +import org.apache.poi.hssf.record.formula.eval.MultiplyEval; +import org.apache.poi.hssf.record.formula.eval.NotEqualEval; +import org.apache.poi.hssf.record.formula.eval.OperationEval; +import org.apache.poi.hssf.record.formula.eval.PercentEval; +import org.apache.poi.hssf.record.formula.eval.PowerEval; +import org.apache.poi.hssf.record.formula.eval.SubtractEval; +import org.apache.poi.hssf.record.formula.eval.UnaryMinusEval; +import org.apache.poi.hssf.record.formula.eval.UnaryPlusEval; + +/** + * This class creates OperationEval instances to help evaluate OperationPtg + * formula tokens. + * + * @author Josh Micich + */ +final class OperationEvaluatorFactory { + private static final Class[] OPERATION_CONSTRUCTOR_CLASS_ARRAY = new Class[] { Ptg.class }; + + private static final Map _constructorsByPtgClass = initialiseConstructorsMap(); + + private OperationEvaluatorFactory() { + // no instances of this class + } + + private static Map initialiseConstructorsMap() { + Map m = new HashMap(32); + add(m, AddPtg.class, AddEval.class); + add(m, ConcatPtg.class, ConcatEval.class); + add(m, DividePtg.class, DivideEval.class); + add(m, EqualPtg.class, EqualEval.class); + add(m, FuncPtg.class, FuncVarEval.class); + add(m, FuncVarPtg.class, FuncVarEval.class); + add(m, GreaterEqualPtg.class, GreaterEqualEval.class); + add(m, GreaterThanPtg.class, GreaterThanEval.class); + add(m, LessEqualPtg.class, LessEqualEval.class); + add(m, LessThanPtg.class, LessThanEval.class); + add(m, MultiplyPtg.class, MultiplyEval.class); + add(m, NotEqualPtg.class, NotEqualEval.class); + add(m, PercentPtg.class, PercentEval.class); + add(m, PowerPtg.class, PowerEval.class); + add(m, SubtractPtg.class, SubtractEval.class); + add(m, UnaryMinusPtg.class, UnaryMinusEval.class); + add(m, UnaryPlusPtg.class, UnaryPlusEval.class); + return m; + } + + private static void add(Map m, Class ptgClass, Class evalClass) { + + // perform some validation now, to keep later exception handlers simple + if(!Ptg.class.isAssignableFrom(ptgClass)) { + throw new IllegalArgumentException("Expected Ptg subclass"); + } + if(!OperationEval.class.isAssignableFrom(evalClass)) { + throw new IllegalArgumentException("Expected OperationEval subclass"); + } + if (!Modifier.isPublic(evalClass.getModifiers())) { + throw new RuntimeException("Eval class must be public"); + } + if (Modifier.isAbstract(evalClass.getModifiers())) { + throw new RuntimeException("Eval class must not be abstract"); + } + + Constructor constructor; + try { + constructor = evalClass.getDeclaredConstructor(OPERATION_CONSTRUCTOR_CLASS_ARRAY); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Missing constructor"); + } + if (!Modifier.isPublic(constructor.getModifiers())) { + throw new RuntimeException("Eval constructor must be public"); + } + m.put(ptgClass, constructor); + } + + /** + * returns the OperationEval concrete impl instance corresponding + * to the supplied operationPtg + */ + public static OperationEval create(OperationPtg ptg) { + if(ptg == null) { + throw new IllegalArgumentException("ptg must not be null"); + } + + Class ptgClass = ptg.getClass(); + + Constructor constructor = (Constructor) _constructorsByPtgClass.get(ptgClass); + if(constructor == null) { + if(ptgClass == ExpPtg.class) { + // ExpPtg is used for array formulas and shared formulas. + // it is currently unsupported, and may not even get implemented here + throw new RuntimeException("ExpPtg currently not supported"); + } + throw new RuntimeException("Unexpected operation ptg class (" + ptgClass.getName() + ")"); + } + + Object result; + Object[] initargs = { ptg }; + try { + result = constructor.newInstance(initargs); + } catch (IllegalArgumentException e) { + throw new RuntimeException(e); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } + return (OperationEval) result; + } +} diff --git a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java index 353fe57..5098c78 100755 --- a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java +++ b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/AllFormulaEvalTests.java @@ -33,6 +33,7 @@ public class AllFormulaEvalTests { result.addTestSuite(TestExternalFunction.class); result.addTestSuite(TestFormulaBugs.class); result.addTestSuite(TestFormulasFromSpreadsheet.class); + result.addTestSuite(TestPercentEval.class); result.addTestSuite(TestUnaryPlusEval.class); return result; } diff --git a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java index f57221c..2d5408c 100644 --- a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java +++ b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestFormulasFromSpreadsheet.java @@ -15,7 +15,6 @@ * limitations under the License. */ - package org.apache.poi.hssf.record.formula.eval; import java.io.FileInputStream; @@ -59,36 +58,36 @@ public final class TestFormulasFromSpreadsheet extends TestCase { * Name of the test spreadsheet (found in the standard test data folder) */ public final static String FILENAME = "FormulaEvalTestData.xls"; - /** - * Row (zero-based) in the test spreadsheet where the operator examples start. - */ + /** + * Row (zero-based) in the test spreadsheet where the operator examples start. + */ public static final int START_OPERATORS_ROW_INDEX = 22; // Row '23' - /** - * Row (zero-based) in the test spreadsheet where the function examples start. - */ - public static final int START_FUNCTIONS_ROW_INDEX = 83; // Row '84' + /** + * Row (zero-based) in the test spreadsheet where the function examples start. + */ + public static final int START_FUNCTIONS_ROW_INDEX = 87; // Row '88' /** * Index of the column that contains the function names */ - public static final short COLUMN_INDEX_FUNCTION_NAME = 1; // Column 'B' + public static final short COLUMN_INDEX_FUNCTION_NAME = 1; // Column 'B' - /** - * Used to indicate when there are no more functions left - */ + /** + * Used to indicate when there are no more functions left + */ public static final String FUNCTION_NAMES_END_SENTINEL = ""; /** * Index of the column where the test values start (for each function) */ - public static final short COLUMN_INDEX_FIRST_TEST_VALUE = 3; // Column 'D' - - /** - * Each function takes 4 rows in the test spreadsheet - */ + public static final short COLUMN_INDEX_FIRST_TEST_VALUE = 3; // Column 'D' + + /** + * Each function takes 4 rows in the test spreadsheet + */ public static final int NUMBER_OF_ROWS_PER_FUNCTION = 4; } - private HSSFWorkbook workbook; + private HSSFWorkbook workbook; private HSSFSheet sheet; // Note - multiple failures are aggregated before ending. // If one or more functions fail, a single AssertionFailedError is thrown at the end @@ -97,138 +96,138 @@ public final class TestFormulasFromSpreadsheet extends TestCase { private int _evaluationFailureCount; private int _evaluationSuccessCount; - private static final HSSFCell getExpectedValueCell(HSSFRow row, short columnIndex) { - if (row == null) { - return null; - } - return row.getCell(columnIndex); - } + private static final HSSFCell getExpectedValueCell(HSSFRow row, short columnIndex) { + if (row == null) { + return null; + } + return row.getCell(columnIndex); + } - private static void confirmExpectedResult(String msg, HSSFCell expected, HSSFFormulaEvaluator.CellValue actual) { - if (expected == null) { + private static void confirmExpectedResult(String msg, HSSFCell expected, HSSFFormulaEvaluator.CellValue actual) { + if (expected == null) { throw new AssertionFailedError(msg + " - Bad setup data expected value is null"); } if(actual == null) { throw new AssertionFailedError(msg + " - actual value was null"); } - + if (expected.getCellType() == HSSFCell.CELL_TYPE_STRING) { - String value = expected.getRichStringCellValue().getString(); - if (value.startsWith("#")) { - // TODO - this code never called - expected.setCellType(HSSFCell.CELL_TYPE_ERROR); - // expected.setCellErrorValue(...?); - } + String value = expected.getRichStringCellValue().getString(); + if (value.startsWith("#")) { + // TODO - this code never called + expected.setCellType(HSSFCell.CELL_TYPE_ERROR); + // expected.setCellErrorValue(...?); + } } switch (expected.getCellType()) { case HSSFCell.CELL_TYPE_BLANK: - assertEquals(msg, HSSFCell.CELL_TYPE_BLANK, actual.getCellType()); - break; + assertEquals(msg, HSSFCell.CELL_TYPE_BLANK, actual.getCellType()); + break; case HSSFCell.CELL_TYPE_BOOLEAN: - assertEquals(msg, HSSFCell.CELL_TYPE_BOOLEAN, actual.getCellType()); - assertEquals(msg, expected.getBooleanCellValue(), actual.getBooleanValue()); - break; + assertEquals(msg, HSSFCell.CELL_TYPE_BOOLEAN, actual.getCellType()); + assertEquals(msg, expected.getBooleanCellValue(), actual.getBooleanValue()); + break; case HSSFCell.CELL_TYPE_ERROR: - assertEquals(msg, HSSFCell.CELL_TYPE_ERROR, actual.getCellType()); - if(false) { // TODO: fix ~45 functions which are currently returning incorrect error values - assertEquals(msg, expected.getErrorCellValue(), actual.getErrorValue()); - } - break; + assertEquals(msg, HSSFCell.CELL_TYPE_ERROR, actual.getCellType()); + if(false) { // TODO: fix ~45 functions which are currently returning incorrect error values + assertEquals(msg, expected.getErrorCellValue(), actual.getErrorValue()); + } + break; case HSSFCell.CELL_TYPE_FORMULA: // will never be used, since we will call method after formula evaluation - throw new AssertionFailedError("Cannot expect formula as result of formula evaluation: " + msg); + throw new AssertionFailedError("Cannot expect formula as result of formula evaluation: " + msg); case HSSFCell.CELL_TYPE_NUMERIC: - assertEquals(msg, HSSFCell.CELL_TYPE_NUMERIC, actual.getCellType()); - TestMathX.assertEquals(msg, expected.getNumericCellValue(), actual.getNumberValue(), TestMathX.POS_ZERO, TestMathX.DIFF_TOLERANCE_FACTOR); -// double delta = Math.abs(expected.getNumericCellValue()-actual.getNumberValue()); -// double pctExpected = Math.abs(0.00001*expected.getNumericCellValue()); -// assertTrue(msg, delta <= pctExpected); - break; + assertEquals(msg, HSSFCell.CELL_TYPE_NUMERIC, actual.getCellType()); + TestMathX.assertEquals(msg, expected.getNumericCellValue(), actual.getNumberValue(), TestMathX.POS_ZERO, TestMathX.DIFF_TOLERANCE_FACTOR); +// double delta = Math.abs(expected.getNumericCellValue()-actual.getNumberValue()); +// double pctExpected = Math.abs(0.00001*expected.getNumericCellValue()); +// assertTrue(msg, delta <= pctExpected); + break; case HSSFCell.CELL_TYPE_STRING: - assertEquals(msg, HSSFCell.CELL_TYPE_STRING, actual.getCellType()); - assertEquals(msg, expected.getRichStringCellValue().getString(), actual.getRichTextStringValue().getString()); - break; + assertEquals(msg, HSSFCell.CELL_TYPE_STRING, actual.getCellType()); + assertEquals(msg, expected.getRichStringCellValue().getString(), actual.getRichTextStringValue().getString()); + break; } - } + } protected void setUp() throws Exception { - if (workbook == null) { - String filePath = System.getProperty("HSSF.testdata.path")+ "/" + SS.FILENAME; - FileInputStream fin = new FileInputStream( filePath ); - workbook = new HSSFWorkbook( fin ); - sheet = workbook.getSheetAt( 0 ); - } - _functionFailureCount = 0; - _functionSuccessCount = 0; - _evaluationFailureCount = 0; - _evaluationSuccessCount = 0; - } - - public void testFunctionsFromTestSpreadsheet() { - - processFunctionGroup(SS.START_OPERATORS_ROW_INDEX, null); - processFunctionGroup(SS.START_FUNCTIONS_ROW_INDEX, null); - // example for debugging individual functions/operators: -// processFunctionGroup(SS.START_OPERATORS_ROW_INDEX, "ConcatEval"); -// processFunctionGroup(SS.START_FUNCTIONS_ROW_INDEX, "AVERAGE"); - - // confirm results - String successMsg = "There were " - + _evaluationSuccessCount + " successful evaluation(s) and " + if (workbook == null) { + String filePath = System.getProperty("HSSF.testdata.path")+ "/" + SS.FILENAME; + FileInputStream fin = new FileInputStream( filePath ); + workbook = new HSSFWorkbook( fin ); + sheet = workbook.getSheetAt( 0 ); + } + _functionFailureCount = 0; + _functionSuccessCount = 0; + _evaluationFailureCount = 0; + _evaluationSuccessCount = 0; + } + + public void testFunctionsFromTestSpreadsheet() { + + processFunctionGroup(SS.START_OPERATORS_ROW_INDEX, null); + processFunctionGroup(SS.START_FUNCTIONS_ROW_INDEX, null); + // example for debugging individual functions/operators: +// processFunctionGroup(SS.START_OPERATORS_ROW_INDEX, "ConcatEval"); +// processFunctionGroup(SS.START_FUNCTIONS_ROW_INDEX, "AVERAGE"); + + // confirm results + String successMsg = "There were " + + _evaluationSuccessCount + " successful evaluation(s) and " + _functionSuccessCount + " function(s) without error"; if(_functionFailureCount > 0) { String msg = _functionFailureCount + " function(s) failed in " + _evaluationFailureCount + " evaluation(s). " + successMsg; - throw new AssertionFailedError(msg); - } + throw new AssertionFailedError(msg); + } if(false) { // normally no output for successful tests System.out.println(getClass().getName() + ": " + successMsg); } } - /** - * @param startRowIndex row index in the spreadsheet where the first function/operator is found - * @param testFocusFunctionName name of a single function/operator to test alone. - * Typically pass null to test all functions - */ + /** + * @param startRowIndex row index in the spreadsheet where the first function/operator is found + * @param testFocusFunctionName name of a single function/operator to test alone. + * Typically pass null to test all functions + */ private void processFunctionGroup(int startRowIndex, String testFocusFunctionName) { HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, workbook); - int rowIndex = startRowIndex; - while (true) { - HSSFRow r = sheet.getRow(rowIndex); - String targetFunctionName = getTargetFunctionName(r); - if(targetFunctionName == null) { - throw new AssertionFailedError("Test spreadsheet cell empty on row (" - + (rowIndex+1) + "). Expected function name or '" - + SS.FUNCTION_NAMES_END_SENTINEL + "'"); - } - if(targetFunctionName.equals(SS.FUNCTION_NAMES_END_SENTINEL)) { - // found end of functions list - break; - } - if(testFocusFunctionName == null || targetFunctionName.equalsIgnoreCase(testFocusFunctionName)) { - - // expected results are on the row below - HSSFRow expectedValuesRow = sheet.getRow(rowIndex + 1); - if(expectedValuesRow == null) { - int missingRowNum = rowIndex + 2; //+1 for 1-based, +1 for next row - throw new AssertionFailedError("Missing expected values row for function '" - + targetFunctionName + " (row " + missingRowNum + ")"); - } - switch(processFunctionRow(evaluator, targetFunctionName, r, expectedValuesRow)) { - case Result.ALL_EVALUATIONS_SUCCEEDED: _functionSuccessCount++; break; - case Result.SOME_EVALUATIONS_FAILED: _functionFailureCount++; break; - default: - throw new RuntimeException("unexpected result"); - case Result.NO_EVALUATIONS_FOUND: // do nothing - } - } - rowIndex += SS.NUMBER_OF_ROWS_PER_FUNCTION; - } + int rowIndex = startRowIndex; + while (true) { + HSSFRow r = sheet.getRow(rowIndex); + String targetFunctionName = getTargetFunctionName(r); + if(targetFunctionName == null) { + throw new AssertionFailedError("Test spreadsheet cell empty on row (" + + (rowIndex+1) + "). Expected function name or '" + + SS.FUNCTION_NAMES_END_SENTINEL + "'"); + } + if(targetFunctionName.equals(SS.FUNCTION_NAMES_END_SENTINEL)) { + // found end of functions list + break; + } + if(testFocusFunctionName == null || targetFunctionName.equalsIgnoreCase(testFocusFunctionName)) { + + // expected results are on the row below + HSSFRow expectedValuesRow = sheet.getRow(rowIndex + 1); + if(expectedValuesRow == null) { + int missingRowNum = rowIndex + 2; //+1 for 1-based, +1 for next row + throw new AssertionFailedError("Missing expected values row for function '" + + targetFunctionName + " (row " + missingRowNum + ")"); + } + switch(processFunctionRow(evaluator, targetFunctionName, r, expectedValuesRow)) { + case Result.ALL_EVALUATIONS_SUCCEEDED: _functionSuccessCount++; break; + case Result.SOME_EVALUATIONS_FAILED: _functionFailureCount++; break; + default: + throw new RuntimeException("unexpected result"); + case Result.NO_EVALUATIONS_FOUND: // do nothing + } + } + rowIndex += SS.NUMBER_OF_ROWS_PER_FUNCTION; + } } /** @@ -236,16 +235,16 @@ public final class TestFormulasFromSpreadsheet extends TestCase { * @return a constant from the local Result class denoting whether there were any evaluation * cases, and whether they all succeeded. */ - private int processFunctionRow(HSSFFormulaEvaluator evaluator, String targetFunctionName, - HSSFRow formulasRow, HSSFRow expectedValuesRow) { - - int result = Result.NO_EVALUATIONS_FOUND; // so far - short endcolnum = formulasRow.getLastCellNum(); - evaluator.setCurrentRow(formulasRow); + private int processFunctionRow(HSSFFormulaEvaluator evaluator, String targetFunctionName, + HSSFRow formulasRow, HSSFRow expectedValuesRow) { + + int result = Result.NO_EVALUATIONS_FOUND; // so far + short endcolnum = formulasRow.getLastCellNum(); + evaluator.setCurrentRow(formulasRow); - // iterate across the row for all the evaluation cases - for (short colnum=SS.COLUMN_INDEX_FIRST_TEST_VALUE; colnum < endcolnum; colnum++) { - HSSFCell c = formulasRow.getCell(colnum); + // iterate across the row for all the evaluation cases + for (short colnum=SS.COLUMN_INDEX_FIRST_TEST_VALUE; colnum < endcolnum; colnum++) { + HSSFCell c = formulasRow.getCell(colnum); if (c == null || c.getCellType() != HSSFCell.CELL_TYPE_FORMULA) { continue; } @@ -265,13 +264,13 @@ public final class TestFormulasFromSpreadsheet extends TestCase { printShortStackTrace(System.err, e); result = Result.SOME_EVALUATIONS_FAILED; } - } + } return result; } - /** - * Useful to keep output concise when expecting many failures to be reported by this test case - */ + /** + * Useful to keep output concise when expecting many failures to be reported by this test case + */ private static void printShortStackTrace(PrintStream ps, AssertionFailedError e) { StackTraceElement[] stes = e.getStackTrace(); @@ -304,8 +303,8 @@ public final class TestFormulasFromSpreadsheet extends TestCase { } /** - * @return null if cell is missing, empty or blank - */ + * @return null if cell is missing, empty or blank + */ private static String getTargetFunctionName(HSSFRow r) { if(r == null) { System.err.println("Warning - given null row, can't figure out function name"); diff --git a/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestPercentEval.java b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestPercentEval.java new file mode 100755 index 0000000..be8cef1 --- /dev/null +++ b/src/scratchpad/testcases/org/apache/poi/hssf/record/formula/eval/TestPercentEval.java @@ -0,0 +1,82 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.hssf.record.formula.eval; + +import junit.framework.AssertionFailedError; +import junit.framework.TestCase; + +import org.apache.poi.hssf.record.formula.PercentPtg; +import org.apache.poi.hssf.record.formula.functions.NumericFunctionInvoker; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.CellValue; + +/** + * Test for percent operator evaluator. + * + * @author Josh Micich + */ +public final class TestPercentEval extends TestCase { + + private static void confirm(ValueEval arg, double expectedResult) { + Eval[] args = { + arg, + }; + + PercentEval opEval = new PercentEval(new PercentPtg()); + double result = NumericFunctionInvoker.invoke(opEval, args, -1, (short)-1); + + assertEquals(expectedResult, result, 0); + } + + public void testBasic() { + confirm(new NumberEval(5), 0.05); + confirm(new NumberEval(3000), 30.0); + confirm(new NumberEval(-150), -1.5); + confirm(new StringEval("0.2"), 0.002); + confirm(BoolEval.TRUE, 0.01); + } + + public void testInSpreadSheet() { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet("Sheet1"); + HSSFRow row = sheet.createRow(0); + HSSFCell cell = row.createCell((short)0); + cell.setCellFormula("B1%"); + row.createCell((short)1).setCellValue(50.0); + + HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(sheet, wb); + fe.setCurrentRow(row); + CellValue cv; + try { + cv = fe.evaluate(cell); + } catch (RuntimeException e) { + if(e.getCause() instanceof NullPointerException) { + throw new AssertionFailedError("Identified bug 44608"); + } + // else some other unexpected error + throw e; + } + assertEquals(HSSFCell.CELL_TYPE_NUMERIC, cv.getCellType()); + assertEquals(0.5, cv.getNumberValue(), 0.0); + } + +} diff --git a/src/testcases/org/apache/poi/hssf/data/FormulaEvalTestData.xls b/src/testcases/org/apache/poi/hssf/data/FormulaEvalTestData.xls dissimilarity index 61% index 6260d878bc89ada3ebe92c7fa615baa1c387cde3..aaaf958a9d2747503a773502b73b03707081e6b3 100644 GIT binary patch literal 136704 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

~ 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 literal 136704 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 -- 2.11.4.GIT