aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/atp/AnalysisToolPak.java1
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/eval/FunctionEval.java68
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/BooleanFunction.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/CalendarFieldFunction.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Choose.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Column.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Columns.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Count.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Counta.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Countif.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Errortype.java4
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/False.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Function.java9
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Hlookup.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Hyperlink.java4
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/If.java7
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Index.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/IsError.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/IsNa.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Isblank.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Islogical.java53
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Isnontext.java53
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Isnumber.java53
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Isref.java26
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Istext.java53
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/LogicalFunction.java74
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Lookup.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Match.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Mode.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/MultiOperandNumericFunction.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Na.java4
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Not.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/NotImplementedFunction.java4
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Now.java4
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/NumericFunction.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Offset.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Pi.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Rand.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Row.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Rows.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Sumif.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Sumproduct.java20
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/T.java6
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/TextFunction.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Time.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Today.java4
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/True.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Value.java3
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/Vlookup.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/functions/XYNumericFunction.java2
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestAverage.java11
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestIndex.java2
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestLen.java27
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestMatch.java7
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestMid.java13
-rw-r--r--src/testcases/org/apache/poi/hssf/record/formula/functions/TestNper.java8
-rw-r--r--src/testcases/org/apache/poi/hssf/record/formula/functions/TestPmt.java19
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestRoundFuncs.java24
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestSumproduct.java39
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestTFunc.java45
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestTrim.java28
-rw-r--r--src/testcases/org/apache/poi/hssf/record/formula/functions/TestValue.java12
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/record/formula/functions/TestXYNumericFunction.java50
63 files changed, 338 insertions, 476 deletions
diff --git a/src/java/org/apache/poi/hssf/record/formula/atp/AnalysisToolPak.java b/src/java/org/apache/poi/hssf/record/formula/atp/AnalysisToolPak.java
index 96a43170e7..af56041521 100644
--- a/src/java/org/apache/poi/hssf/record/formula/atp/AnalysisToolPak.java
+++ b/src/java/org/apache/poi/hssf/record/formula/atp/AnalysisToolPak.java
@@ -20,7 +20,6 @@ package org.apache.poi.hssf.record.formula.atp;
import java.util.HashMap;
import java.util.Map;
-import org.apache.poi.hssf.record.formula.eval.Eval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.record.formula.functions.FreeRefFunction;
import org.apache.poi.ss.formula.EvaluationWorkbook;
diff --git a/src/java/org/apache/poi/hssf/record/formula/eval/FunctionEval.java b/src/java/org/apache/poi/hssf/record/formula/eval/FunctionEval.java
index 5928fe40fe..5d04de0fc3 100644
--- a/src/java/org/apache/poi/hssf/record/formula/eval/FunctionEval.java
+++ b/src/java/org/apache/poi/hssf/record/formula/eval/FunctionEval.java
@@ -20,7 +20,63 @@ package org.apache.poi.hssf.record.formula.eval;
import org.apache.poi.hssf.record.formula.AbstractFunctionPtg;
import org.apache.poi.hssf.record.formula.function.FunctionMetadata;
import org.apache.poi.hssf.record.formula.function.FunctionMetadataRegistry;
-import org.apache.poi.hssf.record.formula.functions.*;
+import org.apache.poi.hssf.record.formula.functions.AggregateFunction;
+import org.apache.poi.hssf.record.formula.functions.And;
+import org.apache.poi.hssf.record.formula.functions.CalendarFieldFunction;
+import org.apache.poi.hssf.record.formula.functions.Choose;
+import org.apache.poi.hssf.record.formula.functions.Column;
+import org.apache.poi.hssf.record.formula.functions.Columns;
+import org.apache.poi.hssf.record.formula.functions.Count;
+import org.apache.poi.hssf.record.formula.functions.Counta;
+import org.apache.poi.hssf.record.formula.functions.Countif;
+import org.apache.poi.hssf.record.formula.functions.DateFunc;
+import org.apache.poi.hssf.record.formula.functions.Errortype;
+import org.apache.poi.hssf.record.formula.functions.Even;
+import org.apache.poi.hssf.record.formula.functions.False;
+import org.apache.poi.hssf.record.formula.functions.FinanceFunction;
+import org.apache.poi.hssf.record.formula.functions.Find;
+import org.apache.poi.hssf.record.formula.functions.FreeRefFunction;
+import org.apache.poi.hssf.record.formula.functions.Function;
+import org.apache.poi.hssf.record.formula.functions.Hlookup;
+import org.apache.poi.hssf.record.formula.functions.Hyperlink;
+import org.apache.poi.hssf.record.formula.functions.If;
+import org.apache.poi.hssf.record.formula.functions.Index;
+import org.apache.poi.hssf.record.formula.functions.Indirect;
+import org.apache.poi.hssf.record.formula.functions.IsError;
+import org.apache.poi.hssf.record.formula.functions.IsNa;
+import org.apache.poi.hssf.record.formula.functions.Isblank;
+import org.apache.poi.hssf.record.formula.functions.Isref;
+import org.apache.poi.hssf.record.formula.functions.LogicalFunction;
+import org.apache.poi.hssf.record.formula.functions.Lookup;
+import org.apache.poi.hssf.record.formula.functions.Match;
+import org.apache.poi.hssf.record.formula.functions.MinaMaxa;
+import org.apache.poi.hssf.record.formula.functions.Mode;
+import org.apache.poi.hssf.record.formula.functions.Na;
+import org.apache.poi.hssf.record.formula.functions.Not;
+import org.apache.poi.hssf.record.formula.functions.NotImplementedFunction;
+import org.apache.poi.hssf.record.formula.functions.Now;
+import org.apache.poi.hssf.record.formula.functions.NumericFunction;
+import org.apache.poi.hssf.record.formula.functions.Odd;
+import org.apache.poi.hssf.record.formula.functions.Offset;
+import org.apache.poi.hssf.record.formula.functions.Or;
+import org.apache.poi.hssf.record.formula.functions.Pi;
+import org.apache.poi.hssf.record.formula.functions.Rand;
+import org.apache.poi.hssf.record.formula.functions.Replace;
+import org.apache.poi.hssf.record.formula.functions.Row;
+import org.apache.poi.hssf.record.formula.functions.Rows;
+import org.apache.poi.hssf.record.formula.functions.Substitute;
+import org.apache.poi.hssf.record.formula.functions.Sumif;
+import org.apache.poi.hssf.record.formula.functions.Sumproduct;
+import org.apache.poi.hssf.record.formula.functions.Sumx2my2;
+import org.apache.poi.hssf.record.formula.functions.Sumx2py2;
+import org.apache.poi.hssf.record.formula.functions.Sumxmy2;
+import org.apache.poi.hssf.record.formula.functions.T;
+import org.apache.poi.hssf.record.formula.functions.TextFunction;
+import org.apache.poi.hssf.record.formula.functions.Time;
+import org.apache.poi.hssf.record.formula.functions.Today;
+import org.apache.poi.hssf.record.formula.functions.True;
+import org.apache.poi.hssf.record.formula.functions.Value;
+import org.apache.poi.hssf.record.formula.functions.Vlookup;
import org.apache.poi.ss.formula.eval.NotImplementedException;
/**
@@ -151,8 +207,8 @@ public final class FunctionEval implements OperationEval {
retval[124] = new Find();
- retval[127] = new Istext();
- retval[128] = new Isnumber();
+ retval[127] = LogicalFunction.IsText;
+ retval[128] = LogicalFunction.IsNumber;
retval[129] = new Isblank();
retval[130] = new T();
@@ -163,9 +219,9 @@ public final class FunctionEval implements OperationEval {
retval[183] = AggregateFunction.PRODUCT;
retval[184] = NumericFunction.FACT;
- retval[190] = new Isnontext();
+ retval[190] = LogicalFunction.IsNonText;
- retval[198] = new Islogical();
+ retval[198] = LogicalFunction.IsLogical;
retval[212] = NumericFunction.ROUNDUP;
retval[213] = NumericFunction.ROUNDDOWN;
@@ -248,7 +304,7 @@ public final class FunctionEval implements OperationEval {
if (f == null) {
throw new NotImplementedException("FuncIx=" + getFunctionIndex());
}
- return (ValueEval) f.evaluate(operands, srcRow, srcCol);
+ return f.evaluate(operands, srcRow, srcCol);
}
public int getNumberOfOperands() {
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/BooleanFunction.java b/src/java/org/apache/poi/hssf/record/formula/functions/BooleanFunction.java
index 4995599ea5..76be216f2f 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/BooleanFunction.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/BooleanFunction.java
@@ -39,7 +39,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public abstract class BooleanFunction implements Function {
- public final Eval evaluate(Eval[] args, int srcRow, short srcCol) {
+ public final ValueEval evaluate(ValueEval[] args, int srcRow, short srcCol) {
if (args.length < 1) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/CalendarFieldFunction.java b/src/java/org/apache/poi/hssf/record/formula/functions/CalendarFieldFunction.java
index ce6c2b4285..90e8c16675 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/CalendarFieldFunction.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/CalendarFieldFunction.java
@@ -22,7 +22,6 @@ import java.util.Date;
import java.util.GregorianCalendar;
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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
@@ -49,7 +48,7 @@ public final class CalendarFieldFunction implements Function {
_needsOneBaseAdjustment = needsOneBaseAdjustment;
}
- public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] operands, int srcCellRow, short srcCellCol) {
if (operands.length != 1) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Choose.java b/src/java/org/apache/poi/hssf/record/formula/functions/Choose.java
index dbe0aa7a9b..e7a827f4bd 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Choose.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Choose.java
@@ -18,7 +18,6 @@
package org.apache.poi.hssf.record.formula.functions;
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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
@@ -29,7 +28,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class Choose implements Function {
- public Eval evaluate(Eval[] args, int srcRowIndex, short srcColumnIndex) {
+ public ValueEval evaluate(ValueEval[] args, int srcRowIndex, short srcColumnIndex) {
if (args.length < 2) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Column.java b/src/java/org/apache/poi/hssf/record/formula/functions/Column.java
index 5b04836123..e329abe3de 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Column.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Column.java
@@ -19,13 +19,12 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.AreaEval;
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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.RefEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
public final class Column implements Function {
- public Eval evaluate(Eval[] evals, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] evals, int srcCellRow, short srcCellCol) {
ValueEval retval = null;
int cnum = -1;
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Columns.java b/src/java/org/apache/poi/hssf/record/formula/functions/Columns.java
index 2a57bedb2d..2871c63410 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Columns.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Columns.java
@@ -22,6 +22,7 @@ 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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.RefEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Implementation for Excel COLUMNS function.
@@ -30,7 +31,7 @@ import org.apache.poi.hssf.record.formula.eval.RefEval;
*/
public final class Columns implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
switch(args.length) {
case 1:
// expected
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Count.java b/src/java/org/apache/poi/hssf/record/formula/functions/Count.java
index 4b8b217f4d..827fc0449f 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Count.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Count.java
@@ -21,6 +21,7 @@ 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.MissingArgEval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.record.formula.functions.CountUtils.I_MatchPredicate;
/**
@@ -36,7 +37,7 @@ import org.apache.poi.hssf.record.formula.functions.CountUtils.I_MatchPredicate;
*/
public final class Count implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
int nArgs = args.length;
if (nArgs < 1) {
// too few arguments
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Counta.java b/src/java/org/apache/poi/hssf/record/formula/functions/Counta.java
index 7ce7eadcb5..609301db6d 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Counta.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Counta.java
@@ -21,6 +21,7 @@ import org.apache.poi.hssf.record.formula.eval.BlankEval;
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.NumberEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.record.formula.functions.CountUtils.I_MatchPredicate;
/**
@@ -34,7 +35,7 @@ import org.apache.poi.hssf.record.formula.functions.CountUtils.I_MatchPredicate;
*/
public final class Counta implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
int nArgs = args.length;
if (nArgs < 1) {
// too few arguments
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Countif.java b/src/java/org/apache/poi/hssf/record/formula/functions/Countif.java
index 5b9debc28d..e1de081d8b 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Countif.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Countif.java
@@ -29,6 +29,7 @@ import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
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.ValueEval;
import org.apache.poi.hssf.record.formula.functions.CountUtils.I_MatchPredicate;
import org.apache.poi.ss.usermodel.ErrorConstants;
@@ -400,7 +401,7 @@ public final class Countif implements Function {
}
}
- public Eval evaluate(Eval[] args, int srcRowIndex, short srcColumnIndex) {
+ public ValueEval evaluate(ValueEval[] args, int srcRowIndex, short srcColumnIndex) {
switch(args.length) {
case 2:
// expected
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Errortype.java b/src/java/org/apache/poi/hssf/record/formula/functions/Errortype.java
index 0240f817e7..a2a2572587 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Errortype.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Errortype.java
@@ -18,10 +18,10 @@
package org.apache.poi.hssf.record.formula.functions;
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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
/**
@@ -52,7 +52,7 @@ import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
*/
public final class Errortype implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
try {
OperandResolver.getSingleValue(args[0], srcCellRow, srcCellCol);
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/False.java b/src/java/org/apache/poi/hssf/record/formula/functions/False.java
index b94686bb9e..c5ddc266ac 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/False.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/False.java
@@ -19,7 +19,6 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.BoolEval;
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.ValueEval;
/**
@@ -28,7 +27,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class False implements Function {
- public Eval evaluate(Eval[] operands, int srcRow, short srcCol) {
+ public ValueEval evaluate(ValueEval[] operands, int srcRow, short srcCol) {
ValueEval retval;
switch (operands.length) {
default:
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Function.java b/src/java/org/apache/poi/hssf/record/formula/functions/Function.java
index 90e6afe05f..1aff51cf4f 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Function.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Function.java
@@ -19,7 +19,6 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.BlankEval;
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.MissingArgEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
@@ -31,16 +30,14 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
public interface Function {
/**
- * @param args the evaluated function arguments. Elements of this array typically implement
- * {@link ValueEval}. Empty values are represented with {@link BlankEval} or {@link
- * MissingArgEval}, never <code>null</code>.
+ * @param args the evaluated function arguments. Empty values are represented with
+ * {@link BlankEval} or {@link MissingArgEval}, never <code>null</code>.
* @param srcRowIndex row index of the cell containing the formula under evaluation
* @param srcColumnIndex column index of the cell containing the formula under evaluation
* @return The evaluated result, possibly an {@link ErrorEval}, never <code>null</code>.
* <b>Note</b> - Excel uses the error code <i>#NUM!</i> instead of IEEE <i>NaN</i>, so when
* numeric functions evaluate to {@link Double#NaN} be sure to translate the result to {@link
* ErrorEval#NUM_ERROR}.
- *
*/
- Eval evaluate(Eval[] args, int srcRowIndex, short srcColumnIndex);
+ ValueEval evaluate(ValueEval[] args, int srcRowIndex, short srcColumnIndex);
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Hlookup.java b/src/java/org/apache/poi/hssf/record/formula/functions/Hlookup.java
index 8230fb01f9..35a0b3ae34 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Hlookup.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Hlookup.java
@@ -42,7 +42,7 @@ import org.apache.poi.hssf.record.formula.functions.LookupUtils.ValueVector;
*/
public final class Hlookup implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
Eval arg3 = null;
switch(args.length) {
case 4:
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Hyperlink.java b/src/java/org/apache/poi/hssf/record/formula/functions/Hyperlink.java
index ecfdebf26f..19659081ec 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Hyperlink.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Hyperlink.java
@@ -18,10 +18,10 @@
package org.apache.poi.hssf.record.formula.functions;
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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
import org.apache.poi.hssf.record.formula.eval.StringEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Implementation of Excel HYPERLINK function.<p/>
@@ -41,7 +41,7 @@ import org.apache.poi.hssf.record.formula.eval.StringEval;
*/
public final class Hyperlink implements Function {
- public Eval evaluate(Eval[] operands, int srcRow, short srcCol) {
+ public ValueEval evaluate(ValueEval[] operands, int srcRow, short srcCol) {
int lastArgIx = operands.length - 1;
if (lastArgIx < 0 || lastArgIx > 1) {
return ErrorEval.VALUE_INVALID;
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/If.java b/src/java/org/apache/poi/hssf/record/formula/functions/If.java
index 450a96834b..f8d3c03ee3 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/If.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/If.java
@@ -19,7 +19,6 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.BoolEval;
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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
@@ -30,8 +29,8 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class If implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
- Eval falseResult;
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
+ ValueEval falseResult;
switch (args.length) {
case 3:
falseResult = args[2];
@@ -54,7 +53,7 @@ public final class If implements Function {
return falseResult;
}
- private static boolean evaluateFirstArg(Eval arg, int srcCellRow, short srcCellCol)
+ private static boolean evaluateFirstArg(ValueEval arg, int srcCellRow, short srcCellCol)
throws EvaluationException {
ValueEval ve = OperandResolver.getSingleValue(arg, srcCellRow, srcCellCol);
Boolean b = OperandResolver.coerceValueToBoolean(ve, false);
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Index.java b/src/java/org/apache/poi/hssf/record/formula/functions/Index.java
index b4eca2b9b5..acdd6adde8 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Index.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Index.java
@@ -47,7 +47,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class Index implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
int nArgs = args.length;
if(nArgs < 2) {
// too few arguments
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/IsError.java b/src/java/org/apache/poi/hssf/record/formula/functions/IsError.java
index 818a463d95..55919a3a84 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/IsError.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/IsError.java
@@ -20,7 +20,6 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.AreaEval;
import org.apache.poi.hssf.record.formula.eval.BoolEval;
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.RefEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
@@ -30,7 +29,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class IsError implements Function {
- public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] operands, int srcCellRow, short srcCellCol) {
ValueEval retval = null;
boolean b = false;
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/IsNa.java b/src/java/org/apache/poi/hssf/record/formula/functions/IsNa.java
index 0c9cf4f200..d8f9ac9ecb 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/IsNa.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/IsNa.java
@@ -22,6 +22,7 @@ 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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.ss.usermodel.ErrorConstants;
/**
@@ -38,7 +39,7 @@ import org.apache.poi.ss.usermodel.ErrorConstants;
*/
public final class IsNa implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
if(args.length != 1) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Isblank.java b/src/java/org/apache/poi/hssf/record/formula/functions/Isblank.java
index 655d296c39..51e8ee441f 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Isblank.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Isblank.java
@@ -31,7 +31,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class Isblank implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
if(args.length != 1) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Islogical.java b/src/java/org/apache/poi/hssf/record/formula/functions/Islogical.java
deleted file mode 100644
index 666c89ee04..0000000000
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Islogical.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ====================================================================
- 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.functions;
-
-import org.apache.poi.hssf.record.formula.eval.BoolEval;
-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.RefEval;
-
-/**
- * @author Amol S. Deshmukh &lt; amolweb at ya hoo dot com &gt;
- *
- */
-public final class Islogical extends LogicalFunction {
-
- public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) {
- Eval retval = BoolEval.FALSE;
-
- switch (operands.length) {
- default:
- retval = ErrorEval.VALUE_INVALID;
- break;
- case 1:
- Eval eval = operands[0];
- if (eval instanceof BoolEval) {
- retval = BoolEval.TRUE;
- }
- else if (eval instanceof RefEval) {
- Eval xlatedEval = xlateRefEval((RefEval) eval);
- if (xlatedEval instanceof BoolEval) {
- retval = BoolEval.TRUE;
- }
- }
- }
-
- return retval;
- }
-}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Isnontext.java b/src/java/org/apache/poi/hssf/record/formula/functions/Isnontext.java
deleted file mode 100644
index e62dc69019..0000000000
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Isnontext.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ====================================================================
- 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.functions;
-
-import org.apache.poi.hssf.record.formula.eval.BoolEval;
-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.RefEval;
-import org.apache.poi.hssf.record.formula.eval.StringEval;
-
-/**
- * @author Amol S. Deshmukh &lt; amolweb at ya hoo dot com &gt;
- *
- */
-public final class Isnontext extends LogicalFunction {
- public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) {
- Eval retval = BoolEval.TRUE;
-
- switch (operands.length) {
- default:
- retval = ErrorEval.VALUE_INVALID;
- break;
- case 1:
- Eval eval = operands[0];
- if (eval instanceof StringEval) {
- retval = BoolEval.FALSE;
- }
- else if (eval instanceof RefEval) {
- Eval xlatedEval = xlateRefEval((RefEval) eval);
- if (xlatedEval instanceof StringEval) {
- retval = BoolEval.FALSE;
- }
- }
- }
-
- return retval;
- }
-}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Isnumber.java b/src/java/org/apache/poi/hssf/record/formula/functions/Isnumber.java
deleted file mode 100644
index f00fd05c24..0000000000
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Isnumber.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ====================================================================
- 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.functions;
-
-import org.apache.poi.hssf.record.formula.eval.BoolEval;
-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.NumberEval;
-import org.apache.poi.hssf.record.formula.eval.RefEval;
-
-/**
- * @author Amol S. Deshmukh &lt; amolweb at ya hoo dot com &gt;
- *
- */
-public final class Isnumber extends LogicalFunction {
- public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) {
- Eval retval = BoolEval.FALSE;
-
- switch (operands.length) {
- default:
- retval = ErrorEval.VALUE_INVALID;
- break;
- case 1:
- Eval eval = operands[0];
- if (eval instanceof NumberEval) {
- retval = BoolEval.TRUE;
- }
- else if (eval instanceof RefEval) {
- Eval xlatedEval = xlateRefEval((RefEval) eval);
- if (xlatedEval instanceof NumberEval) {
- retval = BoolEval.TRUE;
- }
- }
- }
-
- return retval;
- }
-}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Isref.java b/src/java/org/apache/poi/hssf/record/formula/functions/Isref.java
index 565d5e4989..f5d8ac7e38 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Isref.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Isref.java
@@ -22,26 +22,22 @@ import org.apache.poi.hssf.record.formula.eval.BoolEval;
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.RefEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* @author Amol S. Deshmukh &lt; amolweb at ya hoo dot com &gt;
- *
*/
public final class Isref implements Function {
- public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) {
- Eval retval = BoolEval.FALSE;
+ public ValueEval evaluate(ValueEval[] operands, int srcCellRow, short srcCellCol) {
+ if (operands.length != 1) {
+ return ErrorEval.VALUE_INVALID;
+ }
- switch (operands.length) {
- default:
- retval = ErrorEval.VALUE_INVALID;
- break;
- case 1:
- Eval eval = operands[0];
- if (eval instanceof RefEval || eval instanceof AreaEval) {
- retval = BoolEval.TRUE;
- }
- }
+ Eval eval = operands[0];
+ if (eval instanceof RefEval || eval instanceof AreaEval) {
+ return BoolEval.TRUE;
+ }
- return retval;
- }
+ return BoolEval.FALSE;
+ }
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Istext.java b/src/java/org/apache/poi/hssf/record/formula/functions/Istext.java
deleted file mode 100644
index f669d7f497..0000000000
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Istext.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ====================================================================
- 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.functions;
-
-import org.apache.poi.hssf.record.formula.eval.BoolEval;
-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.RefEval;
-import org.apache.poi.hssf.record.formula.eval.StringEval;
-
-/**
- * @author Amol S. Deshmukh &lt; amolweb at ya hoo dot com &gt;
- *
- */
-public final class Istext extends LogicalFunction {
- public Eval evaluate(Eval[] operands, int srcCellRow, short srcCellCol) {
- Eval retval = BoolEval.FALSE;
-
- switch (operands.length) {
- default:
- retval = ErrorEval.VALUE_INVALID;
- break;
- case 1:
- Eval eval = operands[0];
- if (eval instanceof StringEval) {
- retval = BoolEval.TRUE;
- }
- else if (eval instanceof RefEval) {
- Eval xlatedEval = xlateRefEval((RefEval) eval);
- if (xlatedEval instanceof StringEval) {
- retval = BoolEval.TRUE;
- }
- }
- }
-
- return retval;
- }
-}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/LogicalFunction.java b/src/java/org/apache/poi/hssf/record/formula/functions/LogicalFunction.java
index ae5a0ebf6b..fadad2ca7c 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/LogicalFunction.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/LogicalFunction.java
@@ -17,28 +17,76 @@
package org.apache.poi.hssf.record.formula.functions;
+import org.apache.poi.hssf.record.formula.eval.BoolEval;
+import org.apache.poi.hssf.record.formula.eval.ErrorEval;
+import org.apache.poi.hssf.record.formula.eval.EvaluationException;
+import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
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.ValueEval;
/**
* @author Amol S. Deshmukh &lt; amolweb at ya hoo dot com &gt;
- *
*/
public abstract class LogicalFunction implements Function {
- /**
- * recursively evaluate any RefEvals
- * TODO - use {@link OperandResolver}
- */
- protected ValueEval xlateRefEval(RefEval reval) {
- ValueEval retval = reval.getInnerValueEval();
+ /**
+ * recursively evaluate any RefEvals TODO - use {@link OperandResolver}
+ */
+ private static ValueEval xlateRefEval(RefEval reval) {
+ ValueEval retval = reval.getInnerValueEval();
- if (retval instanceof RefEval) {
- RefEval re = (RefEval) retval;
- retval = xlateRefEval(re);
- }
+ if (retval instanceof RefEval) {
+ RefEval re = (RefEval) retval;
+ retval = xlateRefEval(re);
+ }
- return retval;
- }
+ return retval;
+ }
+
+ public final ValueEval evaluate(ValueEval[] operands, int srcCellRow, short srcCellCol) {
+ if (operands.length != 1) {
+ return ErrorEval.VALUE_INVALID;
+ }
+ ValueEval ve;
+ try {
+ ve = OperandResolver.getSingleValue(operands[0], srcCellRow, srcCellCol);
+ } catch (EvaluationException e) {
+ if (false) {
+ // Note - it is more usual to propagate error codes straight to the result like this:
+ return e.getErrorEval();
+ // but logical functions behave a little differently
+ }
+ // this will usually cause a 'FALSE' result except for ISNONTEXT()
+ ve = e.getErrorEval();
+ }
+ if (ve instanceof RefEval) {
+ ve = xlateRefEval((RefEval) ve);
+ }
+ return BoolEval.valueOf(evaluate(ve));
+
+ }
+ protected abstract boolean evaluate(ValueEval arg);
+
+ public static final Function IsLogical = new LogicalFunction() {
+ protected boolean evaluate(ValueEval arg) {
+ return arg instanceof BoolEval;
+ }
+ };
+ public static final Function IsNonText = new LogicalFunction() {
+ protected boolean evaluate(ValueEval arg) {
+ return !(arg instanceof StringEval);
+ }
+ };
+ public static final Function IsNumber = new LogicalFunction() {
+ protected boolean evaluate(ValueEval arg) {
+ return arg instanceof NumberEval;
+ }
+ };
+ public static final Function IsText = new LogicalFunction() {
+ protected boolean evaluate(ValueEval arg) {
+ return arg instanceof StringEval;
+ }
+ };
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Lookup.java b/src/java/org/apache/poi/hssf/record/formula/functions/Lookup.java
index 0cbae7fb88..7bb3326d4e 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Lookup.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Lookup.java
@@ -19,7 +19,6 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.AreaEval;
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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
@@ -41,7 +40,7 @@ import org.apache.poi.hssf.record.formula.functions.LookupUtils.ValueVector;
*/
public final class Lookup implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
switch(args.length) {
case 3:
break;
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Match.java b/src/java/org/apache/poi/hssf/record/formula/functions/Match.java
index 7a8cc6cc24..9f61937440 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Match.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Match.java
@@ -67,7 +67,7 @@ import org.apache.poi.hssf.record.formula.functions.LookupUtils.ValueVector;
public final class Match implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
double match_type = 1; // default
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Mode.java b/src/java/org/apache/poi/hssf/record/formula/functions/Mode.java
index 767e980c1c..4c6295615d 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Mode.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Mode.java
@@ -74,7 +74,7 @@ public final class Mode implements Function {
}
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
double result;
try {
List<Double> temp = new ArrayList<Double>();
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/MultiOperandNumericFunction.java b/src/java/org/apache/poi/hssf/record/formula/functions/MultiOperandNumericFunction.java
index 30b72ee74f..67bfaa038b 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/MultiOperandNumericFunction.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/MultiOperandNumericFunction.java
@@ -83,7 +83,7 @@ public abstract class MultiOperandNumericFunction implements Function {
private static final int DEFAULT_MAX_NUM_OPERANDS = 30;
- public final Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public final ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
double d;
try {
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Na.java b/src/java/org/apache/poi/hssf/record/formula/functions/Na.java
index 720b0c661f..d24a5994a9 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Na.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Na.java
@@ -18,7 +18,7 @@
package org.apache.poi.hssf.record.formula.functions;
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.ValueEval;
/**
* Implementation of Excel function NA()
@@ -27,7 +27,7 @@ import org.apache.poi.hssf.record.formula.eval.Eval;
*/
public final class Na implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
return ErrorEval.NA;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Not.java b/src/java/org/apache/poi/hssf/record/formula/functions/Not.java
index 46d1e7142a..4e89ac3096 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Not.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Not.java
@@ -19,7 +19,6 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.BoolEval;
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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
@@ -33,7 +32,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class Not implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
if (args.length != 1) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/NotImplementedFunction.java b/src/java/org/apache/poi/hssf/record/formula/functions/NotImplementedFunction.java
index 9c685d0f51..e243e87289 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/NotImplementedFunction.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/NotImplementedFunction.java
@@ -17,7 +17,7 @@
package org.apache.poi.hssf.record.formula.functions;
-import org.apache.poi.hssf.record.formula.eval.Eval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.ss.formula.eval.NotImplementedException;
/**
@@ -38,7 +38,7 @@ public final class NotImplementedFunction implements Function {
_functionName = name;
}
- public Eval evaluate(Eval[] operands, int srcRow, short srcCol) {
+ public ValueEval evaluate(ValueEval[] operands, int srcRow, short srcCol) {
throw new NotImplementedException(_functionName);
}
public String getFunctionName() {
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Now.java b/src/java/org/apache/poi/hssf/record/formula/functions/Now.java
index 528d7f98ab..cb9687654b 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Now.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Now.java
@@ -20,8 +20,8 @@ package org.apache.poi.hssf.record.formula.functions;
import java.util.Date;
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.NumberEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
/**
@@ -31,7 +31,7 @@ import org.apache.poi.hssf.usermodel.HSSFDateUtil;
*/
public final class Now implements Function {
- public Eval evaluate(Eval[] evals, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] evals, int srcCellRow, short srcCellCol) {
if (evals.length > 0) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/NumericFunction.java b/src/java/org/apache/poi/hssf/record/formula/functions/NumericFunction.java
index 136cf36630..310be7bb15 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/NumericFunction.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/NumericFunction.java
@@ -46,7 +46,7 @@ public abstract class NumericFunction implements Function {
}
}
- public final Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public final ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
double result;
try {
result = eval(args, srcCellRow, srcCellCol);
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Offset.java b/src/java/org/apache/poi/hssf/record/formula/functions/Offset.java
index 0fda540e3a..c83e1b8f57 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Offset.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Offset.java
@@ -164,7 +164,7 @@ public final class Offset implements Function {
}
}
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
if(args.length < 3 || args.length > 5) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Pi.java b/src/java/org/apache/poi/hssf/record/formula/functions/Pi.java
index d69015b148..3282c7d786 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Pi.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Pi.java
@@ -18,7 +18,6 @@
package org.apache.poi.hssf.record.formula.functions;
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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
@@ -30,7 +29,7 @@ public final class Pi implements Function {
private static final NumberEval PI_EVAL = new NumberEval(Math.PI);
- public Eval evaluate(Eval[] operands, int srcRow, short srcCol) {
+ public ValueEval evaluate(ValueEval[] operands, int srcRow, short srcCol) {
ValueEval retval;
switch (operands.length) {
default:
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Rand.java b/src/java/org/apache/poi/hssf/record/formula/functions/Rand.java
index c9940fffed..5f5173e856 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Rand.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Rand.java
@@ -18,7 +18,6 @@
package org.apache.poi.hssf.record.formula.functions;
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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
@@ -28,7 +27,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class Rand implements Function {
- public Eval evaluate(Eval[] operands, int srcRow, short srcCol) {
+ public ValueEval evaluate(ValueEval[] operands, int srcRow, short srcCol) {
ValueEval retval;
switch (operands.length) {
default:
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Row.java b/src/java/org/apache/poi/hssf/record/formula/functions/Row.java
index ac16401262..59c1203b75 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Row.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Row.java
@@ -19,14 +19,13 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.AreaEval;
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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.RefEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
public final class Row implements Function {
- public Eval evaluate(Eval[] evals, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] evals, int srcCellRow, short srcCellCol) {
ValueEval retval = null;
int rnum = -1;
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Rows.java b/src/java/org/apache/poi/hssf/record/formula/functions/Rows.java
index 9f331f47d7..7272a07c5d 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Rows.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Rows.java
@@ -22,6 +22,7 @@ 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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.RefEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Implementation for Excel ROWS function.
@@ -30,7 +31,7 @@ import org.apache.poi.hssf.record.formula.eval.RefEval;
*/
public final class Rows implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
switch(args.length) {
case 1:
// expected
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Sumif.java b/src/java/org/apache/poi/hssf/record/formula/functions/Sumif.java
index 8eb2565d89..97ba463d92 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Sumif.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Sumif.java
@@ -41,7 +41,7 @@ import org.apache.poi.hssf.record.formula.functions.CountUtils.I_MatchPredicate;
*/
public final class Sumif implements Function {
- public Eval evaluate(Eval[] args, int srcRowIndex, short srcColumnIndex) {
+ public ValueEval evaluate(ValueEval[] args, int srcRowIndex, short srcColumnIndex) {
if (args.length < 2) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Sumproduct.java b/src/java/org/apache/poi/hssf/record/formula/functions/Sumproduct.java
index 572c67f926..bc743e7197 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Sumproduct.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Sumproduct.java
@@ -20,7 +20,6 @@ package org.apache.poi.hssf.record.formula.functions;
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.ErrorEval;
-import org.apache.poi.hssf.record.formula.eval.Eval;
import org.apache.poi.hssf.record.formula.eval.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.NumericValueEval;
@@ -54,14 +53,14 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
public final class Sumproduct implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
int maxN = args.length;
if(maxN < 1) {
return ErrorEval.VALUE_INVALID;
}
- Eval firstArg = args[0];
+ ValueEval firstArg = args[0];
try {
if(firstArg instanceof NumericValueEval) {
return evaluateSingleProduct(args);
@@ -83,7 +82,7 @@ public final class Sumproduct implements Function {
+ firstArg.getClass().getName() + ")");
}
- private static Eval evaluateSingleProduct(Eval[] evalArgs) throws EvaluationException {
+ private static ValueEval evaluateSingleProduct(ValueEval[] evalArgs) throws EvaluationException {
int maxN = evalArgs.length;
double term = 1D;
@@ -94,9 +93,9 @@ public final class Sumproduct implements Function {
return new NumberEval(term);
}
- private static double getScalarValue(Eval arg) throws EvaluationException {
+ private static double getScalarValue(ValueEval arg) throws EvaluationException {
- Eval eval;
+ ValueEval eval;
if (arg instanceof RefEval) {
RefEval re = (RefEval) arg;
eval = re.getInnerValueEval();
@@ -116,15 +115,10 @@ public final class Sumproduct implements Function {
eval = ae.getRelativeValue(0, 0);
}
- if (!(eval instanceof ValueEval)) {
- throw new RuntimeException("Unexpected value eval class ("
- + eval.getClass().getName() + ")");
- }
-
- return getProductTerm((ValueEval) eval, true);
+ return getProductTerm(eval, true);
}
- private static Eval evaluateAreaSumProduct(Eval[] evalArgs) throws EvaluationException {
+ private static ValueEval evaluateAreaSumProduct(ValueEval[] evalArgs) throws EvaluationException {
int maxN = evalArgs.length;
AreaEval[] args = new AreaEval[maxN];
try {
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/T.java b/src/java/org/apache/poi/hssf/record/formula/functions/T.java
index 9d764c33bc..6f13d4c5ee 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/T.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/T.java
@@ -18,20 +18,20 @@
package org.apache.poi.hssf.record.formula.functions;
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.RefEval;
import org.apache.poi.hssf.record.formula.eval.StringEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
public final class T implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
switch (args.length) {
default:
return ErrorEval.VALUE_INVALID;
case 1:
break;
}
- Eval arg = args[0];
+ ValueEval arg = args[0];
if (arg instanceof RefEval) {
RefEval re = (RefEval) arg;
arg = re.getInnerValueEval();
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/TextFunction.java b/src/java/org/apache/poi/hssf/record/formula/functions/TextFunction.java
index 5fd758962d..ff55e1921f 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/TextFunction.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/TextFunction.java
@@ -43,7 +43,7 @@ public abstract class TextFunction implements Function {
return OperandResolver.coerceValueToInt(ve);
}
- public final Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public final ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
try {
return evaluateFunc(args, srcCellRow, srcCellCol);
} catch (EvaluationException e) {
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Time.java b/src/java/org/apache/poi/hssf/record/formula/functions/Time.java
index 1ddb8516ff..6d1ef146ca 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Time.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Time.java
@@ -38,7 +38,7 @@ public final class Time implements Function {
private static final int SECONDS_PER_DAY = HOURS_PER_DAY * SECONDS_PER_HOUR;
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
if (args.length != 3) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Today.java b/src/java/org/apache/poi/hssf/record/formula/functions/Today.java
index b71fce4611..434653c12c 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Today.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Today.java
@@ -21,8 +21,8 @@ import java.util.Calendar;
import java.util.GregorianCalendar;
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.NumberEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
/**
@@ -32,7 +32,7 @@ import org.apache.poi.hssf.usermodel.HSSFDateUtil;
*/
public final class Today implements Function {
- public Eval evaluate(Eval[] evals, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] evals, int srcCellRow, short srcCellCol) {
if (evals.length > 0) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/True.java b/src/java/org/apache/poi/hssf/record/formula/functions/True.java
index 429cc5f0d5..9a80c8d479 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/True.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/True.java
@@ -19,7 +19,6 @@ package org.apache.poi.hssf.record.formula.functions;
import org.apache.poi.hssf.record.formula.eval.BoolEval;
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.ValueEval;
/**
@@ -28,7 +27,7 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class True implements Function {
- public Eval evaluate(Eval[] operands, int srcRow, short srcCol) {
+ public ValueEval evaluate(ValueEval[] operands, int srcRow, short srcCol) {
ValueEval retval;
switch (operands.length) {
default:
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Value.java b/src/java/org/apache/poi/hssf/record/formula/functions/Value.java
index 0dbfdb52de..cfa6dff4c9 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Value.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Value.java
@@ -18,7 +18,6 @@
package org.apache.poi.hssf.record.formula.functions;
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.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
@@ -42,7 +41,7 @@ public final class Value implements Function {
private static final int MIN_DISTANCE_BETWEEN_THOUSANDS_SEPARATOR = 4;
private static final Double ZERO = new Double(0.0);
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
if (args.length != 1) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/Vlookup.java b/src/java/org/apache/poi/hssf/record/formula/functions/Vlookup.java
index 27d16ee867..9887f69c33 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/Vlookup.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/Vlookup.java
@@ -42,7 +42,7 @@ import org.apache.poi.hssf.record.formula.functions.LookupUtils.ValueVector;
*/
public final class Vlookup implements Function {
- public Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
Eval arg3 = null;
switch(args.length) {
case 4:
diff --git a/src/java/org/apache/poi/hssf/record/formula/functions/XYNumericFunction.java b/src/java/org/apache/poi/hssf/record/formula/functions/XYNumericFunction.java
index 5c80068fff..c43cca0adf 100644
--- a/src/java/org/apache/poi/hssf/record/formula/functions/XYNumericFunction.java
+++ b/src/java/org/apache/poi/hssf/record/formula/functions/XYNumericFunction.java
@@ -97,7 +97,7 @@ public abstract class XYNumericFunction implements Function {
*/
protected abstract Accumulator createAccumulator();
- public final Eval evaluate(Eval[] args, int srcCellRow, short srcCellCol) {
+ public final ValueEval evaluate(ValueEval[] args, int srcCellRow, short srcCellCol) {
if (args.length != 2) {
return ErrorEval.VALUE_INVALID;
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestAverage.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestAverage.java
index 727f6b7645..e14c1db951 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestAverage.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestAverage.java
@@ -22,7 +22,6 @@ import junit.framework.TestCase;
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.ErrorEval;
-import org.apache.poi.hssf.record.formula.eval.Eval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
@@ -32,18 +31,18 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
*/
public final class TestAverage extends TestCase {
- private static Eval invokeAverage(Eval[] args) {
+ private static ValueEval invokeAverage(ValueEval[] args) {
return AggregateFunction.AVERAGE.evaluate(args, -1, (short)-1);
}
- private void confirmAverage(Eval[] args, double expected) {
- Eval result = invokeAverage(args);
+ private void confirmAverage(ValueEval[] args, double expected) {
+ ValueEval result = invokeAverage(args);
assertEquals(NumberEval.class, result.getClass());
assertEquals(expected, ((NumberEval)result).getNumberValue(), 0);
}
- private void confirmAverage(Eval[] args, ErrorEval expectedError) {
- Eval result = invokeAverage(args);
+ private void confirmAverage(ValueEval[] args, ErrorEval expectedError) {
+ ValueEval result = invokeAverage(args);
assertEquals(ErrorEval.class, result.getClass());
assertEquals(expectedError.getErrorCode(), ((ErrorEval)result).getErrorCode());
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestIndex.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestIndex.java
index 1352870c15..557833bed9 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestIndex.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestIndex.java
@@ -101,7 +101,7 @@ public final class TestIndex extends TestCase {
ValueEval[] args = new ValueEval[] { arg0, MissingArgEval.instance, new NumberEval(2), };
ValueEval actualResult;
try {
- actualResult = (ValueEval) FUNC_INST.evaluate(args, 1, (short)1);
+ actualResult = FUNC_INST.evaluate(args, 1, (short)1);
} catch (RuntimeException e) {
if (e.getMessage().equals("Unexpected arg eval type (org.apache.poi.hssf.record.formula.eval.MissingArgEval")) {
throw new AssertionFailedError("Identified bug 47048b - INDEX() should support missing-arg");
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestLen.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestLen.java
index 459d2fb555..610897a6ab 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestLen.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestLen.java
@@ -22,45 +22,44 @@ import junit.framework.TestCase;
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.ErrorEval;
-import org.apache.poi.hssf.record.formula.eval.Eval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.StringEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Tests for Excel function LEN()
- *
+ *
* @author Josh Micich
*/
public final class TestLen extends TestCase {
-
- private static Eval invokeLen(Eval text) {
- Eval[] args = new Eval[] { text, };
+ private static ValueEval invokeLen(ValueEval text) {
+ ValueEval[] args = new ValueEval[] { text, };
return TextFunction.LEN.evaluate(args, -1, (short)-1);
}
- private void confirmLen(Eval text, int expected) {
- Eval result = invokeLen(text);
+ private void confirmLen(ValueEval text, int expected) {
+ ValueEval result = invokeLen(text);
assertEquals(NumberEval.class, result.getClass());
assertEquals(expected, ((NumberEval)result).getNumberValue(), 0);
}
- private void confirmLen(Eval text, ErrorEval expectedError) {
- Eval result = invokeLen(text);
+ private void confirmLen(ValueEval text, ErrorEval expectedError) {
+ ValueEval result = invokeLen(text);
assertEquals(ErrorEval.class, result.getClass());
assertEquals(expectedError.getErrorCode(), ((ErrorEval)result).getErrorCode());
}
-
+
public void testBasic() {
-
+
confirmLen(new StringEval("galactic"), 8);
}
-
+
/**
* Valid cases where text arg is not exactly a string
*/
public void testUnusualArgs() {
-
- // text (first) arg type is number, other args are strings with fractional digits
+
+ // text (first) arg type is number, other args are strings with fractional digits
confirmLen(new NumberEval(123456), 6);
confirmLen(BoolEval.FALSE, 5);
confirmLen(BoolEval.TRUE, 4);
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestMatch.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestMatch.java
index 48104c22e5..a92dd1fbc1 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestMatch.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestMatch.java
@@ -22,7 +22,6 @@ import junit.framework.TestCase;
import org.apache.poi.hssf.record.formula.eval.AreaEval;
import org.apache.poi.hssf.record.formula.eval.BoolEval;
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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.NumericValueEval;
import org.apache.poi.hssf.record.formula.eval.StringEval;
@@ -41,11 +40,11 @@ public final class TestMatch extends TestCase {
private static final NumberEval MATCH_SMALLEST_GTE = new NumberEval(-1);
- private static Eval invokeMatch(Eval lookup_value, Eval lookup_array, Eval match_type) {
- Eval[] args = { lookup_value, lookup_array, match_type, };
+ private static ValueEval invokeMatch(ValueEval lookup_value, ValueEval lookup_array, ValueEval match_type) {
+ ValueEval[] args = { lookup_value, lookup_array, match_type, };
return new Match().evaluate(args, -1, (short)-1);
}
- private static void confirmInt(int expected, Eval actualEval) {
+ private static void confirmInt(int expected, ValueEval actualEval) {
if(!(actualEval instanceof NumericValueEval)) {
fail("Expected numeric result");
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestMid.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestMid.java
index 81e78e737c..dc4d50208d 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestMid.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestMid.java
@@ -23,7 +23,6 @@ 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.ErrorEval;
-import org.apache.poi.hssf.record.formula.eval.Eval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.RefEval;
import org.apache.poi.hssf.record.formula.eval.StringEval;
@@ -36,19 +35,19 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
public final class TestMid extends TestCase {
- private static Eval invokeMid(Eval text, Eval startPos, Eval numChars) {
- Eval[] args = new Eval[] { text, startPos, numChars, };
+ private static ValueEval invokeMid(ValueEval text, ValueEval startPos, ValueEval numChars) {
+ ValueEval[] args = new ValueEval[] { text, startPos, numChars, };
return TextFunction.MID.evaluate(args, -1, (short)-1);
}
- private void confirmMid(Eval text, Eval startPos, Eval numChars, String expected) {
- Eval result = invokeMid(text, startPos, numChars);
+ private void confirmMid(ValueEval text, ValueEval startPos, ValueEval numChars, String expected) {
+ ValueEval result = invokeMid(text, startPos, numChars);
assertEquals(StringEval.class, result.getClass());
assertEquals(expected, ((StringEval)result).getStringValue());
}
- private void confirmMid(Eval text, Eval startPos, Eval numChars, ErrorEval expectedError) {
- Eval result = invokeMid(text, startPos, numChars);
+ private void confirmMid(ValueEval text, ValueEval startPos, ValueEval numChars, ErrorEval expectedError) {
+ ValueEval result = invokeMid(text, startPos, numChars);
assertEquals(ErrorEval.class, result.getClass());
assertEquals(expectedError.getErrorCode(), ((ErrorEval)result).getErrorCode());
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestNper.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestNper.java
index a919c35af4..99fb4dea41 100644
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestNper.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestNper.java
@@ -19,8 +19,8 @@ package org.apache.poi.hssf.record.formula.functions;
import junit.framework.TestCase;
-import org.apache.poi.hssf.record.formula.eval.Eval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
@@ -29,18 +29,18 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* Tests for {@link FinanceFunction#NPER}
- *
+ *
* @author Josh Micich
*/
public final class TestNper extends TestCase {
public void testSimpleEvaluate() {
- Eval[] args = {
+ ValueEval[] args = {
new NumberEval(0.05),
new NumberEval(250),
new NumberEval(-1000),
};
- Eval result = FinanceFunction.NPER.evaluate(args, 0, (short)0);
+ ValueEval result = FinanceFunction.NPER.evaluate(args, 0, (short)0);
assertEquals(NumberEval.class, result.getClass());
assertEquals(4.57353557, ((NumberEval)result).getNumberValue(), 0.00000001);
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestPmt.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestPmt.java
index 9a4cded9af..cac4bde13f 100644
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestPmt.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestPmt.java
@@ -21,12 +21,11 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
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.ValueEval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
/**
- *
* @author Josh Micich
*/
public final class TestPmt extends TestCase {
@@ -35,14 +34,14 @@ public final class TestPmt extends TestCase {
// only asserting accuracy to 4 fractional digits
assertEquals(expected, ne.getNumberValue(), 0.00005);
}
- private static Eval invoke(Eval[] args) {
+ private static ValueEval invoke(ValueEval[] args) {
return FinanceFunction.PMT.evaluate(args, -1, (short)-1);
}
/**
* Invocation when not expecting an error result
*/
- private static NumberEval invokeNormal(Eval[] args) {
- Eval ev = invoke(args);
+ private static NumberEval invokeNormal(ValueEval[] args) {
+ ValueEval ev = invoke(args);
if(ev instanceof ErrorEval) {
throw new AssertionFailedError("Normal evaluation failed with error code: "
+ ev.toString());
@@ -51,7 +50,7 @@ public final class TestPmt extends TestCase {
}
private static void confirm(double expected, double rate, double nper, double pv, double fv, boolean isBeginning) {
- Eval[] args = {
+ ValueEval[] args = {
new NumberEval(rate),
new NumberEval(nper),
new NumberEval(pv),
@@ -68,20 +67,20 @@ public final class TestPmt extends TestCase {
}
public void test3args() {
-
- Eval[] args = {
+
+ ValueEval[] args = {
new NumberEval(0.005),
new NumberEval(24),
new NumberEval(1000),
};
- Eval ev = invoke(args);
+ ValueEval ev = invoke(args);
if(ev instanceof ErrorEval) {
ErrorEval err = (ErrorEval) ev;
if(err.getErrorCode() == HSSFErrorConstants.ERROR_VALUE) {
throw new AssertionFailedError("Identified bug 44691");
}
}
-
+
confirm(-44.3206, invokeNormal(args));
}
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestRoundFuncs.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestRoundFuncs.java
index 9dbbb438e0..d3fa564391 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestRoundFuncs.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestRoundFuncs.java
@@ -20,31 +20,31 @@ package org.apache.poi.hssf.record.formula.functions;
import junit.framework.TestCase;
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.ValueEval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.StringEval;
/**
* Test cases for ROUND(), ROUNDUP(), ROUNDDOWN()
- *
+ *
* @author Josh Micich
*/
public final class TestRoundFuncs extends TestCase {
private static final NumericFunction F = null;
public void testRounddownWithStringArg() {
-
- Eval strArg = new StringEval("abc");
- Eval[] args = { strArg, new NumberEval(2), };
- Eval result = F.ROUNDDOWN.evaluate(args, -1, (short)-1);
+
+ ValueEval strArg = new StringEval("abc");
+ ValueEval[] args = { strArg, new NumberEval(2), };
+ ValueEval result = F.ROUNDDOWN.evaluate(args, -1, (short)-1);
assertEquals(ErrorEval.VALUE_INVALID, result);
}
-
+
public void testRoundupWithStringArg() {
-
- Eval strArg = new StringEval("abc");
- Eval[] args = { strArg, new NumberEval(2), };
- Eval result = F.ROUNDUP.evaluate(args, -1, (short)-1);
+
+ ValueEval strArg = new StringEval("abc");
+ ValueEval[] args = { strArg, new NumberEval(2), };
+ ValueEval result = F.ROUNDUP.evaluate(args, -1, (short)-1);
assertEquals(ErrorEval.VALUE_INVALID, result);
}
-
+
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestSumproduct.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestSumproduct.java
index 47ee0afbb6..63d1088e8c 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestSumproduct.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestSumproduct.java
@@ -21,7 +21,6 @@ import junit.framework.TestCase;
import org.apache.poi.hssf.record.formula.eval.AreaEval;
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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.NumericValueEval;
import org.apache.poi.hssf.record.formula.eval.RefEval;
@@ -29,16 +28,16 @@ import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Test cases for SUMPRODUCT()
- *
+ *
* @author Josh Micich
*/
public final class TestSumproduct extends TestCase {
-
- private static Eval invokeSumproduct(Eval[] args) {
+
+ private static ValueEval invokeSumproduct(ValueEval[] args) {
// srcCellRow and srcCellColumn are ignored by SUMPRODUCT
return new Sumproduct().evaluate(args, -1, (short)-1);
}
- private static void confirmDouble(double expected, Eval actualEval) {
+ private static void confirmDouble(double expected, ValueEval actualEval) {
if(!(actualEval instanceof NumericValueEval)) {
fail("Expected numeric result");
}
@@ -49,11 +48,11 @@ public final class TestSumproduct extends TestCase {
public void testScalarSimple() {
RefEval refEval = EvalFactory.createRefEval("A1", new NumberEval(3));
- Eval[] args = {
- refEval,
+ ValueEval[] args = {
+ refEval,
new NumberEval(2),
};
- Eval result = invokeSumproduct(args);
+ ValueEval result = invokeSumproduct(args);
confirmDouble(6D, result);
}
@@ -70,9 +69,9 @@ public final class TestSumproduct extends TestCase {
};
AreaEval aeA = EvalFactory.createAreaEval("A1:A3", aValues);
AreaEval aeB = EvalFactory.createAreaEval("B1:B3", bValues);
-
- Eval[] args = { aeA, aeB, };
- Eval result = invokeSumproduct(args);
+
+ ValueEval[] args = { aeA, aeB, };
+ ValueEval result = invokeSumproduct(args);
confirmDouble(65D, result);
}
@@ -83,27 +82,27 @@ public final class TestSumproduct extends TestCase {
AreaEval ae = EvalFactory.createAreaEval("A1:A1", new ValueEval[] { new NumberEval(7), });
- Eval[] args = {
- ae,
+ ValueEval[] args = {
+ ae,
new NumberEval(2),
};
- Eval result = invokeSumproduct(args);
+ ValueEval result = invokeSumproduct(args);
confirmDouble(14D, result);
}
public void testMismatchAreaDimensions() {
-
+
AreaEval aeA = EvalFactory.createAreaEval("A1:A3", new ValueEval[3]);
AreaEval aeB = EvalFactory.createAreaEval("B1:D1", new ValueEval[3]);
- Eval[] args;
- args = new Eval[] { aeA, aeB, };
+ ValueEval[] args;
+ args = new ValueEval[] { aeA, aeB, };
assertEquals(ErrorEval.VALUE_INVALID, invokeSumproduct(args));
- args = new Eval[] { aeA, new NumberEval(5), };
+ args = new ValueEval[] { aeA, new NumberEval(5), };
assertEquals(ErrorEval.VALUE_INVALID, invokeSumproduct(args));
}
-
+
public void testAreaWithErrorCell() {
ValueEval[] aValues = {
ErrorEval.REF_INVALID,
@@ -112,7 +111,7 @@ public final class TestSumproduct extends TestCase {
AreaEval aeA = EvalFactory.createAreaEval("A1:A2", aValues);
AreaEval aeB = EvalFactory.createAreaEval("B1:B2", new ValueEval[2]);
- Eval[] args = { aeA, aeB, };
+ ValueEval[] args = { aeA, aeB, };
assertEquals(ErrorEval.REF_INVALID, invokeSumproduct(args));
}
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestTFunc.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestTFunc.java
index ac7152d0e2..53482c86c8 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestTFunc.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestTFunc.java
@@ -22,14 +22,13 @@ import junit.framework.TestCase;
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.ErrorEval;
-import org.apache.poi.hssf.record.formula.eval.Eval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.StringEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Test cases for Excel function T()
- *
+ *
* @author Josh Micich
*/
public final class TestTFunc extends TestCase {
@@ -37,9 +36,9 @@ public final class TestTFunc extends TestCase {
/**
* @return the result of calling function T() with the specified argument
*/
- private static Eval invokeT(Eval arg) {
- Eval[] args = { arg, };
- Eval result = new T().evaluate(args, -1, (short)-1);
+ private static ValueEval invokeT(ValueEval arg) {
+ ValueEval[] args = { arg, };
+ ValueEval result = new T().evaluate(args, -1, (short)-1);
assertNotNull("result may never be null", result);
return result;
}
@@ -47,20 +46,20 @@ public final class TestTFunc extends TestCase {
* Simulates call: T(A1)
* where cell A1 has the specified innerValue
*/
- private Eval invokeTWithReference(ValueEval innerValue) {
- Eval arg = EvalFactory.createRefEval("$B$2", innerValue);
+ private ValueEval invokeTWithReference(ValueEval innerValue) {
+ ValueEval arg = EvalFactory.createRefEval("$B$2", innerValue);
return invokeT(arg);
}
-
+
private static void confirmText(String text) {
- Eval arg = new StringEval(text);
- Eval eval = invokeT(arg);
+ ValueEval arg = new StringEval(text);
+ ValueEval eval = invokeT(arg);
StringEval se = (StringEval) eval;
assertEquals(text, se.getStringValue());
}
-
+
public void testTextValues() {
-
+
confirmText("abc");
confirmText("");
confirmText(" ");
@@ -68,26 +67,26 @@ public final class TestTFunc extends TestCase {
confirmText("123");
confirmText("TRUE");
}
-
- private static void confirmError(Eval arg) {
- Eval eval = invokeT(arg);
+
+ private static void confirmError(ValueEval arg) {
+ ValueEval eval = invokeT(arg);
assertTrue(arg == eval);
}
public void testErrorValues() {
-
+
confirmError(ErrorEval.VALUE_INVALID);
confirmError(ErrorEval.NA);
confirmError(ErrorEval.REF_INVALID);
}
-
- private static void confirmString(Eval eval, String expected) {
+
+ private static void confirmString(ValueEval eval, String expected) {
assertTrue(eval instanceof StringEval);
assertEquals(expected, ((StringEval)eval).getStringValue());
}
- private static void confirmOther(Eval arg) {
- Eval eval = invokeT(arg);
+ private static void confirmOther(ValueEval arg) {
+ ValueEval eval = invokeT(arg);
confirmString(eval, "");
}
@@ -98,8 +97,8 @@ public final class TestTFunc extends TestCase {
}
public void testRefValues() {
- Eval eval;
-
+ ValueEval eval;
+
eval = invokeTWithReference(new StringEval("def"));
confirmString(eval, "def");
eval = invokeTWithReference(new StringEval(" "));
@@ -109,7 +108,7 @@ public final class TestTFunc extends TestCase {
confirmString(eval, "");
eval = invokeTWithReference(BoolEval.TRUE);
confirmString(eval, "");
-
+
eval = invokeTWithReference(ErrorEval.NAME_INVALID);
assertTrue(eval == ErrorEval.NAME_INVALID);
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestTrim.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestTrim.java
index 1c65c9ca6d..a95b15157c 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestTrim.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestTrim.java
@@ -22,36 +22,36 @@ import junit.framework.TestCase;
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.ErrorEval;
-import org.apache.poi.hssf.record.formula.eval.Eval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.StringEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Tests for Excel function TRIM()
- *
+ *
* @author Josh Micich
*/
public final class TestTrim extends TestCase {
-
- private static Eval invokeTrim(Eval text) {
- Eval[] args = new Eval[] { text, };
+
+ private static ValueEval invokeTrim(ValueEval text) {
+ ValueEval[] args = new ValueEval[] { text, };
return TextFunction.TRIM.evaluate(args, -1, (short)-1);
}
- private void confirmTrim(Eval text, String expected) {
- Eval result = invokeTrim(text);
+ private void confirmTrim(ValueEval text, String expected) {
+ ValueEval result = invokeTrim(text);
assertEquals(StringEval.class, result.getClass());
assertEquals(expected, ((StringEval)result).getStringValue());
}
- private void confirmTrim(Eval text, ErrorEval expectedError) {
- Eval result = invokeTrim(text);
+ private void confirmTrim(ValueEval text, ErrorEval expectedError) {
+ ValueEval result = invokeTrim(text);
assertEquals(ErrorEval.class, result.getClass());
assertEquals(expectedError.getErrorCode(), ((ErrorEval)result).getErrorCode());
}
-
+
public void testBasic() {
-
+
confirmTrim(new StringEval(" hi "), "hi");
confirmTrim(new StringEval("hi "), "hi");
confirmTrim(new StringEval(" hi"), "hi");
@@ -59,13 +59,13 @@ public final class TestTrim extends TestCase {
confirmTrim(new StringEval(""), "");
confirmTrim(new StringEval(" "), "");
}
-
+
/**
* Valid cases where text arg is not exactly a string
*/
public void testUnusualArgs() {
-
- // text (first) arg type is number, other args are strings with fractional digits
+
+ // text (first) arg type is number, other args are strings with fractional digits
confirmTrim(new NumberEval(123456), "123456");
confirmTrim(BoolEval.FALSE, "FALSE");
confirmTrim(BoolEval.TRUE, "TRUE");
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestValue.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestValue.java
index 5f74fbf1a6..19a6d68927 100644
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestValue.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestValue.java
@@ -20,30 +20,30 @@ package org.apache.poi.hssf.record.formula.functions;
import junit.framework.TestCase;
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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.StringEval;
+import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Tests for {@link Value}
- *
+ *
* @author Josh Micich
*/
public final class TestValue extends TestCase {
- private static Eval invokeValue(String strText) {
- Eval[] args = new Eval[] { new StringEval(strText), };
+ private static ValueEval invokeValue(String strText) {
+ ValueEval[] args = new ValueEval[] { new StringEval(strText), };
return new Value().evaluate(args, -1, (short) -1);
}
private static void confirmValue(String strText, double expected) {
- Eval result = invokeValue(strText);
+ ValueEval result = invokeValue(strText);
assertEquals(NumberEval.class, result.getClass());
assertEquals(expected, ((NumberEval) result).getNumberValue(), 0.0);
}
private static void confirmValueError(String strText) {
- Eval result = invokeValue(strText);
+ ValueEval result = invokeValue(strText);
assertEquals(ErrorEval.class, result.getClass());
assertEquals(ErrorEval.VALUE_INVALID, result);
}
diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestXYNumericFunction.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestXYNumericFunction.java
index 0d62b1fb0f..818409cae7 100755
--- a/src/testcases/org/apache/poi/hssf/record/formula/functions/TestXYNumericFunction.java
+++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/TestXYNumericFunction.java
@@ -20,45 +20,44 @@ package org.apache.poi.hssf.record.formula.functions;
import junit.framework.TestCase;
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.NumberEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
/**
* Tests for Excel functions SUMX2MY2(), SUMX2PY2(), SUMXMY2()
- *
+ *
* @author Josh Micich
*/
public final class TestXYNumericFunction extends TestCase {
private static final Function SUM_SQUARES = new Sumx2py2();
private static final Function DIFF_SQUARES = new Sumx2my2();
private static final Function SUM_SQUARES_OF_DIFFS = new Sumxmy2();
-
- private static Eval invoke(Function function, Eval xArray, Eval yArray) {
- Eval[] args = new Eval[] { xArray, yArray, };
+
+ private static ValueEval invoke(Function function, ValueEval xArray, ValueEval yArray) {
+ ValueEval[] args = new ValueEval[] { xArray, yArray, };
return function.evaluate(args, -1, (short)-1);
}
- private void confirm(Function function, Eval xArray, Eval yArray, double expected) {
- Eval result = invoke(function, xArray, yArray);
+ private void confirm(Function function, ValueEval xArray, ValueEval yArray, double expected) {
+ ValueEval result = invoke(function, xArray, yArray);
assertEquals(NumberEval.class, result.getClass());
assertEquals(expected, ((NumberEval)result).getNumberValue(), 0);
}
- private void confirmError(Function function, Eval xArray, Eval yArray, ErrorEval expectedError) {
- Eval result = invoke(function, xArray, yArray);
+ private void confirmError(Function function, ValueEval xArray, ValueEval yArray, ErrorEval expectedError) {
+ ValueEval result = invoke(function, xArray, yArray);
assertEquals(ErrorEval.class, result.getClass());
assertEquals(expectedError.getErrorCode(), ((ErrorEval)result).getErrorCode());
}
- private void confirmError(Eval xArray, Eval yArray, ErrorEval expectedError) {
+ private void confirmError(ValueEval xArray, ValueEval yArray, ErrorEval expectedError) {
confirmError(SUM_SQUARES, xArray, yArray, expectedError);
confirmError(DIFF_SQUARES, xArray, yArray, expectedError);
confirmError(SUM_SQUARES_OF_DIFFS, xArray, yArray, expectedError);
}
-
+
public void testBasic() {
ValueEval[] xValues = {
- new NumberEval(1),
- new NumberEval(2),
+ new NumberEval(1),
+ new NumberEval(2),
};
ValueEval areaEvalX = createAreaEval(xValues);
confirm(SUM_SQUARES, areaEvalX, areaEvalX, 10.0);
@@ -66,27 +65,27 @@ public final class TestXYNumericFunction extends TestCase {
confirm(SUM_SQUARES_OF_DIFFS, areaEvalX, areaEvalX, 0.0);
ValueEval[] yValues = {
- new NumberEval(3),
- new NumberEval(4),
+ new NumberEval(3),
+ new NumberEval(4),
};
ValueEval areaEvalY = createAreaEval(yValues);
confirm(SUM_SQUARES, areaEvalX, areaEvalY, 30.0);
confirm(DIFF_SQUARES, areaEvalX, areaEvalY, -20.0);
confirm(SUM_SQUARES_OF_DIFFS, areaEvalX, areaEvalY, 8.0);
}
-
+
/**
* number of items in array is not limited to 30
*/
public void testLargeArrays() {
ValueEval[] xValues = createMockNumberArray(100, 3);
ValueEval[] yValues = createMockNumberArray(100, 2);
-
+
confirm(SUM_SQUARES, createAreaEval(xValues), createAreaEval(yValues), 1300.0);
confirm(DIFF_SQUARES, createAreaEval(xValues), createAreaEval(yValues), 500.0);
confirm(SUM_SQUARES_OF_DIFFS, createAreaEval(xValues), createAreaEval(yValues), 100.0);
}
-
+
private ValueEval[] createMockNumberArray(int size, double value) {
ValueEval[] result = new ValueEval[size];
@@ -103,20 +102,20 @@ public final class TestXYNumericFunction extends TestCase {
public void testErrors() {
ValueEval[] xValues = {
- ErrorEval.REF_INVALID,
- new NumberEval(2),
+ ErrorEval.REF_INVALID,
+ new NumberEval(2),
};
ValueEval areaEvalX = createAreaEval(xValues);
ValueEval[] yValues = {
- new NumberEval(2),
- ErrorEval.NULL_INTERSECTION,
+ new NumberEval(2),
+ ErrorEval.NULL_INTERSECTION,
};
ValueEval areaEvalY = createAreaEval(yValues);
ValueEval[] zValues = { // wrong size
- new NumberEval(2),
+ new NumberEval(2),
};
ValueEval areaEvalZ = createAreaEval(zValues);
-
+
// if either arg is an error, that error propagates
confirmError(ErrorEval.REF_INVALID, ErrorEval.NAME_INVALID, ErrorEval.REF_INVALID);
confirmError(areaEvalX, ErrorEval.NAME_INVALID, ErrorEval.NAME_INVALID);
@@ -128,10 +127,9 @@ public final class TestXYNumericFunction extends TestCase {
// any error in an array item propagates up
confirmError(areaEvalX, areaEvalX, ErrorEval.REF_INVALID);
-
+
// search for errors array by array, not pair by pair
confirmError(areaEvalX, areaEvalY, ErrorEval.REF_INVALID);
confirmError(areaEvalY, areaEvalX, ErrorEval.NULL_INTERSECTION);
-
}
}