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]