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]

Reply via email to