|
From: <be...@us...> - 2006-09-05 10:01:38
|
Revision: 107
http://svn.sourceforge.net/objectlabkit/?rev=107&view=rev
Author: benoitx
Date: 2006-09-05 03:01:21 -0700 (Tue, 05 Sep 2006)
Log Message:
-----------
New IMMPeriod annually. JDK test is broken.
Modified Paths:
--------------
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java 2006-09-05 09:31:32 UTC (rev 106)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/IMMPeriod.java 2006-09-05 10:01:21 UTC (rev 107)
@@ -26,10 +26,12 @@
* @version $Revision$ $Date$
*/
public enum IMMPeriod {
- /** Bi annually March and September */
+ /** Bi-annually March and September */
BI_ANNUALY_MAR_SEP,
- /** Bi annually June and December */
+ /** Bi-annually June and December */
BI_ANNUALY_JUN_DEC,
- /** Quarterly: eg March, June, September, December */
- QUARTERLY
+ /** Conventional period: Quarterly: eg March, June, September, December */
+ QUARTERLY,
+ /** Annually, jump from 1y to the next */
+ ANNUALLY
}
Modified: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java 2006-09-05 09:31:32 UTC (rev 106)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractIMMDateTest.java 2006-09-05 10:01:21 UTC (rev 107)
@@ -8,126 +8,158 @@
public abstract class AbstractIMMDateTest<E> extends TestCase {
private DateCalculator<E> cal;
-
+
public void setUp() {
cal = getDateCalculator("bla");
}
-
+
protected abstract DateCalculator<E> getDateCalculator(String name);
-
+
protected abstract E parseDate(String string);
private void checkImm(final DateCalculator<E> cal, final E date, final boolean expected) {
assertEquals("check " + date, expected, cal.isIMMDate(date));
}
-
+
public void testSanityCheck() {
Assert.assertEquals("Name", "bla", cal.getName());
Assert.assertEquals("Holidays size", 0, cal.getNonWorkingDays().size());
}
-
+
public void testNextIMM() {
final E startDate = parseDate("2006-08-01");
cal.setStartDate(startDate);
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-
+
cal.setStartDate(parseDate("2006-01-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-02-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-03-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
-
+
cal.setStartDate(parseDate("2006-04-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-05-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-06-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
-
+
cal.setStartDate(parseDate("2006-07-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-08-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-09-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-
+
cal.setStartDate(parseDate("2006-10-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-11-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-12-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
-
+
cal.setStartDate(parseDate("2006-03-14"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-03-15"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-03-16"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
-
+
cal.setStartDate(parseDate("2006-06-20"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-06-21"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-06-22"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-
+
cal.setStartDate(parseDate("2006-09-19"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-09-20"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-09-21"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
-
+
cal.setStartDate(parseDate("2006-12-19"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-12-20"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-12-20"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2007-03-21"), cal.getNextIMMDate());
cal.setStartDate(parseDate("2006-12-21"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2007-03-21"), cal.getNextIMMDate());
+
+ cal.setStartDate(parseDate("2006-03-15"));
+ Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate());
}
-
public void testNextIMMWithPeriod() {
final E startDate = parseDate("2006-08-01");
cal.setStartDate(startDate);
-
+
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getNextIMMDate());
-
+
+ IMMPeriod period = IMMPeriod.QUARTERLY;
+
cal.setStartDate(parseDate("2006-01-09"));
- Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getNextIMMDate(IMMPeriod.QUARTERLY));
- Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal
- .getNextIMMDate(IMMPeriod.BI_ANNUALY_JUN_DEC));
- Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal
- .getNextIMMDate(IMMPeriod.BI_ANNUALY_MAR_SEP));
-
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-03-15"), cal
+ .getNextIMMDate(period));
+ period = IMMPeriod.BI_ANNUALY_JUN_DEC;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+ .getNextIMMDate(period));
+ period = IMMPeriod.BI_ANNUALY_MAR_SEP;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-03-15"), cal
+ .getNextIMMDate(period));
+ period = IMMPeriod.ANNUALLY;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2007-03-21"), cal
+ .getNextIMMDate(period));
+
cal.setStartDate(parseDate("2006-03-20"));
- Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getNextIMMDate(IMMPeriod.QUARTERLY));
- Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal
- .getNextIMMDate(IMMPeriod.BI_ANNUALY_JUN_DEC));
- Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal
- .getNextIMMDate(IMMPeriod.BI_ANNUALY_MAR_SEP));
+ period = IMMPeriod.QUARTERLY;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+ .getNextIMMDate(period));
+ period = IMMPeriod.BI_ANNUALY_JUN_DEC;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+ .getNextIMMDate(period));
+ period = IMMPeriod.BI_ANNUALY_MAR_SEP;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-09-20"), cal
+ .getNextIMMDate(period));
+ period = IMMPeriod.ANNUALLY;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2007-06-20"), cal
+ .getNextIMMDate(period));
+
+ cal.setStartDate(parseDate("2006-03-15"));
+ period = IMMPeriod.QUARTERLY;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+ .getNextIMMDate(period));
+ period = IMMPeriod.BI_ANNUALY_JUN_DEC;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-06-21"), cal
+ .getNextIMMDate(period));
+ period = IMMPeriod.BI_ANNUALY_MAR_SEP;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2006-09-20"), cal
+ .getNextIMMDate(period));
+ cal.setStartDate(parseDate("2006-03-15"));
+ period = IMMPeriod.ANNUALLY;
+ Assert.assertEquals("From " + cal.getStartDate() + " period:" + period, parseDate("2007-06-20"), cal
+ .getNextIMMDate(period));
}
public void testIfIMMDate() {
final E startDate = parseDate("2006-08-01");
cal.setStartDate(startDate);
-
+
checkImm(cal, parseDate("2006-08-01"), false);
-
+
checkImm(cal, parseDate("2006-03-14"), false);
checkImm(cal, parseDate("2006-03-15"), true);
checkImm(cal, parseDate("2006-03-16"), false);
-
+
checkImm(cal, parseDate("2006-06-20"), false);
checkImm(cal, parseDate("2006-06-21"), true);
checkImm(cal, parseDate("2006-06-22"), false);
-
+
checkImm(cal, parseDate("2006-09-19"), false);
checkImm(cal, parseDate("2006-09-20"), true);
checkImm(cal, parseDate("2006-09-21"), false);
-
+
checkImm(cal, parseDate("2006-12-19"), false);
checkImm(cal, parseDate("2006-12-20"), true);
checkImm(cal, parseDate("2006-12-21"), false);
@@ -136,7 +168,7 @@
public void testMoveByIMMTenor() {
final E startDate = parseDate("2006-04-01");
cal.setStartDate(startDate);
-
+
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.moveByTenor(StandardTenor.IMM)
.getCurrentBusinessDate());
}
@@ -144,7 +176,7 @@
public void testMoveByNullTenor() {
final E startDate = parseDate("2006-04-01");
cal.setStartDate(startDate);
-
+
try {
cal.moveByTenor(null);
Assert.fail("Should have thrown IllegalArgumentException");
@@ -156,60 +188,60 @@
public void testPreviousIMM() {
final E startDate = parseDate("2006-08-01");
cal.setStartDate(startDate);
-
+
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
-
+
cal.setStartDate(parseDate("2006-01-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-02-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-03-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
-
+
cal.setStartDate(parseDate("2006-04-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-05-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-06-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
-
+
cal.setStartDate(parseDate("2006-07-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-08-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-09-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
-
+
cal.setStartDate(parseDate("2006-10-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-11-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-12-09"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
-
+
// close to dates
-
+
cal.setStartDate(parseDate("2006-03-14"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-03-15"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2005-12-21"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-03-16"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
-
+
cal.setStartDate(parseDate("2006-06-20"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-06-21"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-03-15"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-06-22"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
-
+
cal.setStartDate(parseDate("2006-09-19"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-09-20"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-06-21"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-09-21"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
-
+
cal.setStartDate(parseDate("2006-12-19"));
Assert.assertEquals("From " + cal.getStartDate(), parseDate("2006-09-20"), cal.getPreviousIMMDate());
cal.setStartDate(parseDate("2006-12-20"));
@@ -257,5 +289,5 @@
Assert.assertNotNull(imms);
Assert.assertTrue("empty", imms.isEmpty());
}
-
+
}
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-05 09:31:32 UTC (rev 106)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java 2006-09-05 10:01:21 UTC (rev 107)
@@ -113,6 +113,10 @@
protected LocalDate getNextIMMDate(final boolean forward, final LocalDate start, final IMMPeriod period) {
LocalDate date = start;
+// if (period == IMMPeriod.ANNUALLY) {
+// date = date.plusYears(1);
+// }
+
final int month = date.getMonthOfYear();
int monthOffset = 0;
@@ -161,6 +165,15 @@
&& (DateTimeConstants.JUNE == imm.getMonthOfYear() || DateTimeConstants.DECEMBER==imm.getMonthOfYear()) ) {
// need to move to the next one.
imm = getNextIMMDate(forward, imm, period);
+ } else if (period == IMMPeriod.ANNUALLY) {
+ // second jump
+ imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+ // third jump
+ imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+ // fourth jump
+ imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
+ // fifth jump
+ imm = getNextIMMDate(forward, imm, IMMPeriod.QUARTERLY);
}
return imm;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|