Fix Eclipse warnings, provide better error message and adjust javadoc slightly
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1650598 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c8bf92f963
commit
3403bef5a8
@ -168,7 +168,7 @@ public abstract class PackagePart implements RelationshipSource {
|
||||
public PackageRelationship addExternalRelationship(String target,
|
||||
String relationshipType, String id) {
|
||||
if (target == null) {
|
||||
throw new IllegalArgumentException("target");
|
||||
throw new IllegalArgumentException("target is null for type " + relationshipType);
|
||||
}
|
||||
if (relationshipType == null) {
|
||||
throw new IllegalArgumentException("relationshipType");
|
||||
|
@ -98,6 +98,8 @@ public class SXSSFSheet implements Sheet, Cloneable
|
||||
*
|
||||
* @param rownum row number
|
||||
* @return high level Row object representing a row in the sheet
|
||||
* @throws IllegalArgumentException If the max. number of rows is exceeded or
|
||||
* a rownum is provided where the row is already flushed to disk.
|
||||
* @see #removeRow(Row)
|
||||
*/
|
||||
public Row createRow(int rownum)
|
||||
|
@ -17,6 +17,8 @@
|
||||
|
||||
package org.apache.poi.ss.formula;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import junit.framework.AssertionFailedError;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
@ -213,37 +215,43 @@ public class TestWorkbookEvaluator extends TestCase {
|
||||
/**
|
||||
* Functions like IF, INDIRECT, INDEX, OFFSET etc can return AreaEvals which
|
||||
* should be dereferenced by the evaluator
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testResultOutsideRange() {
|
||||
public void testResultOutsideRange() throws IOException {
|
||||
Workbook wb = new HSSFWorkbook();
|
||||
Cell cell = wb.createSheet("Sheet1").createRow(0).createCell(0);
|
||||
cell.setCellFormula("D2:D5"); // IF(TRUE,D2:D5,D2) or OFFSET(D2:D5,0,0) would work too
|
||||
FormulaEvaluator fe = wb.getCreationHelper().createFormulaEvaluator();
|
||||
CellValue cv;
|
||||
try {
|
||||
cv = fe.evaluate(cell);
|
||||
} catch (IllegalArgumentException e) {
|
||||
if ("Specified row index (0) is outside the allowed range (1..4)".equals(e.getMessage())) {
|
||||
throw new AssertionFailedError("Identified bug in result dereferencing");
|
||||
}
|
||||
throw new RuntimeException(e);
|
||||
Cell cell = wb.createSheet("Sheet1").createRow(0).createCell(0);
|
||||
cell.setCellFormula("D2:D5"); // IF(TRUE,D2:D5,D2) or OFFSET(D2:D5,0,0) would work too
|
||||
FormulaEvaluator fe = wb.getCreationHelper().createFormulaEvaluator();
|
||||
CellValue cv;
|
||||
try {
|
||||
cv = fe.evaluate(cell);
|
||||
} catch (IllegalArgumentException e) {
|
||||
if ("Specified row index (0) is outside the allowed range (1..4)".equals(e.getMessage())) {
|
||||
throw new AssertionFailedError("Identified bug in result dereferencing");
|
||||
}
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
assertEquals(Cell.CELL_TYPE_ERROR, cv.getCellType());
|
||||
assertEquals(ErrorConstants.ERROR_VALUE, cv.getErrorValue());
|
||||
|
||||
// verify circular refs are still detected properly
|
||||
fe.clearAllCachedResultValues();
|
||||
cell.setCellFormula("OFFSET(A1,0,0)");
|
||||
cv = fe.evaluate(cell);
|
||||
assertEquals(Cell.CELL_TYPE_ERROR, cv.getCellType());
|
||||
assertEquals(ErrorEval.CIRCULAR_REF_ERROR.getErrorCode(), cv.getErrorValue());
|
||||
} finally {
|
||||
wb.close();
|
||||
}
|
||||
assertEquals(Cell.CELL_TYPE_ERROR, cv.getCellType());
|
||||
assertEquals(ErrorConstants.ERROR_VALUE, cv.getErrorValue());
|
||||
|
||||
// verify circular refs are still detected properly
|
||||
fe.clearAllCachedResultValues();
|
||||
cell.setCellFormula("OFFSET(A1,0,0)");
|
||||
cv = fe.evaluate(cell);
|
||||
assertEquals(Cell.CELL_TYPE_ERROR, cv.getCellType());
|
||||
assertEquals(ErrorEval.CIRCULAR_REF_ERROR.getErrorCode(), cv.getErrorValue());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* formulas with defined names.
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testNamesInFormulas() {
|
||||
public void testNamesInFormulas() throws IOException {
|
||||
Workbook wb = new HSSFWorkbook();
|
||||
Sheet sheet = wb.createSheet("Sheet1");
|
||||
|
||||
@ -279,6 +287,8 @@ public class TestWorkbookEvaluator extends TestCase {
|
||||
assertEquals(10.0, fe.evaluate(row1.getCell(2)).getNumberValue());
|
||||
assertEquals(15.0, fe.evaluate(row2.getCell(2)).getNumberValue());
|
||||
assertEquals(28.14, fe.evaluate(row3.getCell(2)).getNumberValue());
|
||||
|
||||
wb.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user