Author: fanningpj
Date: Fri Feb 11 23:17:48 2022
New Revision: 1897984

URL: http://svn.apache.org/viewvc?rev=1897984&view=rev
Log:
add workday tests

Added:
    
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayIntlFunction.java
      - copied, changed from r1897983, 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayFunction.java
Modified:
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayCalculator.java
    
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayIntlFunction.java

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayCalculator.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayCalculator.java?rev=1897984&r1=1897983&r2=1897984&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayCalculator.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayCalculator.java
 Fri Feb 11 23:17:48 2022
@@ -73,13 +73,13 @@ public class WorkdayCalculator {
         weekendTypeMap.put(5, wedsThursWeekend);
         weekendTypeMap.put(6, thursFriWeekend);
         weekendTypeMap.put(7, friSatWeekend);
-        weekendTypeMap.put(11, monWeekend);
-        weekendTypeMap.put(12, tuesWeekend);
-        weekendTypeMap.put(13, wedsWeekend);
-        weekendTypeMap.put(14, thursWeekend);
-        weekendTypeMap.put(15, friWeekend);
-        weekendTypeMap.put(16, satWeekend);
-        weekendTypeMap.put(17, sunWeekend);
+        weekendTypeMap.put(11, sunWeekend);
+        weekendTypeMap.put(12, monWeekend);
+        weekendTypeMap.put(13, tuesWeekend);
+        weekendTypeMap.put(14, wedsWeekend);
+        weekendTypeMap.put(15, thursWeekend);
+        weekendTypeMap.put(16, friWeekend);
+        weekendTypeMap.put(17, satWeekend);
     }
 
     /**

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayIntlFunction.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayIntlFunction.java?rev=1897984&r1=1897983&r2=1897984&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayIntlFunction.java
 (original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/ss/formula/atp/WorkdayIntlFunction.java
 Fri Feb 11 23:17:48 2022
@@ -18,6 +18,7 @@
 package org.apache.poi.ss.formula.atp;
 
 import org.apache.poi.ss.formula.OperationEvaluationContext;
+import org.apache.poi.ss.formula.eval.BlankEval;
 import org.apache.poi.ss.formula.eval.ErrorEval;
 import org.apache.poi.ss.formula.eval.EvaluationException;
 import org.apache.poi.ss.formula.eval.NumberEval;
@@ -69,7 +70,9 @@ final class WorkdayIntlFunction implemen
             start = this.evaluator.evaluateDateArg(args[0], srcCellRow, 
srcCellCol);
             days = (int) Math.floor(this.evaluator.evaluateNumberArg(args[1], 
srcCellRow, srcCellCol));
             if (args.length >= 3) {
-                weekendType = (int) this.evaluator.evaluateNumberArg(args[2], 
srcCellRow, srcCellCol);
+                if (args[2] != BlankEval.instance) {
+                    weekendType = (int) 
this.evaluator.evaluateNumberArg(args[2], srcCellRow, srcCellCol);
+                }
                 if 
(!WorkdayCalculator.instance.getValidWeekendTypes().contains(weekendType)) {
                    return ErrorEval.NUM_ERROR;
                 }

Copied: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayIntlFunction.java
 (from r1897983, 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayFunction.java)
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayIntlFunction.java?p2=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayIntlFunction.java&p1=poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayFunction.java&r1=1897983&r2=1897984&rev=1897984&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayFunction.java
 (original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/atp/TestWorkdayIntlFunction.java
 Fri Feb 11 23:17:48 2022
@@ -19,18 +19,12 @@
 package org.apache.poi.ss.formula.atp;
 
 
-import static org.apache.poi.ss.formula.eval.ErrorEval.VALUE_INVALID;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-
 import org.apache.poi.ss.formula.OperationEvaluationContext;
 import org.apache.poi.ss.formula.TwoDEval;
 import org.apache.poi.ss.formula.eval.AreaEval;
 import org.apache.poi.ss.formula.eval.AreaEvalBase;
+import org.apache.poi.ss.formula.eval.BlankEval;
+import org.apache.poi.ss.formula.eval.ErrorEval;
 import org.apache.poi.ss.formula.eval.NumberEval;
 import org.apache.poi.ss.formula.eval.StringEval;
 import org.apache.poi.ss.formula.eval.ValueEval;
@@ -38,7 +32,15 @@ import org.apache.poi.ss.usermodel.DateU
 import org.apache.poi.util.LocaleUtil;
 import org.junit.jupiter.api.Test;
 
-class TestWorkdayFunction {
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import static org.apache.poi.ss.formula.eval.ErrorEval.VALUE_INVALID;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class TestWorkdayIntlFunction {
 
     private static final String STARTING_DATE      = "2008/10/01";
     private static final String FIRST_HOLIDAY      = "2008/11/26";
@@ -51,25 +53,25 @@ class TestWorkdayFunction {
     @Test
     void testFailWhenNoArguments() {
         ValueEval[] ve = new ValueEval[0];
-        assertEquals(VALUE_INVALID, WorkdayFunction.instance.evaluate(ve, 
null));
+        assertEquals(VALUE_INVALID, WorkdayIntlFunction.instance.evaluate(ve, 
null));
     }
 
     @Test
     void testFailWhenLessThan2Arguments() {
         ValueEval[] ve = new ValueEval[1];
-        assertEquals(VALUE_INVALID, WorkdayFunction.instance.evaluate(ve, 
null));
+        assertEquals(VALUE_INVALID, WorkdayIntlFunction.instance.evaluate(ve, 
null));
     }
 
     @Test
-    void testFailWhenMoreThan3Arguments() {
-        ValueEval[] ve = new ValueEval[4];
-        assertEquals(VALUE_INVALID, WorkdayFunction.instance.evaluate(ve, 
null));
+    void testFailWhenMoreThan4Arguments() {
+        ValueEval[] ve = new ValueEval[5];
+        assertEquals(VALUE_INVALID, WorkdayIntlFunction.instance.evaluate(ve, 
null));
     }
 
     @Test
     void testFailWhenArgumentsAreNotDatesNorNumbers() {
         ValueEval[] ve = {new StringEval("Potato"), new 
StringEval("Cucumber")};
-        assertEquals(VALUE_INVALID, WorkdayFunction.instance.evaluate(ve, EC));
+        assertEquals(VALUE_INVALID, WorkdayIntlFunction.instance.evaluate(ve, 
EC));
     }
 
     @Test
@@ -77,7 +79,7 @@ class TestWorkdayFunction {
         Calendar expCal = LocaleUtil.getLocaleCalendar(2009, 3, 30);
         Date expDate = expCal.getTime();
         ValueEval[] ve = {new StringEval(STARTING_DATE), new NumberEval(151)};
-        Date actDate = DateUtil.getJavaDate(((NumberEval) 
WorkdayFunction.instance.evaluate(ve, EC)).getNumberValue());
+        Date actDate = DateUtil.getJavaDate(((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue());
         assertEquals(expDate, actDate);
     }
 
@@ -87,7 +89,7 @@ class TestWorkdayFunction {
         Date expDate = expCal.getTime();
 
         ValueEval[] ve = {new StringEval("2013/09/30"), new NumberEval(-1)};
-        double numberValue = ((NumberEval) 
WorkdayFunction.instance.evaluate(ve, EC)).getNumberValue();
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
         assertEquals(41544.0, numberValue, 0);
 
         Date actDate = DateUtil.getJavaDate(numberValue);
@@ -100,7 +102,7 @@ class TestWorkdayFunction {
         Date expDate = expCal.getTime();
 
         ValueEval[] ve = {new StringEval("2013/09/27"), new NumberEval(1)};
-        double numberValue = ((NumberEval) 
WorkdayFunction.instance.evaluate(ve, EC)).getNumberValue();
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
         assertEquals(41547.0, numberValue, 0);
 
         Date actDate = DateUtil.getJavaDate(numberValue);
@@ -113,7 +115,7 @@ class TestWorkdayFunction {
         Date expDate = expCal.getTime();
 
         ValueEval[] ve = {new StringEval("2013/10/06"), new NumberEval(1)};
-        double numberValue = ((NumberEval) 
WorkdayFunction.instance.evaluate(ve, EC)).getNumberValue();
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
         assertEquals(41554.0, numberValue, 0);
 
         Date actDate = DateUtil.getJavaDate(numberValue);
@@ -126,7 +128,7 @@ class TestWorkdayFunction {
         Date expDate = expCal.getTime();
 
         ValueEval[] ve = {new StringEval("2013/10/06"), new NumberEval(-1)};
-        double numberValue = ((NumberEval) 
WorkdayFunction.instance.evaluate(ve, EC)).getNumberValue();
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
         assertEquals(41551.0, numberValue, 0);
 
         Date actDate = DateUtil.getJavaDate(numberValue);
@@ -139,7 +141,7 @@ class TestWorkdayFunction {
         Date expDate = expCal.getTime();
 
         ValueEval[] ve = {new StringEval(STARTING_DATE), new 
NumberEval(151.99999)};
-        double numberValue = ((NumberEval) 
WorkdayFunction.instance.evaluate(ve, EC)).getNumberValue();
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
 
         Date actDate = DateUtil.getJavaDate(numberValue);
         assertEquals(expDate, actDate);
@@ -150,8 +152,9 @@ class TestWorkdayFunction {
         Calendar expCal = LocaleUtil.getLocaleCalendar(2008, 8, 23);
         Date expDate = expCal.getTime();
 
-        ValueEval[] ve = {new StringEval(STARTING_DATE), new NumberEval(-5), 
new StringEval(RETROATIVE_HOLIDAY)};
-        double numberValue = ((NumberEval) 
WorkdayFunction.instance.evaluate(ve, EC)).getNumberValue();
+        ValueEval[] ve = {new StringEval(STARTING_DATE), new NumberEval(-5),
+                BlankEval.instance, new StringEval(RETROATIVE_HOLIDAY)};
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
 
         Date actDate = DateUtil.getJavaDate(numberValue);
         assertEquals(expDate, actDate);
@@ -163,14 +166,43 @@ class TestWorkdayFunction {
         Date expDate = expCal.getTime();
 
         ValueEval[] ve = {
-                new StringEval(STARTING_DATE), new NumberEval(151),
+                new StringEval(STARTING_DATE), new NumberEval(151), 
BlankEval.instance,
                 new MockAreaEval(FIRST_HOLIDAY, SECOND_HOLIDAY, 
THIRD_HOLIDAY)};
-        double numberValue = ((NumberEval) 
WorkdayFunction.instance.evaluate(ve, EC)).getNumberValue();
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
 
         Date actDate = DateUtil.getJavaDate(numberValue);
         assertEquals(expDate, actDate);
     }
 
+    @Test
+    void testMicrosoftExample1() {
+        final String testDate = "2012-01-01";
+        ValueEval[] ve = {
+                new StringEval(testDate), new NumberEval(30), new NumberEval(0)
+        };
+        assertEquals(ErrorEval.NUM_ERROR, 
WorkdayIntlFunction.instance.evaluate(ve, EC));
+    }
+
+    @Test
+    void testMicrosoftExample2() {
+        final String testDate = "2012-01-01";
+        ValueEval[] ve = {
+                new StringEval(testDate), new NumberEval(90), new 
NumberEval(11)
+        };
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
+        assertEquals(41013.0, numberValue);
+    }
+
+    @Test
+    void testMicrosoftExample3() {
+        final String testDate = "2012-01-01";
+        ValueEval[] ve = {
+                new StringEval(testDate), new NumberEval(30), new 
NumberEval(17)
+        };
+        double numberValue = ((NumberEval) 
WorkdayIntlFunction.instance.evaluate(ve, EC)).getNumberValue();
+        assertEquals(40944.0, numberValue);
+    }
+
     private class MockAreaEval extends AreaEvalBase {
 
         private List<ValueEval> holidays;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to