mirror of https://github.com/apache/poi.git
Update tests for ExcelAntWorkbookUtil, remove some unnecessary null-checks that can never happen, fix setting failed state on error in evaluation
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1649311 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
33c4268b2e
commit
b7ab04e5f2
|
@ -30,7 +30,7 @@ public class ExcelAntEvaluationResult {
|
|||
/**
|
||||
* This boolean flag is used to determine if the evaluation completed
|
||||
* without error. This alone doesn't ensure that the evaluation was
|
||||
* sucessful.
|
||||
* successful.
|
||||
*/
|
||||
private boolean evaluationCompletedWithError ;
|
||||
|
||||
|
@ -109,6 +109,4 @@ public class ExcelAntEvaluationResult {
|
|||
+ errorMessage + ", actualDelta=" + actualDelta + ", cellName="
|
||||
+ cellName + "]";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
|
||||
private Workbook workbook;
|
||||
|
||||
private HashMap<String, FreeRefFunction> xlsMacroList;
|
||||
private final HashMap<String, FreeRefFunction> xlsMacroList = new HashMap<String, FreeRefFunction>();
|
||||
|
||||
/**
|
||||
* Constructs an instance using a String that contains the fully qualified
|
||||
|
@ -63,7 +63,6 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
*/
|
||||
protected ExcelAntWorkbookUtil(String fName) {
|
||||
excelFileName = fName;
|
||||
xlsMacroList = new HashMap<String, FreeRefFunction>() ;
|
||||
loadWorkbook();
|
||||
|
||||
}
|
||||
|
@ -75,7 +74,6 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
*/
|
||||
protected ExcelAntWorkbookUtil(Workbook wb) {
|
||||
workbook = wb;
|
||||
xlsMacroList = new HashMap<String, FreeRefFunction>() ;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -164,14 +162,14 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
protected FormulaEvaluator getEvaluator( String fileName ) {
|
||||
FormulaEvaluator evaluator ;
|
||||
if (fileName.endsWith(".xlsx")) {
|
||||
if( xlsMacroList != null && xlsMacroList.size() > 0 ) {
|
||||
if( xlsMacroList.size() > 0 ) {
|
||||
evaluator = XSSFFormulaEvaluator.create( (XSSFWorkbook) workbook,
|
||||
null,
|
||||
getFunctions() ) ;
|
||||
}
|
||||
evaluator = new XSSFFormulaEvaluator((XSSFWorkbook) workbook);
|
||||
} else {
|
||||
if( xlsMacroList != null && xlsMacroList.size() > 0 ) {
|
||||
if( xlsMacroList.size() > 0 ) {
|
||||
evaluator = HSSFFormulaEvaluator.create( (HSSFWorkbook)workbook,
|
||||
null,
|
||||
getFunctions() ) ;
|
||||
|
@ -312,7 +310,7 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
Byte.toString( resultOfEval.getErrorValue() ) ;
|
||||
}
|
||||
|
||||
evalResults = new ExcelAntEvaluationResult(false, false,
|
||||
evalResults = new ExcelAntEvaluationResult(true, false,
|
||||
resultOfEval.getNumberValue(),
|
||||
"Evaluation failed due to an evaluation error of "
|
||||
+ resultOfEval.getErrorValue()
|
||||
|
@ -331,11 +329,8 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
*/
|
||||
public String getCellAsString( String cellName ) {
|
||||
Cell cell = getCell( cellName ) ;
|
||||
if( cell != null ) {
|
||||
return cell.getStringCellValue() ;
|
||||
}
|
||||
return "" ;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -346,11 +341,8 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
*/
|
||||
public double getCellAsDouble( String cellName ) {
|
||||
Cell cell = getCell( cellName ) ;
|
||||
if( cell != null ) {
|
||||
return cell.getNumericCellValue() ;
|
||||
}
|
||||
return 0.0 ;
|
||||
}
|
||||
/**
|
||||
* Returns a cell reference based on a String in standard Excel format
|
||||
* (SheetName!CellId). This method will create a new cell if the
|
||||
|
@ -360,7 +352,6 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
* @return
|
||||
*/
|
||||
private Cell getCell(String cellName) {
|
||||
|
||||
CellReference cellRef = new CellReference(cellName);
|
||||
String sheetName = cellRef.getSheetName();
|
||||
Sheet sheet = workbook.getSheet(sheetName);
|
||||
|
@ -384,5 +375,4 @@ public class ExcelAntWorkbookUtil extends Typedef {
|
|||
|
||||
return cell;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -49,9 +49,9 @@ public class TestExcelAntWorkbookUtil extends TestCase {
|
|||
|
||||
public void testStringConstructor() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
assertNotNull( fixture ) ;
|
||||
assertNotNull(fixture);
|
||||
}
|
||||
|
||||
public void testLoadNotExistingFile() {
|
||||
|
@ -69,70 +69,120 @@ public class TestExcelAntWorkbookUtil extends TestCase {
|
|||
FileInputStream fis = new FileInputStream(workbookFile);
|
||||
Workbook workbook = WorkbookFactory.create(fis);
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper( workbook ) ;
|
||||
|
||||
assertNotNull( fixture ) ;
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(workbook);
|
||||
|
||||
assertNotNull(fixture);
|
||||
}
|
||||
|
||||
public void testAddFunction() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
assertNotNull( fixture ) ;
|
||||
assertNotNull(fixture);
|
||||
|
||||
fixture.addFunction("h2_ZFactor", new CalculateMortgageFunction() ) ;
|
||||
fixture.addFunction("h2_ZFactor", new CalculateMortgageFunction());
|
||||
|
||||
UDFFinder functions = fixture.getFunctions() ;
|
||||
UDFFinder functions = fixture.getFunctions();
|
||||
|
||||
assertNotNull( functions ) ;
|
||||
assertNotNull(functions);
|
||||
assertNotNull(functions.findFunction("h2_ZFactor"));
|
||||
}
|
||||
|
||||
public void testAddFunctionClassName() throws Exception {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
assertNotNull(fixture);
|
||||
|
||||
fixture.addFunction("h2_ZFactor", CalculateMortgageFunction.class.getName());
|
||||
|
||||
UDFFinder functions = fixture.getFunctions();
|
||||
|
||||
assertNotNull(functions);
|
||||
assertNotNull(functions.findFunction("h2_ZFactor"));
|
||||
}
|
||||
|
||||
public void testAddFunctionInvalidClassName() throws Exception {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
assertNotNull(fixture);
|
||||
|
||||
fixture.addFunction("h2_ZFactor", String.class.getName());
|
||||
|
||||
UDFFinder functions = fixture.getFunctions();
|
||||
|
||||
assertNotNull(functions);
|
||||
assertNull(functions.findFunction("h2_ZFactor"));
|
||||
}
|
||||
|
||||
public void testGetWorkbook() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
assertNotNull( fixture ) ;
|
||||
assertNotNull(fixture);
|
||||
|
||||
Workbook workbook = fixture.getWorkbook() ;
|
||||
Workbook workbook = fixture.getWorkbook();
|
||||
|
||||
assertNotNull( workbook ) ;
|
||||
assertNotNull(workbook);
|
||||
}
|
||||
|
||||
public void testFileName() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
assertNotNull( fixture ) ;
|
||||
assertNotNull(fixture);
|
||||
|
||||
String fileName = fixture.getFileName() ;
|
||||
String fileName = fixture.getFileName();
|
||||
|
||||
assertNotNull( fileName ) ;
|
||||
assertNotNull(fileName);
|
||||
|
||||
assertEquals( mortgageCalculatorFileName, fileName ) ;
|
||||
assertEquals(mortgageCalculatorFileName, fileName);
|
||||
|
||||
}
|
||||
|
||||
public void testGetEvaluator() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
FormulaEvaluator evaluator = fixture.getEvaluator(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
assertNotNull( evaluator ) ;
|
||||
assertNotNull(evaluator);
|
||||
}
|
||||
|
||||
public void testGetEvaluatorWithUDF() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
fixture.addFunction("h2_ZFactor", new CalculateMortgageFunction());
|
||||
|
||||
FormulaEvaluator evaluator = fixture.getEvaluator(
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
assertNotNull(evaluator);
|
||||
}
|
||||
|
||||
public void testGetEvaluatorXLSX() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
BuildFileTest.getDataDir() + "/spreadsheet/sample.xlsx") ;
|
||||
BuildFileTest.getDataDir() + "/spreadsheet/sample.xlsx");
|
||||
|
||||
FormulaEvaluator evaluator = fixture.getEvaluator(
|
||||
BuildFileTest.getDataDir() + "/spreadsheet/sample.xlsx" ) ;
|
||||
BuildFileTest.getDataDir() + "/spreadsheet/sample.xlsx");
|
||||
|
||||
assertNotNull( evaluator ) ;
|
||||
assertNotNull(evaluator);
|
||||
}
|
||||
|
||||
public void testGetEvaluatorXLSXWithFunction() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
BuildFileTest.getDataDir() + "/spreadsheet/sample.xlsx");
|
||||
|
||||
fixture.addFunction("h2_ZFactor", new CalculateMortgageFunction());
|
||||
|
||||
FormulaEvaluator evaluator = fixture.getEvaluator(
|
||||
BuildFileTest.getDataDir() + "/spreadsheet/sample.xlsx");
|
||||
|
||||
assertNotNull(evaluator);
|
||||
}
|
||||
|
||||
public void testEvaluateCell() {
|
||||
|
@ -141,25 +191,71 @@ public class TestExcelAntWorkbookUtil extends TestCase {
|
|||
double precision = 0.1 ;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
ExcelAntEvaluationResult result = fixture.evaluateCell( cell,
|
||||
ExcelAntEvaluationResult result = fixture.evaluateCell(cell,
|
||||
expectedValue,
|
||||
precision ) ;
|
||||
precision);
|
||||
|
||||
System.out.println( result ) ;
|
||||
//System.out.println(result);
|
||||
assertTrue(result.toString().contains("evaluationCompletedWithError=false"));
|
||||
assertTrue(result.toString().contains("returnValue=790.79"));
|
||||
assertTrue(result.toString().contains("cellName='MortgageCalculator'!B4"));
|
||||
|
||||
assertTrue( result.didTestPass() ) ;
|
||||
assertFalse(result.evaluationCompleteWithError());
|
||||
assertTrue(result.didTestPass());
|
||||
}
|
||||
|
||||
public void testEvaluateCellFailedPrecision() {
|
||||
String cell = "'MortgageCalculator'!B4" ;
|
||||
double expectedValue = 790.79 ;
|
||||
double precision = 0.0000000000001 ;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
ExcelAntEvaluationResult result = fixture.evaluateCell(cell,
|
||||
expectedValue,
|
||||
precision);
|
||||
|
||||
//System.out.println(result);
|
||||
assertTrue(result.toString().contains("evaluationCompletedWithError=false"));
|
||||
assertTrue(result.toString().contains("returnValue=790.79"));
|
||||
assertTrue(result.toString().contains("cellName='MortgageCalculator'!B4"));
|
||||
|
||||
assertFalse(result.evaluationCompleteWithError());
|
||||
assertFalse(result.didTestPass());
|
||||
}
|
||||
|
||||
public void testEvaluateCellWithError() {
|
||||
String cell = "'ErrorCell'!A1" ;
|
||||
double expectedValue = 790.79 ;
|
||||
double precision = 0.1 ;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
ExcelAntEvaluationResult result = fixture.evaluateCell(cell,
|
||||
expectedValue,
|
||||
precision);
|
||||
|
||||
System.out.println(result);
|
||||
assertTrue(result.toString().contains("evaluationCompletedWithError=true"));
|
||||
assertTrue(result.toString().contains("returnValue=0.0"));
|
||||
assertTrue(result.toString().contains("cellName='ErrorCell'!A1"));
|
||||
|
||||
assertTrue(result.evaluationCompleteWithError());
|
||||
assertFalse(result.didTestPass());
|
||||
}
|
||||
|
||||
public void testGetSheets() {
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
ArrayList<String> sheets = fixture.getSheets() ;
|
||||
ArrayList<String> sheets = fixture.getSheets();
|
||||
|
||||
assertNotNull( sheets ) ;
|
||||
assertEquals( sheets.size(), 3 ) ;
|
||||
assertNotNull(sheets);
|
||||
assertEquals(sheets.size(), 3);
|
||||
}
|
||||
|
||||
public void testSetString() {
|
||||
|
@ -167,16 +263,57 @@ public class TestExcelAntWorkbookUtil extends TestCase {
|
|||
String cellValue = "testString" ;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
fixture.setStringValue( cell, cellValue ) ;
|
||||
fixture.setStringValue(cell, cellValue);
|
||||
|
||||
String value = fixture.getCellAsString( cell ) ;
|
||||
String value = fixture.getCellAsString(cell);
|
||||
|
||||
assertNotNull( value ) ;
|
||||
assertNotNull(value);
|
||||
assertEquals(cellValue, value);
|
||||
}
|
||||
|
||||
assertEquals( cellValue, value ) ;
|
||||
public void testSetNotExistingSheet() {
|
||||
String cell = "'NotexistingSheet'!C14" ;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName);
|
||||
try {
|
||||
fixture.setStringValue(cell, "some");
|
||||
fail("Should catch exception here");
|
||||
} catch (BuildException e) {
|
||||
assertTrue(e.getMessage().contains("NotexistingSheet"));
|
||||
}
|
||||
}
|
||||
|
||||
public void testSetFormula() {
|
||||
String cell = "'MortgageCalculator'!C14" ;
|
||||
String cellValue = "SUM(B14:B18)" ;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
fixture.setFormulaValue(cell, cellValue);
|
||||
|
||||
double value = fixture.getCellAsDouble(cell);
|
||||
|
||||
assertNotNull(value);
|
||||
assertEquals(0.0, value);
|
||||
}
|
||||
|
||||
public void testSetDoubleValue() {
|
||||
String cell = "'MortgageCalculator'!C14" ;
|
||||
double cellValue = 1.2;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
fixture.setDoubleValue(cell, cellValue);
|
||||
|
||||
Double value = fixture.getCellAsDouble(cell);
|
||||
|
||||
assertNotNull(value);
|
||||
assertEquals(cellValue, value);
|
||||
}
|
||||
|
||||
public void testSetDate() {
|
||||
|
@ -184,37 +321,35 @@ public class TestExcelAntWorkbookUtil extends TestCase {
|
|||
Date cellValue = new Date();
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
fixture.setDateValue( cell, cellValue ) ;
|
||||
fixture.setDateValue(cell, cellValue);
|
||||
|
||||
double value = fixture.getCellAsDouble( cell ) ;
|
||||
|
||||
assertNotNull( value ) ;
|
||||
|
||||
assertEquals( DateUtil.getExcelDate(cellValue, false), value ) ;
|
||||
double value = fixture.getCellAsDouble(cell);
|
||||
|
||||
assertNotNull(value);
|
||||
assertEquals(DateUtil.getExcelDate(cellValue, false), value);
|
||||
}
|
||||
|
||||
public void testGetNonexistingString() {
|
||||
String cell = "'MortgageCalculator'!C33" ;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
String value = fixture.getCellAsString( cell ) ;
|
||||
String value = fixture.getCellAsString(cell);
|
||||
|
||||
assertEquals( "", value ) ;
|
||||
assertEquals("", value);
|
||||
}
|
||||
|
||||
public void testGetNonexistingDouble() {
|
||||
String cell = "'MortgageCalculator'!C33" ;
|
||||
|
||||
fixture = new ExcelAntWorkbookUtilTestHelper(
|
||||
mortgageCalculatorFileName ) ;
|
||||
mortgageCalculatorFileName);
|
||||
|
||||
double value = fixture.getCellAsDouble( cell ) ;
|
||||
double value = fixture.getCellAsDouble(cell);
|
||||
|
||||
assertEquals( 0.0, value ) ;
|
||||
assertEquals(0.0, value);
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue