Browse Source

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
tags/REL_3_12_BETA1
Dominik Stadler 9 years ago
parent
commit
b7ab04e5f2

+ 2
- 4
src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntEvaluationResult.java View File

@@ -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 ;
@@ -108,7 +108,5 @@ public class ExcelAntEvaluationResult {
+ ", returnValue=" + returnValue + ", errorMessage="
+ errorMessage + ", actualDelta=" + actualDelta + ", cellName="
+ cellName + "]";
}

}
}

+ 6
- 16
src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntWorkbookUtil.java View File

@@ -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,10 +329,7 @@ public class ExcelAntWorkbookUtil extends Typedef {
*/
public String getCellAsString( String cellName ) {
Cell cell = getCell( cellName ) ;
if( cell != null ) {
return cell.getStringCellValue() ;
}
return "" ;
return cell.getStringCellValue() ;
}


@@ -346,10 +341,7 @@ public class ExcelAntWorkbookUtil extends Typedef {
*/
public double getCellAsDouble( String cellName ) {
Cell cell = getCell( cellName ) ;
if( cell != null ) {
return cell.getNumericCellValue() ;
}
return 0.0 ;
return cell.getNumericCellValue() ;
}
/**
* Returns a cell reference based on a String in standard Excel format
@@ -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;
}

}

+ 208
- 73
src/excelant/testcases/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java View File

@@ -48,15 +48,15 @@ public class TestExcelAntWorkbookUtil extends TestCase {
}

public void testStringConstructor() {
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName);
assertNotNull( fixture ) ;
assertNotNull(fixture);
}

public void testLoadNotExistingFile() {
try {
assertNotNull(new ExcelAntWorkbookUtilTestHelper(
assertNotNull(new ExcelAntWorkbookUtilTestHelper(
"notexistingFile" ));
fail("Should catch exception here");
} catch (BuildException e) {
@@ -69,152 +69,287 @@ 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 ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
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 ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName);
assertNotNull( fixture ) ;
assertNotNull(fixture);
Workbook workbook = fixture.getWorkbook() ;
Workbook workbook = fixture.getWorkbook();
assertNotNull( workbook ) ;
assertNotNull(workbook);
}
public void testFileName() {
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
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 ) ;
FormulaEvaluator evaluator = fixture.getEvaluator(
mortgageCalculatorFileName ) ;
assertNotNull( evaluator ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName);
FormulaEvaluator evaluator = fixture.getEvaluator(
mortgageCalculatorFileName);
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") ;
fixture = new ExcelAntWorkbookUtilTestHelper(
BuildFileTest.getDataDir() + "/spreadsheet/sample.xlsx");
FormulaEvaluator evaluator = fixture.getEvaluator(
BuildFileTest.getDataDir() + "/spreadsheet/sample.xlsx" ) ;
FormulaEvaluator evaluator = fixture.getEvaluator(
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() {
String cell = "'MortgageCalculator'!B4" ;
double expectedValue = 790.79 ;
double precision = 0.1 ;

fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName);

ExcelAntEvaluationResult result = fixture.evaluateCell( cell,
ExcelAntEvaluationResult result = fixture.evaluateCell(cell,
expectedValue,
precision ) ;
System.out.println( result ) ;
assertTrue( result.didTestPass() ) ;
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());
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 ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
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() {
String cell = "'MortgageCalculator'!C14" ;
String cellValue = "testString" ;
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName ) ;
fixture.setStringValue( cell, cellValue ) ;
String value = fixture.getCellAsString( cell ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName);
assertNotNull( value ) ;
fixture.setStringValue(cell, cellValue);
assertEquals( cellValue, value ) ;
String value = fixture.getCellAsString(cell);
assertNotNull(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() {
String cell = "'MortgageCalculator'!C14" ;
Date cellValue = new Date();
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName ) ;
fixture.setDateValue( cell, cellValue ) ;
double value = fixture.getCellAsDouble( cell ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName);
assertNotNull( value ) ;
fixture.setDateValue(cell, cellValue);
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 ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
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 ) ;
fixture = new ExcelAntWorkbookUtilTestHelper(
mortgageCalculatorFileName);
double value = fixture.getCellAsDouble( cell ) ;
double value = fixture.getCellAsDouble(cell);
assertEquals( 0.0, value ) ;
assertEquals(0.0, value);
}
}

BIN
test-data/spreadsheet/excelant.xls View File


Loading…
Cancel
Save