removed obsolete work-around code from test case
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@891887 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b589ee7482
commit
4a5154b3f3
@ -17,19 +17,10 @@
|
||||
|
||||
package org.apache.poi.hssf.record.formula.eval;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import junit.framework.AssertionFailedError;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate;
|
||||
import org.apache.poi.hssf.record.formula.AreaI;
|
||||
import org.apache.poi.hssf.record.formula.AttrPtg;
|
||||
import org.apache.poi.hssf.record.formula.FuncVarPtg;
|
||||
import org.apache.poi.hssf.record.formula.IntPtg;
|
||||
import org.apache.poi.hssf.record.formula.Ptg;
|
||||
import org.apache.poi.hssf.record.formula.RangePtg;
|
||||
import org.apache.poi.hssf.record.formula.RefPtg;
|
||||
import org.apache.poi.hssf.record.formula.AreaI.OffsetArea;
|
||||
import org.apache.poi.hssf.usermodel.HSSFCell;
|
||||
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
|
||||
@ -37,7 +28,6 @@ import org.apache.poi.hssf.usermodel.HSSFRow;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.hssf.util.AreaReference;
|
||||
import org.apache.poi.hssf.util.CellReference;
|
||||
import org.apache.poi.ss.formula.FormulaParser;
|
||||
import org.apache.poi.ss.usermodel.CellValue;
|
||||
|
||||
/**
|
||||
@ -122,18 +112,7 @@ public final class TestRangeEval extends TestCase {
|
||||
row.createCell(4).setCellValue(9.0); // E1
|
||||
|
||||
|
||||
try {
|
||||
cellA1.setCellFormula("SUM(C1:OFFSET(C1,0,B1))");
|
||||
} catch (RuntimeException e) {
|
||||
// TODO fix formula parser to handle ':' as a proper operator
|
||||
if (!e.getClass().getName().startsWith(FormulaParser.class.getName())) {
|
||||
throw e;
|
||||
}
|
||||
// FormulaParseException is expected until the parser is fixed up
|
||||
// Poke the formula in directly:
|
||||
pokeInOffsetFormula(cellA1);
|
||||
}
|
||||
|
||||
cellA1.setCellFormula("SUM(C1:OFFSET(C1,0,B1))");
|
||||
|
||||
cellB1.setCellValue(1.0); // range will be C1:D1
|
||||
|
||||
@ -160,36 +139,4 @@ public final class TestRangeEval extends TestCase {
|
||||
cv = fe.evaluate(cellA1);
|
||||
assertEquals(5.0, cv.getNumberValue(), 0.0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Directly sets the formula "SUM(C1:OFFSET(C1,0,B1))" in the specified cell.
|
||||
* This hack can be removed when the formula parser can handle functions as
|
||||
* operands to the range (:) operator.
|
||||
*
|
||||
*/
|
||||
private static void pokeInOffsetFormula(HSSFCell cell) {
|
||||
cell.setCellFormula("1");
|
||||
FormulaRecordAggregate fr;
|
||||
try {
|
||||
Field field = HSSFCell.class.getDeclaredField("_record");
|
||||
field.setAccessible(true);
|
||||
fr = (FormulaRecordAggregate) field.get(cell);
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
Ptg[] ptgs = {
|
||||
new RefPtg("C1"),
|
||||
new RefPtg("C1"),
|
||||
new IntPtg(0),
|
||||
new RefPtg("B1"),
|
||||
FuncVarPtg.create("OFFSET", (byte)3),
|
||||
RangePtg.instance,
|
||||
AttrPtg.SUM,
|
||||
};
|
||||
fr.setParsedExpression(ptgs);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user