aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntEvaluationResult.java6
-rw-r--r--src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntWorkbookUtil.java22
-rw-r--r--src/excelant/testcases/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java281
-rw-r--r--test-data/spreadsheet/excelant.xlsbin37888 -> 23552 bytes
4 files changed, 216 insertions, 93 deletions
diff --git a/src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntEvaluationResult.java b/src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntEvaluationResult.java
index 6633357157..ae946dd8cd 100644
--- a/src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntEvaluationResult.java
+++ b/src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntEvaluationResult.java
@@ -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 + "]";
- }
-
-
+ }
}
diff --git a/src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntWorkbookUtil.java b/src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntWorkbookUtil.java
index eec6157a65..c4f6969edd 100644
--- a/src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntWorkbookUtil.java
+++ b/src/excelant/java/org/apache/poi/ss/excelant/util/ExcelAntWorkbookUtil.java
@@ -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;
}
-
}
diff --git a/src/excelant/testcases/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java b/src/excelant/testcases/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java
index 7e5b1e4534..afc330b9f8 100644
--- a/src/excelant/testcases/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java
+++ b/src/excelant/testcases/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java
@@ -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);
}
}
diff --git a/test-data/spreadsheet/excelant.xls b/test-data/spreadsheet/excelant.xls
index e41edfbfd2..24f1fb3605 100644
--- a/test-data/spreadsheet/excelant.xls
+++ b/test-data/spreadsheet/excelant.xls
Binary files differ