|
From: <be...@us...> - 2006-09-10 15:49:54
|
Revision: 150
http://svn.sourceforge.net/objectlabkit/?rev=150&view=rev
Author: benoitx
Date: 2006-09-10 08:49:08 -0700 (Sun, 10 Sep 2006)
Log Message:
-----------
Added more tests for the Tenor code.
Plus implementation for JODA.
There is NO implementation for JDK and yes, you need to do it, thanks! :-)
More tests to follow for backward and modified preceeding.
Modified Paths:
--------------
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/StandardTenor.java
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculatorTest.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarDateCalculator.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateDateCalculator.java
trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDatePeriodCountCalculator.java
trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -67,8 +67,6 @@
return startDate;
}
- protected abstract E getToday();
-
/** Set both start date and current date */
public void setStartDate(final E startDate) {
this.startDate = startDate;
@@ -111,11 +109,21 @@
throw new IllegalArgumentException("Tenor cannot be null");
}
- final TenorCode tenorCode = tenor.getCode();
+ TenorCode tenorCode = tenor.getCode();
if (tenorCode != TenorCode.OVERNIGHT) {
// get to the Spot date first:
moveByDays(daysToSpot);
}
+ int unit = tenor.getUnits();
+ if (tenorCode==TenorCode.WEEK) {
+ tenorCode = TenorCode.DAY;
+ unit *= DAYS_IN_WEEK;
+ }
+
+ if (tenorCode==TenorCode.YEAR) {
+ tenorCode = TenorCode.MONTH;
+ unit *= 12;
+ }
// move by tenor
switch (tenorCode) {
@@ -124,15 +132,17 @@
case SPOT:
return this;
case DAY:
- return moveByDays(tenor.getUnits());
- case WEEK:
- return moveByDays(tenor.getUnits() * DAYS_IN_WEEK);
+ return moveByDays(unit);
+ case MONTH:
+ return moveByMonths(unit);
default:
throw new UnsupportedOperationException("Sorry not yet...");
}
}
+ protected abstract DateCalculator<E> moveByMonths(int months);
+
public void setHolidayHandler(final HolidayHandler<E> holidayHandler) {
this.holidayHandler = holidayHandler;
}
@@ -228,6 +238,8 @@
return cal;
}
+ protected abstract E getToday();
+
protected abstract DateCalculator<E> createNewCalculator(String calcName, E theStartDate, Set<E> holidays,
HolidayHandler<E> handler);
}
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/StandardTenor.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/StandardTenor.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/StandardTenor.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -39,13 +39,13 @@
public static final Tenor T_1M = new Tenor(1, TenorCode.MONTH);
- public static final Tenor T_2M = new Tenor(1, TenorCode.MONTH);
+ public static final Tenor T_2M = new Tenor(2, TenorCode.MONTH);
- public static final Tenor T_3M = new Tenor(1, TenorCode.MONTH);
+ public static final Tenor T_3M = new Tenor(3, TenorCode.MONTH);
- public static final Tenor T_6M = new Tenor(1, TenorCode.MONTH);
+ public static final Tenor T_6M = new Tenor(6, TenorCode.MONTH);
- public static final Tenor T_9M = new Tenor(1, TenorCode.MONTH);
+ public static final Tenor T_9M = new Tenor(9, TenorCode.MONTH);
public static final Tenor T_1Y = new Tenor(1, TenorCode.YEAR);
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractBackwardDateCalculatorTest.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -209,6 +209,7 @@
checkMoveByTenor("2006-08-08", new Tenor(11, TenorCode.DAY), 0, "2006-08-18", HolidayHandlerType.BACKWARD);
checkMoveByTenor("2006-08-08", new Tenor(12, TenorCode.DAY), 0, "2006-08-18", HolidayHandlerType.BACKWARD);
checkMoveByTenor("2006-08-08", new Tenor(13, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-09-26", new Tenor(4, TenorCode.DAY), 0, "2006-09-29", HolidayHandlerType.BACKWARD);
}
public void testMoveByTenorWeek() {
@@ -216,4 +217,35 @@
checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.WEEK), 0, "2006-08-22", HolidayHandlerType.BACKWARD);
checkMoveByTenor("2006-08-08", new Tenor(4, TenorCode.WEEK), 0, "2006-09-05", HolidayHandlerType.BACKWARD);
}
+
+ public void testMoveByTenorMonth() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1M, 0, "2006-09-29", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2M, 0, "2006-10-31", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-01-31", StandardTenor.T_1M, 0, "2006-02-28", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2008-01-31", StandardTenor.T_1M, 0, "2008-02-29", HolidayHandlerType.BACKWARD);
+
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1M, 0, "2006-09-08", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-09", StandardTenor.T_1M, 0, "2006-09-08", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.MONTH), 0, "2006-10-06", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-08", new Tenor(5, TenorCode.MONTH), 0, "2007-01-08", HolidayHandlerType.BACKWARD);
+ }
+
+ public void testMoveByTenorYear() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1Y, 0, "2007-08-31", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2Y, 0, "2008-08-29", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_1Y, 0, "2009-02-27", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_4Y, 0, "2012-02-29", HolidayHandlerType.BACKWARD);
+ }
+
+ public void testMoveByTenorSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.SPOT, 0, "2006-08-31", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-28", StandardTenor.SPOT, 0, "2006-08-25", HolidayHandlerType.BACKWARD);
+ }
+
+ public void testMoveByTenorOvernight() {
+ checkMoveByTenor("2006-08-24", StandardTenor.OVERNIGHT, 0, "2006-08-25", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-25", StandardTenor.OVERNIGHT, 0, "2006-08-25", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-31", StandardTenor.OVERNIGHT, 0, "2006-09-01", HolidayHandlerType.BACKWARD);
+ checkMoveByTenor("2006-08-28", StandardTenor.OVERNIGHT, 0, "2006-08-25", HolidayHandlerType.BACKWARD);
+ }
}
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractForwardDateCalculatorTest.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -199,11 +199,137 @@
checkMoveByTenor("2006-08-08", new Tenor(11, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.FORWARD);
checkMoveByTenor("2006-08-08", new Tenor(12, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.FORWARD);
checkMoveByTenor("2006-08-08", new Tenor(13, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-09-26", new Tenor(4, TenorCode.DAY), 0, "2006-10-02", HolidayHandlerType.FORWARD);
}
+ public void testMoveByTenorDaysOneDayToSpot() {
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1D, 1, "2006-08-10", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.DAY), 1, "2006-08-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-07", new Tenor(10, TenorCode.DAY), 1, "2006-08-18", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-07", new Tenor(11, TenorCode.DAY), 1, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-07", new Tenor(12, TenorCode.DAY), 1, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-07", new Tenor(13, TenorCode.DAY), 1, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorDaysTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1D, 2, "2006-08-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.DAY), 2, "2006-08-14", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-07", new Tenor(10, TenorCode.DAY), 2, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-07", new Tenor(11, TenorCode.DAY), 2, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-07", new Tenor(12, TenorCode.DAY), 2, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-07", new Tenor(13, TenorCode.DAY), 2, "2006-08-22", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
public void testMoveByTenorWeek() {
checkMoveByTenor("2006-08-08", StandardTenor.T_1W, 0, "2006-08-15", HolidayHandlerType.FORWARD);
checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.WEEK), 0, "2006-08-22", HolidayHandlerType.FORWARD);
checkMoveByTenor("2006-08-08", new Tenor(4, TenorCode.WEEK), 0, "2006-09-05", HolidayHandlerType.FORWARD);
}
+
+ public void testMoveByTenorWeekOneDayToSpot() {
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1W, 1, "2006-08-16", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.WEEK), 1, "2006-08-23", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(4, TenorCode.WEEK), 1, "2006-09-06", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorWeekTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1W, 2, "2006-08-17", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.WEEK), 2, "2006-08-24", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(4, TenorCode.WEEK), 2, "2006-09-07", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorMonth() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1M, 0, "2006-10-02", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2M, 0, "2006-10-31", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-01-31", StandardTenor.T_1M, 0, "2006-02-28", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2008-01-31", StandardTenor.T_1M, 0, "2008-02-29", HolidayHandlerType.FORWARD);
+
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1M, 0, "2006-09-08", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-09", StandardTenor.T_1M, 0, "2006-09-11", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.MONTH), 0, "2006-10-09", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-08", new Tenor(5, TenorCode.MONTH), 0, "2007-01-08", HolidayHandlerType.FORWARD);
+ }
+
+ public void testMoveByTenorMonthOneDayToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1M, 1, "2006-10-02", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2M, 1, "2006-11-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-01-31", StandardTenor.T_1M, 1, "2006-03-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-01-31", StandardTenor.T_1M, 1, "2008-03-03", HolidayHandlerType.MODIFIED_FOLLLOWING);
+
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1M, 1, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-09", StandardTenor.T_1M, 1, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.MONTH), 1, "2006-10-09", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(5, TenorCode.MONTH), 1, "2007-01-09", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorMonthTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1M, 2, "2006-10-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2M, 2, "2006-11-06", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-01-31", StandardTenor.T_1M, 2, "2006-03-02", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-01-31", StandardTenor.T_1M, 2, "2008-03-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1M, 2, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-09", StandardTenor.T_1M, 2, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.MONTH), 2, "2006-10-10", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(5, TenorCode.MONTH), 2, "2007-01-10", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorYear() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1Y, 0, "2007-08-31", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2Y, 0, "2008-09-01", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_1Y, 0, "2009-03-02", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_4Y, 0, "2012-02-29", HolidayHandlerType.FORWARD);
+ }
+
+
+ public void testMoveByTenorYearOneDayToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1Y, 1, "2007-09-03", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2Y, 1, "2008-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_1Y, 1, "2009-03-03", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_4Y, 1, "2012-03-05", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorYearTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1Y, 2, "2007-09-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2Y, 2, "2008-09-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_1Y, 2, "2009-03-03", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_4Y, 2, "2012-03-05", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.SPOT, 0, "2006-08-31", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-28", StandardTenor.SPOT, 0, "2006-08-29", HolidayHandlerType.FORWARD);
+ }
+
+ public void testMoveByTenorSpotOneDayToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.SPOT, 1, "2006-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.SPOT, 1, "2006-08-30", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorSpotTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.SPOT, 2, "2006-09-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.SPOT, 2, "2006-08-31", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorOvernight() {
+ checkMoveByTenor("2006-08-24", StandardTenor.OVERNIGHT, 0, "2006-08-25", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-25", StandardTenor.OVERNIGHT, 0, "2006-08-29", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-31", StandardTenor.OVERNIGHT, 0, "2006-09-01", HolidayHandlerType.FORWARD);
+ checkMoveByTenor("2006-08-28", StandardTenor.OVERNIGHT, 0, "2006-08-30", HolidayHandlerType.FORWARD);
+ }
+
+ public void testMoveByTenorOvernightOneDayToSpot() {
+ checkMoveByTenor("2006-08-24", StandardTenor.OVERNIGHT, 1, "2006-08-25", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-25", StandardTenor.OVERNIGHT, 1, "2006-08-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.OVERNIGHT, 1, "2006-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.OVERNIGHT, 1, "2006-08-30", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorOvernightTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-24", StandardTenor.OVERNIGHT, 2, "2006-08-25", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-25", StandardTenor.OVERNIGHT, 2, "2006-08-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.OVERNIGHT, 2, "2006-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.OVERNIGHT, 2, "2006-08-30", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
}
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedFollowingDateCalculatorTest.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -193,6 +193,27 @@
}
+ public void testAddAcrossMonth() {
+ final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.MODIFIED_FOLLLOWING);
+
+ cal.setStartDate(newDate("2006-07-28"));
+ cal.moveByDays(1);
+ checkDate("31/7", cal, "2006-07-31");
+
+ cal.moveByDays(1);
+ checkDate("do move to next month", cal, "2006-08-01");
+
+ // now if it due to roll over:
+ cal.setStartDate(newDate("2006-07-28"));
+ final Set<E> holidays = newHolidaysSet();
+ holidays.clear();
+ holidays.add(newDate("2006-07-31"));
+ cal.setNonWorkingDays(holidays);
+ cal.moveByDays(1);
+
+ checkDate("do NOT move to next month", cal, "2006-07-28");
+ }
+
public void testMoveByTenorDays() {
checkMoveByTenor("2006-08-08", StandardTenor.T_1D, 0, "2006-08-09", HolidayHandlerType.MODIFIED_FOLLLOWING);
checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.DAY), 0, "2006-08-10", HolidayHandlerType.MODIFIED_FOLLLOWING);
@@ -200,6 +221,7 @@
checkMoveByTenor("2006-08-08", new Tenor(11, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
checkMoveByTenor("2006-08-08", new Tenor(12, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
checkMoveByTenor("2006-08-08", new Tenor(13, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-09-26", new Tenor(4, TenorCode.DAY), 0, "2006-09-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
}
public void testMoveByTenorDaysOneDayToSpot() {
@@ -238,24 +260,96 @@
checkMoveByTenor("2006-08-08", new Tenor(4, TenorCode.WEEK), 2, "2006-09-07", HolidayHandlerType.MODIFIED_FOLLLOWING);
}
- public void testAddAcrossMonth() {
- final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ public void testMoveByTenorMonth() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1M, 0, "2006-09-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2M, 0, "2006-10-31", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-01-31", StandardTenor.T_1M, 0, "2006-02-28", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-01-31", StandardTenor.T_1M, 0, "2008-02-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1M, 0, "2006-09-08", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-09", StandardTenor.T_1M, 0, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.MONTH), 0, "2006-10-09", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(5, TenorCode.MONTH), 0, "2007-01-08", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
- cal.setStartDate(newDate("2006-07-28"));
- cal.moveByDays(1);
- checkDate("31/7", cal, "2006-07-31");
+ public void testMoveByTenorMonthOneDayToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1M, 1, "2006-10-02", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2M, 1, "2006-11-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-01-31", StandardTenor.T_1M, 1, "2006-03-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-01-31", StandardTenor.T_1M, 1, "2008-03-03", HolidayHandlerType.MODIFIED_FOLLLOWING);
+
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1M, 1, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-09", StandardTenor.T_1M, 1, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.MONTH), 1, "2006-10-09", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(5, TenorCode.MONTH), 1, "2007-01-09", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
- cal.moveByDays(1);
- checkDate("do move to next month", cal, "2006-08-01");
+ public void testMoveByTenorMonthTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1M, 2, "2006-10-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2M, 2, "2006-11-06", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-01-31", StandardTenor.T_1M, 2, "2006-03-02", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-01-31", StandardTenor.T_1M, 2, "2008-03-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1M, 2, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-09", StandardTenor.T_1M, 2, "2006-09-11", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.MONTH), 2, "2006-10-10", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-08", new Tenor(5, TenorCode.MONTH), 2, "2007-01-10", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
- // now if it due to roll over:
- cal.setStartDate(newDate("2006-07-28"));
- final Set<E> holidays = newHolidaysSet();
- holidays.clear();
- holidays.add(newDate("2006-07-31"));
- cal.setNonWorkingDays(holidays);
- cal.moveByDays(1);
+ public void testMoveByTenorYear() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1Y, 0, "2007-08-31", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2Y, 0, "2008-08-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_1Y, 0, "2009-02-27", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_4Y, 0, "2012-02-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
- checkDate("do NOT move to next month", cal, "2006-07-28");
+ public void testMoveByTenorYearOneDayToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1Y, 1, "2007-09-03", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2Y, 1, "2008-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_1Y, 1, "2009-03-03", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_4Y, 1, "2012-03-05", HolidayHandlerType.MODIFIED_FOLLLOWING);
}
+
+ public void testMoveByTenorYearTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1Y, 2, "2007-09-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2Y, 2, "2008-09-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_1Y, 2, "2009-03-03", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_4Y, 2, "2012-03-05", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.SPOT, 0, "2006-08-31", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.SPOT, 0, "2006-08-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorSpotOneDayToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.SPOT, 1, "2006-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.SPOT, 1, "2006-08-30", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorSpotTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.SPOT, 2, "2006-09-04", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.SPOT, 2, "2006-08-31", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorOvernight() {
+ checkMoveByTenor("2006-08-24", StandardTenor.OVERNIGHT, 0, "2006-08-25", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-25", StandardTenor.OVERNIGHT, 0, "2006-08-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.OVERNIGHT, 0, "2006-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.OVERNIGHT, 0, "2006-08-30", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorOvernightOneDayToSpot() {
+ checkMoveByTenor("2006-08-24", StandardTenor.OVERNIGHT, 1, "2006-08-25", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-25", StandardTenor.OVERNIGHT, 1, "2006-08-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.OVERNIGHT, 1, "2006-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.OVERNIGHT, 1, "2006-08-30", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
+
+ public void testMoveByTenorOvernightTwoDaysToSpot() {
+ checkMoveByTenor("2006-08-24", StandardTenor.OVERNIGHT, 2, "2006-08-25", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-25", StandardTenor.OVERNIGHT, 2, "2006-08-29", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-31", StandardTenor.OVERNIGHT, 2, "2006-09-01", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ checkMoveByTenor("2006-08-28", StandardTenor.OVERNIGHT, 2, "2006-08-30", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ }
}
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractModifiedPreceedingDateCalculatorTest.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -205,21 +205,7 @@
}
- public void testMoveByTenorDays() {
- checkMoveByTenor("2006-08-08", StandardTenor.T_1D, 0, "2006-08-09", HolidayHandlerType.MODIFIED_PRECEEDING);
- checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.DAY), 0, "2006-08-10", HolidayHandlerType.MODIFIED_PRECEEDING);
- checkMoveByTenor("2006-08-08", new Tenor(10, TenorCode.DAY), 0, "2006-08-18", HolidayHandlerType.MODIFIED_PRECEEDING);
- checkMoveByTenor("2006-08-08", new Tenor(11, TenorCode.DAY), 0, "2006-08-18", HolidayHandlerType.MODIFIED_PRECEEDING);
- checkMoveByTenor("2006-08-08", new Tenor(12, TenorCode.DAY), 0, "2006-08-18", HolidayHandlerType.MODIFIED_PRECEEDING);
- checkMoveByTenor("2006-08-08", new Tenor(13, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.MODIFIED_PRECEEDING);
- }
- public void testMoveByTenorWeek() {
- checkMoveByTenor("2006-08-08", StandardTenor.T_1W, 0, "2006-08-15", HolidayHandlerType.MODIFIED_PRECEEDING);
- checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.WEEK), 0, "2006-08-22", HolidayHandlerType.MODIFIED_PRECEEDING);
- checkMoveByTenor("2006-08-08", new Tenor(4, TenorCode.WEEK), 0, "2006-09-05", HolidayHandlerType.MODIFIED_PRECEEDING);
- }
-
public void testAddAcrossMonth() {
final DateCalculator<E> cal = newDateCalculator("bla", HolidayHandlerType.MODIFIED_PRECEEDING);
@@ -241,4 +227,51 @@
checkDate("do NOT move to next month", cal, "2006-08-02");
}
+ public void testMoveByTenorDays() {
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1D, 0, "2006-08-09", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.DAY), 0, "2006-08-10", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(10, TenorCode.DAY), 0, "2006-08-18", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(11, TenorCode.DAY), 0, "2006-08-18", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(12, TenorCode.DAY), 0, "2006-08-18", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(13, TenorCode.DAY), 0, "2006-08-21", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-09-26", new Tenor(4, TenorCode.DAY), 0, "2006-09-29", HolidayHandlerType.MODIFIED_PRECEEDING);
+ }
+
+ public void testMoveByTenorWeek() {
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1W, 0, "2006-08-15", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.WEEK), 0, "2006-08-22", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(4, TenorCode.WEEK), 0, "2006-09-05", HolidayHandlerType.MODIFIED_PRECEEDING);
+ }
+
+
+ public void testMoveByTenorMonth() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1M, 0, "2006-09-29", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2M, 0, "2006-10-31", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-01-31", StandardTenor.T_1M, 0, "2006-02-28", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2008-01-31", StandardTenor.T_1M, 0, "2008-02-29", HolidayHandlerType.MODIFIED_PRECEEDING);
+
+ checkMoveByTenor("2006-08-08", StandardTenor.T_1M, 0, "2006-09-08", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-09", StandardTenor.T_1M, 0, "2006-09-08", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(2, TenorCode.MONTH), 0, "2006-10-06", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-08", new Tenor(5, TenorCode.MONTH), 0, "2007-01-08", HolidayHandlerType.MODIFIED_PRECEEDING);
+ }
+
+ public void testMoveByTenorYear() {
+ checkMoveByTenor("2006-08-31", StandardTenor.T_1Y, 0, "2007-08-31", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-31", StandardTenor.T_2Y, 0, "2008-08-29", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_1Y, 0, "2009-02-27", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2008-02-29", StandardTenor.T_4Y, 0, "2012-02-29", HolidayHandlerType.MODIFIED_PRECEEDING);
+ }
+
+ public void testMoveByTenorSpot() {
+ checkMoveByTenor("2006-08-31", StandardTenor.SPOT, 0, "2006-08-31", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-28", StandardTenor.SPOT, 0, "2006-08-25", HolidayHandlerType.MODIFIED_PRECEEDING);
+ }
+
+ public void testMoveByTenorOvernight() {
+ checkMoveByTenor("2006-08-24", StandardTenor.OVERNIGHT, 0, "2006-08-25", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-25", StandardTenor.OVERNIGHT, 0, "2006-08-25", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-31", StandardTenor.OVERNIGHT, 0, "2006-09-01", HolidayHandlerType.MODIFIED_PRECEEDING);
+ checkMoveByTenor("2006-08-28", StandardTenor.OVERNIGHT, 0, "2006-08-25", HolidayHandlerType.MODIFIED_PRECEEDING);
+ }
}
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculatorTest.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculatorTest.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -422,7 +422,7 @@
}
}
- private void runtests(String[][] tests) {
+ private void runtests(final String[][] tests) {
for (final String[] test : tests) {
runtest(cal, test);
}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarDateCalculator.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarDateCalculator.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -78,6 +78,26 @@
}
@Override
+ public DateCalculator<Calendar> moveByMonths(final int months) {
+ // LocalDate date = getCurrentBusinessDate();
+ // int day = date.getDayOfMonth();
+ // date = date.withDayOfMonth(1).plusMonths(months);
+ //
+ // int lastDayOfMonth = date.dayOfMonth().getMaximumValue();
+ // if (day>lastDayOfMonth) {
+ // day = lastDayOfMonth;
+ // }
+
+ // setCurrentBusinessDate(date.withDayOfMonth(day));
+
+ if (getHolidayHandler() != null) {
+ setCurrentBusinessDate(getHolidayHandler().moveCurrentDate(this));
+ }
+
+ return this;
+ }
+
+ @Override
protected DateCalculator<Calendar> createNewCalculator(final String name, final Calendar startDate,
final Set<Calendar> holidays, final HolidayHandler<Calendar> handler) {
return new CalendarDateCalculator(name, startDate, holidays, handler);
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateDateCalculator.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DateDateCalculator.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -101,4 +101,11 @@
protected Date getToday() {
return Utils.blastTime(Calendar.getInstance()).getTime();
}
+
+ @Override
+ protected DateCalculator<Date> moveByMonths(final int months) {
+ delegate.setCurrentBusinessDate(Utils.getCal(getCurrentBusinessDate()));
+ setCurrentBusinessDate(delegate.moveByMonths(months).getCurrentBusinessDate().getTime());
+ return this;
+ }
}
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -78,6 +78,27 @@
}
@Override
+ public DateCalculator<LocalDate> moveByMonths(final int months) {
+ // LocalDate date = getCurrentBusinessDate();
+ // int day = date.getDayOfMonth();
+ // date = date.withDayOfMonth(1).plusMonths(months);
+ //
+ // int lastDayOfMonth = date.dayOfMonth().getMaximumValue();
+ // if (day>lastDayOfMonth) {
+ // day = lastDayOfMonth;
+ // }
+
+ // setCurrentBusinessDate(date.withDayOfMonth(day));
+ setCurrentBusinessDate(getCurrentBusinessDate().plusMonths(months));
+
+ if (getHolidayHandler() != null) {
+ setCurrentBusinessDate(getHolidayHandler().moveCurrentDate(this));
+ }
+
+ return this;
+ }
+
+ @Override
protected DateCalculator<LocalDate> createNewCalculator(final String name, final LocalDate startDate,
final Set<LocalDate> holidays, final HolidayHandler<LocalDate> handler) {
return new LocalDateCalculator(name, startDate, holidays, handler);
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDatePeriodCountCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDatePeriodCountCalculator.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDatePeriodCountCalculator.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -90,8 +90,8 @@
final int diff1 = new Period(start, endOfStartYear, PeriodType.days()).getDays();
final int diff2 = new Period(startOfEndYear, end, PeriodType.days()).getDays();
- diff = ((double) (diff1 + 1.0)) / (double) start.dayOfYear().getMaximumValue()
- + ((double) (endYear - startYear - 1.0)) + ((double) (diff2)) / (double) end.dayOfYear().getMaximumValue();
+ diff = ((diff1 + 1.0)) / start.dayOfYear().getMaximumValue()
+ + ((endYear - startYear - 1.0)) + ((double) (diff2)) / (double) end.dayOfYear().getMaximumValue();
}
} else if (basis == PeriodCountBasis.CONV_30_360 || basis == PeriodCountBasis.CONV_360E_ISDA
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -99,4 +99,11 @@
protected YearMonthDay getToday() {
return new YearMonthDay();
}
+
+ @Override
+ protected DateCalculator<YearMonthDay> moveByMonths(final int months) {
+ delegate.setCurrentBusinessDate(getCurrentBusinessDate().toLocalDate());
+ setCurrentBusinessDate(new YearMonthDay(delegate.moveByMonths(months).getCurrentBusinessDate()));
+ return this;
+ }
}
Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java 2006-09-10 15:38:09 UTC (rev 149)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateTimeExcelDateUtilTest.java 2006-09-10 15:49:08 UTC (rev 150)
@@ -3,6 +3,7 @@
import net.objectlab.kit.datecalc.common.AbstractExcelDateUtilTest;
import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
public class DateTimeExcelDateUtilTest extends AbstractExcelDateUtilTest<DateTime> {
@@ -15,4 +16,10 @@
protected DateTime createDateFromExcel(final double excelDate, final boolean use1904Windowing) {
return JodaExcelDateUtil.getDateTime(excelDate, use1904Windowing);
}
+
+ public void testPlusMonths() {
+ final LocalDate d = new LocalDate("2008-01-31");
+ final LocalDate d2 = d.plusMonths(1);
+ System.out.println("======================> " + d2);
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|