Author: fanningpj
Date: Tue Oct 29 17:49:27 2024
New Revision: 1921649
URL: http://svn.apache.org/viewvc?rev=1921649&view=rev
Log:
add workday test
Added:
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWorkdayFunc.java
- copied, changed from r1921510,
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWeekdayFunc.java
Modified:
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestProduct.java
Modified:
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestProduct.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestProduct.java?rev=1921649&r1=1921648&r2=1921649&view=diff
==============================================================================
---
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestProduct.java
(original)
+++
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestProduct.java
Tue Oct 29 17:49:27 2024
@@ -16,6 +16,11 @@
==================================================================== */
package org.apache.poi.ss.formula.functions;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.formula.eval.BoolEval;
import org.apache.poi.ss.formula.eval.MissingArgEval;
import org.apache.poi.ss.formula.eval.NumberEval;
@@ -23,6 +28,9 @@ import org.apache.poi.ss.formula.eval.St
import org.apache.poi.ss.formula.eval.ValueEval;
import org.junit.jupiter.api.Test;
+import java.io.IOException;
+
+import static org.apache.poi.ss.util.Utils.assertDouble;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -65,6 +73,22 @@ class TestProduct {
assertEquals(12, ((NumberEval)result).getNumberValue(), 0);
}
+ @Test
+ void test2Booleans() throws IOException {
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFSheet sheet = wb.createSheet();
+ HSSFRow row0 = sheet.createRow(0);
+ HSSFRow row1 = sheet.createRow(1);
+ row0.createCell(0).setCellValue(true);
+ row0.createCell(1).setCellValue(true);
+ HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+ HSSFCell cell = row1.createCell(0);
+ assertDouble(fe, cell, "PRODUCT(TRUE,TRUE)", 1.0, 0.000001);
+ assertDouble(fe, cell, "PRODUCT(A1:B1)", 0.0, 0.000001);
+ assertDouble(fe, cell, "PRODUCT(A1,B1)", 0.0, 0.000001);
+ }
+ }
+
private static Function getInstance() {
return AggregateFunction.PRODUCT;
}
Copied:
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWorkdayFunc.java
(from r1921510,
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWeekdayFunc.java)
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWorkdayFunc.java?p2=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWorkdayFunc.java&p1=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWeekdayFunc.java&r1=1921510&r2=1921649&rev=1921649&view=diff
==============================================================================
---
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWeekdayFunc.java
(original)
+++
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestWorkdayFunc.java
Tue Oct 29 17:49:27 2024
@@ -17,88 +17,36 @@
package org.apache.poi.ss.formula.functions;
-import org.apache.poi.ss.formula.eval.*;
+import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
-import org.apache.poi.util.StringUtil;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
import org.junit.jupiter.api.Test;
+import java.io.IOException;
import java.time.LocalDate;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.apache.poi.ss.util.Utils.assertDouble;
/**
- * Tests WEEKDAY(serial_number[, return_type]) excel function
- *
https://support.office.com/en-us/article/WEEKDAY-function-60E44483-2ED1-439F-8BD0-E404C190949A
+ * Tests WORKDAY(start_date, days, [holidays]) excel function
+ *
https://support.microsoft.com/en-us/office/workday-function-f764a5b7-05fc-4494-9486-60d494efbf33
*/
-class TestWeekdayFunc {
- private static final double TOLERANCE = 0.001;
-
- private void assertEvaluateEquals(double expected, double serial_number) {
- String formula = "WEEKDAY(" + serial_number + ")";
- ValueEval[] args = new ValueEval[] { new NumberEval(serial_number) };
- NumberEval result = (NumberEval) WeekdayFunc.instance.evaluate(args,
0, 0);
- assertEquals(expected, result.getNumberValue(), TOLERANCE, formula);
- }
- private void assertEvaluateEquals(double expected, double serial_number,
double return_type) {
- String formula = "WEEKDAY(" + serial_number + ", " + return_type + ")";
- ValueEval[] args = new ValueEval[] { new NumberEval(serial_number),
new NumberEval(return_type) };
- NumberEval result = (NumberEval) WeekdayFunc.instance.evaluate(args,
0, 0);
- assertEquals(expected, result.getNumberValue(), TOLERANCE, formula);
- }
-
- @Test
- void testEvaluate() {
- assertEvaluateEquals(2.0, 1.0);
- assertEvaluateEquals(2.0, 1.0, 1.0);
- assertEvaluateEquals(1.0, 1.0, 2.0);
- assertEvaluateEquals(0.0, 1.0, 3.0);
- assertEvaluateEquals(1.0, 1.0, 11.0);
- assertEvaluateEquals(7.0, 1.0, 12.0);
- assertEvaluateEquals(6.0, 1.0, 13.0);
- assertEvaluateEquals(5.0, 1.0, 14.0);
- assertEvaluateEquals(4.0, 1.0, 15.0);
- assertEvaluateEquals(3.0, 1.0, 16.0);
- assertEvaluateEquals(2.0, 1.0, 17.0);
-
-
- assertEvaluateEquals(3.0, 39448.0);
- assertEvaluateEquals(3.0, 39448.0, 1.0);
- assertEvaluateEquals(2.0, 39448.0, 2.0);
- assertEvaluateEquals(1.0, 39448.0, 3.0);
- assertEvaluateEquals(2.0, 39448.0, 11.0);
- assertEvaluateEquals(1.0, 39448.0, 12.0);
- assertEvaluateEquals(7.0, 39448.0, 13.0);
- assertEvaluateEquals(6.0, 39448.0, 14.0);
- assertEvaluateEquals(5.0, 39448.0, 15.0);
- assertEvaluateEquals(4.0, 39448.0, 16.0);
- assertEvaluateEquals(3.0, 39448.0, 17.0);
- }
-
-
- @Test
- void testMicrosoftExamples() {
- double date = DateUtil.getExcelDate(LocalDate.parse("2008-02-14"));
- assertEvaluateEquals(5.0, date);
- assertEvaluateEquals(4.0, date, 2);
- assertEvaluateEquals(3.0, date, 3);
- }
-
- // for testing invalid invocations
- private void assertEvaluateEquals(String message, ErrorEval expected,
ValueEval... args) {
- String formula = "WEEKDAY(" + StringUtil.join(args, ", ") + ")";
- ValueEval result = WeekdayFunc.instance.evaluate(args, 0, 0);
- assertEquals(expected, result, formula + ": " + message);
- }
-
+class TestWorkdayFunc {
@Test
- void testEvaluateInvalid() {
- assertEvaluateEquals("no args", ErrorEval.VALUE_INVALID);
- assertEvaluateEquals("too many args", ErrorEval.VALUE_INVALID, new
NumberEval(1.0), new NumberEval(1.0), new NumberEval(1.0));
- assertEvaluateEquals("negative date", ErrorEval.NUM_ERROR, new
NumberEval(-1.0));
- assertEvaluateEquals("cannot coerce serial_number to number",
ErrorEval.VALUE_INVALID, new StringEval(""));
- assertEvaluateEquals("cannot coerce return_type to number",
ErrorEval.VALUE_INVALID, new StringEval("1"), new StringEval(""));
- assertEvaluateEquals("return_type is blank", ErrorEval.NUM_ERROR,
new StringEval("2"), BlankEval.instance);
- assertEvaluateEquals("return_type is missing", ErrorEval.NUM_ERROR,
new StringEval("3"), MissingArgEval.instance);
- assertEvaluateEquals("invalid return_type", ErrorEval.NUM_ERROR,
new NumberEval(1.0), new NumberEval(18.0));
+ void testCellRefs() throws IOException {
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ Sheet sheet = wb.createSheet();
+ Row row0 = sheet.createRow(0);
+ Cell cellA1 = row0.createCell(0);
+ Cell cellB1 = row0.createCell(1);
+ cellA1.setCellValue(LocalDate.parse("2024-10-29"));
+ cellB1.setCellValue(5);
+ Cell cellResult = sheet.createRow(1).createCell(0);
+ HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+ assertDouble(fe, cellResult, "WORKDAY(A1,5)",
DateUtil.getExcelDate(LocalDate.parse("2024-11-05")));
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]