|
From: <ma...@us...> - 2006-09-04 18:54:14
|
Revision: 98
http://svn.sourceforge.net/objectlabkit/?rev=98&view=rev
Author: marchy
Date: 2006-09-04 11:49:30 -0700 (Mon, 04 Sep 2006)
Log Message:
-----------
Made the PeriodCountCalculatorTest generic.
Modified Paths:
--------------
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/PeriodCountCalculatorTest.java
Added Paths:
-----------
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java
Removed Paths:
-------------
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractPeriodCountCalculator.java 2006-09-04 18:49:30 UTC (rev 98)
@@ -0,0 +1,386 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.math.BigDecimal;
+
+import net.objectlab.kit.datecalc.common.PeriodCountBasis;
+import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public abstract class AbstractPeriodCountCalculator<E> extends TestCase {
+
+ private static final String[][] ACT_365 = {
+ // name start end period dayDiff yearDiff
+ { "0D", "2006-08-08", "2006-08-08", "ACT_365", "0", "0.00" },
+ { "1D", "2006-08-08", "2006-08-09", "ACT_365", "1", "0.002740" },
+ { "1W", "2006-08-08", "2006-08-15", "ACT_365", "7", "0.019178" },
+ { "1M", "2006-08-08", "2006-09-08", "ACT_365", "31", "0.084932" },
+ { "3M", "2006-08-08", "2006-11-08", "ACT_365", "92", "0.252055" },
+ { "6M", "2006-08-08", "2007-02-08", "ACT_365", "184", "0.504110" },
+ { "9M", "2006-08-08", "2007-05-08", "ACT_365", "273", "0.747945" },
+ { "1Y", "2006-08-08", "2007-08-08", "ACT_365", "365", "1.000000" },
+ { "2Y", "2006-08-08", "2008-08-08", "ACT_365", "731", "2.002740" },
+ { "3Y", "2006-08-08", "2009-08-10", "ACT_365", "1098", "3.008219" },
+ { "4Y", "2006-08-08", "2010-08-09", "ACT_365", "1462", "4.005479" },
+ { "5Y", "2006-08-08", "2011-08-08", "ACT_365", "1826", "5.002740" },
+ { "7Y", "2006-08-08", "2013-08-08", "ACT_365", "2557", "7.005479" },
+ { "10Y", "2006-08-08", "2016-08-08", "ACT_365", "3653", "10.008219" },
+ { "15Y", "2006-08-08", "2021-08-09", "ACT_365", "5480", "15.013699" },
+ { "20Y", "2006-08-08", "2026-08-10", "ACT_365", "7307", "20.019178" },
+ { "30Y", "2006-08-08", "2036-08-08", "ACT_365", "10958", "30.021918" },
+ // leap year - funny date...
+ { "0D", "2008-02-29", "2008-02-29", "ACT_365", "0", "0.00" },
+ { "1D", "2008-02-29", "2008-03-03", "ACT_365", "3", "0.008219" },
+ { "1W", "2008-02-29", "2008-03-07", "ACT_365", "7", "0.019178" },
+ { "1M", "2008-02-29", "2008-03-31", "ACT_365", "31", "0.084932" },
+ { "3M", "2008-02-29", "2008-05-29", "ACT_365", "90", "0.246575" },
+ { "6M", "2008-02-29", "2008-08-29", "ACT_365", "182", "0.498630" },
+ { "9M", "2008-02-29", "2008-11-28", "ACT_365", "273", "0.747945" },
+ { "1Y", "2008-02-29", "2009-02-27", "ACT_365", "364", "0.997260" },
+ { "2Y", "2008-02-29", "2010-02-26", "ACT_365", "728", "1.994521" },
+ { "3Y", "2008-02-29", "2011-02-28", "ACT_365", "1095", "3.000000" },
+ { "4Y", "2008-02-29", "2012-02-29", "ACT_365", "1461", "4.002740" },
+ { "5Y", "2008-02-29", "2013-02-28", "ACT_365", "1826", "5.002740" },
+ { "7Y", "2008-02-29", "2015-02-27", "ACT_365", "2555", "7.000000" },
+ { "10Y", "2008-02-29", "2018-02-28", "ACT_365", "3652", "10.005479" },
+ { "15Y", "2008-02-29", "2023-02-28", "ACT_365", "5478", "15.008219" },
+ { "20Y", "2008-02-29", "2028-02-29", "ACT_365", "7305", "20.013699" },
+ { "30Y", "2008-02-29", "2038-02-26", "ACT_365", "10955", "30.013699" },
+ // start date end of month...
+ { "0D", "1998-12-31", "1998-12-31", "ACT_365", "0", "0.00" },
+ { "1D", "1998-12-31", "1999-01-01", "ACT_365", "1", "0.002740" },
+ { "1W", "1998-12-31", "1999-01-07", "ACT_365", "7", "0.019178" },
+ { "1M", "1998-12-31", "1999-01-29", "ACT_365", "29", "0.079452" },
+ { "3M", "1998-12-31", "1999-03-31", "ACT_365", "90", "0.246575" },
+ { "6M", "1998-12-31", "1999-06-30", "ACT_365", "181", "0.495890" },
+ { "9M", "1998-12-31", "1999-09-30", "ACT_365", "273", "0.747945" },
+ { "1Y", "1998-12-31", "1999-12-31", "ACT_365", "365", "1.000000" },
+ { "2Y", "1998-12-31", "2000-12-29", "ACT_365", "729", "1.997260" },
+ { "3Y", "1998-12-31", "2001-12-31", "ACT_365", "1096", "3.002740" },
+ { "4Y", "1998-12-31", "2002-12-31", "ACT_365", "1461", "4.002740" },
+ { "5Y", "1998-12-31", "2003-12-31", "ACT_365", "1826", "5.002740" },
+ { "7Y", "1998-12-31", "2005-12-30", "ACT_365", "2556", "7.002740" },
+ { "10Y", "1998-12-31", "2008-12-31", "ACT_365", "3653", "10.008219" },
+ { "15Y", "1998-12-31", "2013-12-31", "ACT_365", "5479", "15.010959" },
+ { "20Y", "1998-12-31", "2018-12-31", "ACT_365", "7305", "20.013699" },
+ { "30Y", "1998-12-31", "2028-12-29", "ACT_365", "10956", "30.016438" }
+ // end of set
+ };
+ private static final String[][] ACT_360 = {
+ // name start end period dayDiff yearDiff
+ { "0D", "2006-08-08", "2006-08-08", "ACT_360", "0", "0.00" },
+ { "1D", "2006-08-08", "2006-08-09", "ACT_360", "1", "0.002778" },
+ { "1W", "2006-08-08", "2006-08-15", "ACT_360", "7", "0.019444" },
+ { "1M", "2006-08-08", "2006-09-08", "ACT_360", "31", "0.086111" },
+ { "3M", "2006-08-08", "2006-11-08", "ACT_360", "92", "0.255556" },
+ { "6M", "2006-08-08", "2007-02-08", "ACT_360", "184", "0.511111" },
+ { "9M", "2006-08-08", "2007-05-08", "ACT_360", "273", "0.758333" },
+ { "1Y", "2006-08-08", "2007-08-08", "ACT_360", "365", "1.013889" },
+ { "2Y", "2006-08-08", "2008-08-08", "ACT_360", "731", "2.030556" },
+ { "3Y", "2006-08-08", "2009-08-10", "ACT_360", "1098", "3.050000" },
+ { "4Y", "2006-08-08", "2010-08-09", "ACT_360", "1462", "4.061111" },
+ { "5Y", "2006-08-08", "2011-08-08", "ACT_360", "1826", "5.072222" },
+ { "7Y", "2006-08-08", "2013-08-08", "ACT_360", "2557", "7.102778" },
+ { "10Y", "2006-08-08", "2016-08-08", "ACT_360", "3653", "10.147222" },
+ { "15Y", "2006-08-08", "2021-08-09", "ACT_360", "5480", "15.222222" },
+ { "20Y", "2006-08-08", "2026-08-10", "ACT_360", "7307", "20.297222" },
+ { "30Y", "2006-08-08", "2036-08-08", "ACT_360", "10958", "30.438889" },
+ // leap year - funny date...
+ { "0D", "2008-02-29", "2008-02-29", "ACT_360", "0", "0.00" },
+ { "1D", "2008-02-29", "2008-03-03", "ACT_360", "3", "0.008333" },
+ { "1W", "2008-02-29", "2008-03-07", "ACT_360", "7", "0.019444" },
+ { "1M", "2008-02-29", "2008-03-31", "ACT_360", "31", "0.086111" },
+ { "3M", "2008-02-29", "2008-05-29", "ACT_360", "90", "0.250000" },
+ { "6M", "2008-02-29", "2008-08-29", "ACT_360", "182", "0.505556" },
+ { "9M", "2008-02-29", "2008-11-28", "ACT_360", "273", "0.758333" },
+ { "1Y", "2008-02-29", "2009-02-27", "ACT_360", "364", "1.011111" },
+ { "2Y", "2008-02-29", "2010-02-26", "ACT_360", "728", "2.022222" },
+ { "3Y", "2008-02-29", "2011-02-28", "ACT_360", "1095", "3.041667" },
+ { "4Y", "2008-02-29", "2012-02-29", "ACT_360", "1461", "4.058333" },
+ { "5Y", "2008-02-29", "2013-02-28", "ACT_360", "1826", "5.072222" },
+ { "7Y", "2008-02-29", "2015-02-27", "ACT_360", "2555", "7.097222" },
+ { "10Y", "2008-02-29", "2018-02-28", "ACT_360", "3652", "10.144444" },
+ { "15Y", "2008-02-29", "2023-02-28", "ACT_360", "5478", "15.216667" },
+ { "20Y", "2008-02-29", "2028-02-29", "ACT_360", "7305", "20.291667" },
+ { "30Y", "2008-02-29", "2038-02-26", "ACT_360", "10955", "30.430556" },
+ // start date end of month...
+ { "0D", "1998-12-31", "1998-12-31", "ACT_360", "0", "0.00" },
+ { "1D", "1998-12-31", "1999-01-01", "ACT_360", "1", "0.002778" },
+ { "1W", "1998-12-31", "1999-01-07", "ACT_360", "7", "0.019444" },
+ { "1M", "1998-12-31", "1999-01-29", "ACT_360", "29", "0.080556" },
+ { "3M", "1998-12-31", "1999-03-31", "ACT_360", "90", "0.250000" },
+ { "6M", "1998-12-31", "1999-06-30", "ACT_360", "181", "0.502778" },
+ { "9M", "1998-12-31", "1999-09-30", "ACT_360", "273", "0.758333" },
+ { "1Y", "1998-12-31", "1999-12-31", "ACT_360", "365", "1.013889" },
+ { "2Y", "1998-12-31", "2000-12-29", "ACT_360", "729", "2.025000" },
+ { "3Y", "1998-12-31", "2001-12-31", "ACT_360", "1096", "3.044444" },
+ { "4Y", "1998-12-31", "2002-12-31", "ACT_360", "1461", "4.058333" },
+ { "5Y", "1998-12-31", "2003-12-31", "ACT_360", "1826", "5.072222" },
+ { "7Y", "1998-12-31", "2005-12-30", "ACT_360", "2556", "7.100000" },
+ { "10Y", "1998-12-31", "2008-12-31", "ACT_360", "3653", "10.147222" },
+ { "15Y", "1998-12-31", "2013-12-31", "ACT_360", "5479", "15.219444" },
+ { "20Y", "1998-12-31", "2018-12-31", "ACT_360", "7305", "20.291667" },
+ { "30Y", "1998-12-31", "2028-12-29", "ACT_360", "10956", "30.433333" }
+ // end of set
+ };
+ private static final String[][] CONV_30_360 = {
+ // name start end period dayDiff yearDiff
+ { "0D", "2006-08-08", "2006-08-08", "CONV_30_360", "0", "0.00" },
+ { "1D", "2006-08-08", "2006-08-09", "CONV_30_360", "1", "0.002778" },
+ { "1W", "2006-08-08", "2006-08-15", "CONV_30_360", "7", "0.019444" },
+ { "1M", "2006-08-08", "2006-09-08", "CONV_30_360", "30", "0.083333" },
+ { "3M", "2006-08-08", "2006-11-08", "CONV_30_360", "90", "0.250000" },
+ { "6M", "2006-08-08", "2007-02-08", "CONV_30_360", "180", "0.500000" },
+ { "9M", "2006-08-08", "2007-05-08", "CONV_30_360", "270", "0.750000" },
+ { "1Y", "2006-08-08", "2007-08-08", "CONV_30_360", "360", "1.000000" },
+ { "2Y", "2006-08-08", "2008-08-08", "CONV_30_360", "720", "2.000000" },
+ { "3Y", "2006-08-08", "2009-08-10", "CONV_30_360", "1082", "3.005556" },
+ { "4Y", "2006-08-08", "2010-08-09", "CONV_30_360", "1441", "4.002778" },
+ { "5Y", "2006-08-08", "2011-08-08", "CONV_30_360", "1800", "5.000000" },
+ { "7Y", "2006-08-08", "2013-08-08", "CONV_30_360", "2520", "7.000000" },
+ { "10Y", "2006-08-08", "2016-08-08", "CONV_30_360", "3600", "10.000000" },
+ { "15Y", "2006-08-08", "2021-08-09", "CONV_30_360", "5401", "15.002778" },
+ { "20Y", "2006-08-08", "2026-08-10", "CONV_30_360", "7202", "20.005556" },
+ { "30Y", "2006-08-08", "2036-08-08", "CONV_30_360", "10800", "30.000000" },
+ // leap year - funny date...
+ { "0D", "2008-02-29", "2008-02-29", "CONV_30_360", "0", "0.00" },
+ { "1D", "2008-02-29", "2008-03-03", "CONV_30_360", "4", "0.011111" },
+ { "1W", "2008-02-29", "2008-03-07", "CONV_30_360", "8", "0.022222" },
+ { "1M", "2008-02-29", "2008-03-31", "CONV_30_360", "32", "0.088889" },
+ { "3M", "2008-02-29", "2008-05-29", "CONV_30_360", "90", "0.250000" },
+ { "6M", "2008-02-29", "2008-08-29", "CONV_30_360", "180", "0.500000" },
+ { "9M", "2008-02-29", "2008-11-28", "CONV_30_360", "269", "0.747222" },
+ { "1Y", "2008-02-29", "2009-02-27", "CONV_30_360", "358", "0.994444" },
+ { "2Y", "2008-02-29", "2010-02-26", "CONV_30_360", "717", "1.991667" },
+ { "3Y", "2008-02-29", "2011-02-28", "CONV_30_360", "1079", "2.997222" },
+ { "4Y", "2008-02-29", "2012-02-29", "CONV_30_360", "1440", "4.000000" },
+ { "5Y", "2008-02-29", "2013-02-28", "CONV_30_360", "1799", "4.997222" },
+ { "7Y", "2008-02-29", "2015-02-27", "CONV_30_360", "2518", "6.994444" },
+ { "10Y", "2008-02-29", "2018-02-28", "CONV_30_360", "3599", "9.997222" },
+ { "15Y", "2008-02-29", "2023-02-28", "CONV_30_360", "5399", "14.997222" },
+ { "20Y", "2008-02-29", "2028-02-29", "CONV_30_360", "7200", "20.000000" },
+ { "30Y", "2008-02-29", "2038-02-26", "CONV_30_360", "10797", "29.991667" },
+ // start date end of month...
+ { "0D", "1998-12-31", "1998-12-31", "CONV_30_360", "0", "0.000000" },
+ { "1D", "1998-12-31", "1999-01-01", "CONV_30_360", "1", "0.002778" },
+ { "1W", "1998-12-31", "1999-01-07", "CONV_30_360", "7", "0.019444" },
+ { "1M", "1998-12-31", "1999-01-29", "CONV_30_360", "29", "0.080556" },
+ { "3M", "1998-12-31", "1999-03-31", "CONV_30_360", "90", "0.250000" },
+ { "6M", "1998-12-31", "1999-06-30", "CONV_30_360", "180", "0.500000" },
+ { "9M", "1998-12-31", "1999-09-30", "CONV_30_360", "270", "0.750000" },
+ { "1Y", "1998-12-31", "1999-12-31", "CONV_30_360", "360", "1.000000" },
+ { "2Y", "1998-12-31", "2000-12-29", "CONV_30_360", "719", "1.997222" },
+ { "3Y", "1998-12-31", "2001-12-31", "CONV_30_360", "1080", "3.000000" },
+ { "4Y", "1998-12-31", "2002-12-31", "CONV_30_360", "1440", "4.000000" },
+ { "5Y", "1998-12-31", "2003-12-31", "CONV_30_360", "1800", "5.000000" },
+ { "7Y", "1998-12-31", "2005-12-30", "CONV_30_360", "2520", "7.000000" },
+ { "10Y", "1998-12-31", "2008-12-31", "CONV_30_360", "3600", "10.000000" },
+ { "15Y", "1998-12-31", "2013-12-31", "CONV_30_360", "5400", "15.000000" },
+ { "20Y", "1998-12-31", "2018-12-31", "CONV_30_360", "7200", "20.000000" },
+ { "30Y", "1998-12-31", "2028-12-29", "CONV_30_360", "10799", "29.997222" }
+ // end of set
+ };
+ private static final String[][] CONV_360E_ISDA = {
+ // name start end period dayDiff yearDiff
+ { "0D", "2006-08-08", "2006-08-08", "CONV_360E_ISDA", "0", "0.00" },
+ { "1D", "2006-08-08", "2006-08-09", "CONV_360E_ISDA", "1", "0.002778" },
+ { "1W", "2006-08-08", "2006-08-15", "CONV_360E_ISDA", "7", "0.019444" },
+ { "1M", "2006-08-08", "2006-09-08", "CONV_360E_ISDA", "30", "0.083333" },
+ { "3M", "2006-08-08", "2006-11-08", "CONV_360E_ISDA", "90", "0.250000" },
+ { "6M", "2006-08-08", "2007-02-08", "CONV_360E_ISDA", "180", "0.500000" },
+ { "9M", "2006-08-08", "2007-05-08", "CONV_360E_ISDA", "270", "0.750000" },
+ { "1Y", "2006-08-08", "2007-08-08", "CONV_360E_ISDA", "360", "1.000000" },
+ { "2Y", "2006-08-08", "2008-08-08", "CONV_360E_ISDA", "720", "2.000000" },
+ { "3Y", "2006-08-08", "2009-08-10", "CONV_360E_ISDA", "1082", "3.005556" },
+ { "4Y", "2006-08-08", "2010-08-09", "CONV_360E_ISDA", "1441", "4.002778" },
+ { "5Y", "2006-08-08", "2011-08-08", "CONV_360E_ISDA", "1800", "5.000000" },
+ { "7Y", "2006-08-08", "2013-08-08", "CONV_360E_ISDA", "2520", "7.000000" },
+ { "10Y", "2006-08-08", "2016-08-08", "CONV_360E_ISDA", "3600", "10.000000" },
+ { "15Y", "2006-08-08", "2021-08-09", "CONV_360E_ISDA", "5401", "15.002778" },
+ { "20Y", "2006-08-08", "2026-08-10", "CONV_360E_ISDA", "7202", "20.005556" },
+ { "30Y", "2006-08-08", "2036-08-08", "CONV_360E_ISDA", "10800", "30.000000" },
+ // leap year - funny date...
+ { "0D", "2008-02-29", "2008-02-29", "CONV_360E_ISDA", "0", "0.00" },
+ { "1D", "2008-02-29", "2008-03-03", "CONV_360E_ISDA", "4", "0.011111" },
+ { "1W", "2008-02-29", "2008-03-07", "CONV_360E_ISDA", "8", "0.022222" },
+ { "1M", "2008-02-29", "2008-03-31", "CONV_360E_ISDA", "31", "0.086111" },
+ { "3M", "2008-02-29", "2008-05-29", "CONV_360E_ISDA", "90", "0.250000" },
+ { "6M", "2008-02-29", "2008-08-29", "CONV_360E_ISDA", "180", "0.500000" },
+ { "9M", "2008-02-29", "2008-11-28", "CONV_360E_ISDA", "269", "0.747222" },
+ { "1Y", "2008-02-29", "2009-02-27", "CONV_360E_ISDA", "358", "0.994444" },
+ { "2Y", "2008-02-29", "2010-02-26", "CONV_360E_ISDA", "717", "1.991667" },
+ { "3Y", "2008-02-29", "2011-02-28", "CONV_360E_ISDA", "1079", "2.997222" },
+ { "4Y", "2008-02-29", "2012-02-29", "CONV_360E_ISDA", "1440", "4.000000" },
+ { "5Y", "2008-02-29", "2013-02-28", "CONV_360E_ISDA", "1799", "4.997222" },
+ { "7Y", "2008-02-29", "2015-02-27", "CONV_360E_ISDA", "2518", "6.994444" },
+ { "10Y", "2008-02-29", "2018-02-28", "CONV_360E_ISDA", "3599", "9.997222" },
+ { "15Y", "2008-02-29", "2023-02-28", "CONV_360E_ISDA", "5399", "14.997222" },
+ { "20Y", "2008-02-29", "2028-02-29", "CONV_360E_ISDA", "7200", "20.000000" },
+ { "30Y", "2008-02-29", "2038-02-26", "CONV_360E_ISDA", "10797", "29.991667" },
+ // start date end of month...
+ { "0D", "1998-12-31", "1998-12-31", "CONV_360E_ISDA", "0", "0.00" },
+ { "1D", "1998-12-31", "1999-01-01", "CONV_360E_ISDA", "1", "0.002778" },
+ { "1W", "1998-12-31", "1999-01-07", "CONV_360E_ISDA", "7", "0.019444" },
+ { "1M", "1998-12-31", "1999-01-29", "CONV_360E_ISDA", "29", "0.080556" },
+ { "3M", "1998-12-31", "1999-03-31", "CONV_360E_ISDA", "90", "0.250000" },
+ { "6M", "1998-12-31", "1999-06-30", "CONV_360E_ISDA", "180", "0.500000" },
+ { "9M", "1998-12-31", "1999-09-30", "CONV_360E_ISDA", "270", "0.750000" },
+ { "1Y", "1998-12-31", "1999-12-31", "CONV_360E_ISDA", "360", "1.000000" },
+ { "2Y", "1998-12-31", "2000-12-29", "CONV_360E_ISDA", "719", "1.997222" },
+ { "3Y", "1998-12-31", "2001-12-31", "CONV_360E_ISDA", "1080", "3.000000" },
+ { "4Y", "1998-12-31", "2002-12-31", "CONV_360E_ISDA", "1440", "4.000000" },
+ { "5Y", "1998-12-31", "2003-12-31", "CONV_360E_ISDA", "1800", "5.000000" },
+ { "7Y", "1998-12-31", "2005-12-30", "CONV_360E_ISDA", "2520", "7.000000" },
+ { "10Y", "1998-12-31", "2008-12-31", "CONV_360E_ISDA", "3600", "10.000000" },
+ { "15Y", "1998-12-31", "2013-12-31", "CONV_360E_ISDA", "5400", "15.000000" },
+ { "20Y", "1998-12-31", "2018-12-31", "CONV_360E_ISDA", "7200", "20.000000" },
+ { "30Y", "1998-12-31", "2028-12-29", "CONV_360E_ISDA", "10799", "29.997222" }
+ // end of set
+ };
+ private static final String[][] CONV_360E_ISMA = {
+ // name start end period dayDiff yearDiff
+ { "0D", "2006-08-08", "2006-08-08", "CONV_360E_ISMA", "0", "0.00" },
+ { "1D", "2006-08-08", "2006-08-09", "CONV_360E_ISMA", "1", "0.002778" },
+ { "1W", "2006-08-08", "2006-08-15", "CONV_360E_ISMA", "7", "0.019444" },
+ { "1M", "2006-08-08", "2006-09-08", "CONV_360E_ISMA", "30", "0.083333" },
+ { "3M", "2006-08-08", "2006-11-08", "CONV_360E_ISMA", "90", "0.250000" },
+ { "6M", "2006-08-08", "2007-02-08", "CONV_360E_ISMA", "180", "0.500000" },
+ { "9M", "2006-08-08", "2007-05-08", "CONV_360E_ISMA", "270", "0.750000" },
+ { "1Y", "2006-08-08", "2007-08-08", "CONV_360E_ISMA", "360", "1.000000" },
+ { "2Y", "2006-08-08", "2008-08-08", "CONV_360E_ISMA", "720", "2.000000" },
+ { "3Y", "2006-08-08", "2009-08-10", "CONV_360E_ISMA", "1082", "3.005556" },
+ { "4Y", "2006-08-08", "2010-08-09", "CONV_360E_ISMA", "1441", "4.002778" },
+ { "5Y", "2006-08-08", "2011-08-08", "CONV_360E_ISMA", "1800", "5.000000" },
+ { "7Y", "2006-08-08", "2013-08-08", "CONV_360E_ISMA", "2520", "7.000000" },
+ { "10Y", "2006-08-08", "2016-08-08", "CONV_360E_ISMA", "3600", "10.000000" },
+ { "15Y", "2006-08-08", "2021-08-09", "CONV_360E_ISMA", "5401", "15.002778" },
+ { "20Y", "2006-08-08", "2026-08-10", "CONV_360E_ISMA", "7202", "20.005556" },
+ { "30Y", "2006-08-08", "2036-08-08", "CONV_360E_ISMA", "10800", "30.000000" },
+ // leap year - funny date...
+ { "0D", "2008-02-29", "2008-02-29", "CONV_360E_ISMA", "0", "0.00" },
+ { "1D", "2008-02-29", "2008-03-03", "CONV_360E_ISMA", "4", "0.011111" },
+ { "1W", "2008-02-29", "2008-03-07", "CONV_360E_ISMA", "8", "0.022222" },
+ { "1M", "2008-02-29", "2008-03-31", "CONV_360E_ISMA", "31", "0.086111" },
+ { "3M", "2008-02-29", "2008-05-29", "CONV_360E_ISMA", "90", "0.250000" },
+ { "6M", "2008-02-29", "2008-08-29", "CONV_360E_ISMA", "180", "0.500000" },
+ { "9M", "2008-02-29", "2008-11-28", "CONV_360E_ISMA", "269", "0.747222" },
+ { "1Y", "2008-02-29", "2009-02-27", "CONV_360E_ISMA", "358", "0.994444" },
+ { "2Y", "2008-02-29", "2010-02-26", "CONV_360E_ISMA", "717", "1.991667" },
+ { "3Y", "2008-02-29", "2011-02-28", "CONV_360E_ISMA", "1079", "2.997222" },
+ { "4Y", "2008-02-29", "2012-02-29", "CONV_360E_ISMA", "1440", "4.000000" },
+ { "5Y", "2008-02-29", "2013-02-28", "CONV_360E_ISMA", "1799", "4.997222" },
+ { "7Y", "2008-02-29", "2015-02-27", "CONV_360E_ISMA", "2518", "6.994444" },
+ { "10Y", "2008-02-29", "2018-02-28", "CONV_360E_ISMA", "3599", "9.997222" },
+ { "15Y", "2008-02-29", "2023-02-28", "CONV_360E_ISMA", "5399", "14.997222" },
+ { "20Y", "2008-02-29", "2028-02-29", "CONV_360E_ISMA", "7200", "20.000000" },
+ { "30Y", "2008-02-29", "2038-02-26", "CONV_360E_ISMA", "10797", "29.991667" },
+ // start date end of month...
+ { "0D", "1998-12-31", "1998-12-31", "CONV_360E_ISMA", "0", "0.00" },
+ { "1D", "1998-12-31", "1999-01-01", "CONV_360E_ISMA", "1", "0.002778" },
+ { "1W", "1998-12-31", "1999-01-07", "CONV_360E_ISMA", "7", "0.019444" },
+ { "1M", "1998-12-31", "1999-01-29", "CONV_360E_ISMA", "29", "0.080556" },
+ { "3M", "1998-12-31", "1999-03-31", "CONV_360E_ISMA", "90", "0.250000" },
+ { "6M", "1998-12-31", "1999-06-30", "CONV_360E_ISMA", "180", "0.500000" },
+ { "9M", "1998-12-31", "1999-09-30", "CONV_360E_ISMA", "270", "0.750000" },
+ { "1Y", "1998-12-31", "1999-12-31", "CONV_360E_ISMA", "360", "1.000000" },
+ { "2Y", "1998-12-31", "2000-12-29", "CONV_360E_ISMA", "719", "1.997222" },
+ { "3Y", "1998-12-31", "2001-12-31", "CONV_360E_ISMA", "1080", "3.000000" },
+ { "4Y", "1998-12-31", "2002-12-31", "CONV_360E_ISMA", "1440", "4.000000" },
+ { "5Y", "1998-12-31", "2003-12-31", "CONV_360E_ISMA", "1800", "5.000000" },
+ { "7Y", "1998-12-31", "2005-12-30", "CONV_360E_ISMA", "2520", "7.000000" },
+ { "10Y", "1998-12-31", "2008-12-31", "CONV_360E_ISMA", "3600", "10.000000" },
+ { "15Y", "1998-12-31", "2013-12-31", "CONV_360E_ISMA", "5400", "15.000000" },
+ { "20Y", "1998-12-31", "2018-12-31", "CONV_360E_ISMA", "7200", "20.000000" },
+ { "30Y", "1998-12-31", "2028-12-29", "CONV_360E_ISMA", "10799", "29.997222" }
+ // end of set
+ };
+
+ private PeriodCountCalculator<E> cal;
+
+ public void setUp() {
+ cal = getPeriodCountCalculator();
+ }
+
+ public abstract PeriodCountCalculator<E> getPeriodCountCalculator();
+
+ public abstract E parseDate(String string);
+
+ public abstract E getDate();
+
+ public void testConv30EvIsma() {
+ Assert.assertNotNull(cal);
+
+ for (final String[] test : CONV_360E_ISMA) {
+ runtest(cal, test);
+ }
+ }
+
+ public void testConv30Ev360() {
+ Assert.assertNotNull(cal);
+
+ for (final String[] test : CONV_360E_ISDA) {
+ runtest(cal, test);
+ }
+ }
+
+ public void testConv30v360() {
+ Assert.assertNotNull(cal);
+
+ for (final String[] test : CONV_30_360) {
+ runtest(cal, test);
+ }
+ }
+
+ public void testAct365() {
+ Assert.assertNotNull(cal);
+
+ for (final String[] test : ACT_365) {
+ runtest(cal, test);
+ }
+ }
+
+ public void testAct360() {
+ Assert.assertNotNull(cal);
+
+ for (final String[] test : ACT_360) {
+ runtest(cal, test);
+ }
+ }
+
+ public void testUnsupportedType() {
+ Assert.assertNotNull(cal);
+
+ final PeriodCountBasis pcount = PeriodCountBasis.ACT_UST;
+ final E start = getDate();
+ final E end = getDate();
+
+ try {
+ cal.yearDiff(start, end, pcount);
+ Assert.fail("Should have refused the algo...");
+ } catch (final UnsupportedOperationException e) {
+ // ok
+ }
+
+ try {
+ cal.monthDiff(start, end, pcount);
+ Assert.fail("Should have refused the algo...");
+ } catch (final UnsupportedOperationException e) {
+ // ok
+ }
+ }
+
+ private void runtest(final PeriodCountCalculator<E> cal, final String[] test) {
+ final String name = test[0];
+ final E start = parseDate(test[1]);
+ final E end = parseDate(test[2]);
+ final PeriodCountBasis pcount = PeriodCountBasis.valueOf(test[3]);
+ final int dayDiff = Integer.parseInt(test[4]);
+ Assert.assertEquals(name + " Basis:" + pcount + " start:" + start + " dayDiff", dayDiff, cal.dayDiff(start, end, pcount));
+
+ final BigDecimal yearDiff = new BigDecimal(cal.yearDiff(start, end, pcount)).setScale(6, BigDecimal.ROUND_HALF_UP);
+ Assert.assertTrue(name + " Basis:" + pcount + " yearDiff expected:" + test[5] + " got:" + yearDiff, (new BigDecimal(
+ test[5])).compareTo(yearDiff) == 0);
+ }
+
+}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java 2006-09-04 17:16:22 UTC (rev 97)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/CalendarPeriodCountCalculator.java 2006-09-04 18:49:30 UTC (rev 98)
@@ -82,12 +82,8 @@
}
private int dayDiff(final Calendar start, final Calendar end) {
- // System.out.println("start:" + start.getTime() + " end:" +
- // end.getTime());
final long diff = Math.abs(start.getTimeInMillis() - end.getTimeInMillis());
- // System.out.println("ms diff:" + diff);
final double dayDiff = ((double) diff) / MILLIS_IN_DAY;
- // System.out.println("day diff:" + dayDiff);
return (int) (dayDiff);
}
Copied: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java (from rev 97, trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java)
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java (rev 0)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DatePeriodCountCalculatorTest.java 2006-09-04 18:49:30 UTC (rev 98)
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2006 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package net.objectlab.kit.datecalc.jdk;
+
+import java.util.Date;
+
+import net.objectlab.kit.datecalc.common.AbstractPeriodCountCalculator;
+import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
+import net.objectlab.kit.datecalc.common.Utils;
+
+public class DatePeriodCountCalculatorTest extends AbstractPeriodCountCalculator<Date> {
+
+ @Override
+ public PeriodCountCalculator<Date> getPeriodCountCalculator() {
+ return DefaultJdkDateCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
+ }
+
+ @Override
+ public Date parseDate(String string) {
+ return Utils.createDate(string);
+ }
+
+ @Override
+ public Date getDate() {
+ return new Date();
+ }
+
+}
\ No newline at end of file
Deleted: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java 2006-09-04 17:16:22 UTC (rev 97)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/PeriodCountCalculatorTest.java 2006-09-04 18:49:30 UTC (rev 98)
@@ -1,286 +0,0 @@
-/*
- * Copyright 2006 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package net.objectlab.kit.datecalc.jdk;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-import junit.framework.Assert;
-import net.objectlab.kit.datecalc.common.PeriodCountBasis;
-import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
-
-public class PeriodCountCalculatorTest extends AbstractDateCalculatorTest {
-
- private static final String[][] ACT_365 = {
- // name start end period dayDiff yearDiff
- { "0D", "2006-08-08", "2006-08-08", "ACT_365", "0", "0.00" },
- { "1D", "2006-08-08", "2006-08-09", "ACT_365", "1", "0.002740" },
- { "1W", "2006-08-08", "2006-08-15", "ACT_365", "7", "0.019178" },
- { "1M", "2006-08-08", "2006-09-08", "ACT_365", "31", "0.084932" },
- { "3M", "2006-08-08", "2006-11-08", "ACT_365", "92", "0.252055" },
- { "6M", "2006-08-08", "2007-02-08", "ACT_365", "184", "0.504110" },
- { "9M", "2006-08-08", "2007-05-08", "ACT_365", "273", "0.747945" },
- { "1Y", "2006-08-08", "2007-08-08", "ACT_365", "365", "1.000000" },
- { "2Y", "2006-08-08", "2008-08-08", "ACT_365", "731", "2.002740" },
- { "3Y", "2006-08-08", "2009-08-10", "ACT_365", "1098", "3.008219" },
- { "4Y", "2006-08-08", "2010-08-09", "ACT_365", "1462", "4.005479" },
- { "5Y", "2006-08-08", "2011-08-08", "ACT_365", "1826", "5.002740" },
- { "7Y", "2006-08-08", "2013-08-08", "ACT_365", "2557", "7.005479" },
- { "10Y", "2006-08-08", "2016-08-08", "ACT_365", "3653", "10.008219" },
- { "15Y", "2006-08-08", "2021-08-09", "ACT_365", "5480", "15.013699" },
- { "20Y", "2006-08-08", "2026-08-10", "ACT_365", "7307", "20.019178" },
- { "30Y", "2006-08-08", "2036-08-08", "ACT_365", "10958", "30.021918" },
- // leap year - funny date...
- { "0D", "2008-02-29", "2008-02-29", "ACT_365", "0", "0.00" },
- { "1D", "2008-02-29", "2008-03-03", "ACT_365", "3", "0.008219" },
- { "1W", "2008-02-29", "2008-03-07", "ACT_365", "7", "0.019178" },
- { "1M", "2008-02-28", "2008-03-31", "ACT_365", "32", "0.087671" }, // new
- { "1M", "2008-02-29", "2008-03-31", "ACT_365", "31", "0.084932" },
- { "3M", "2008-02-29", "2008-05-29", "ACT_365", "90", "0.246575" },
- { "6M", "2008-02-29", "2008-08-29", "ACT_365", "182", "0.498630" },
- { "9M", "2008-02-29", "2008-11-28", "ACT_365", "273", "0.747945" },
- { "1Y", "2008-02-29", "2009-02-27", "ACT_365", "364", "0.997260" },
- { "2Y", "2008-02-29", "2010-02-26", "ACT_365", "728", "1.994521" },
- { "3Y", "2008-02-29", "2011-02-28", "ACT_365", "1095", "3.000000" },
- { "4Y", "2008-02-29", "2012-02-29", "ACT_365", "1461", "4.002740" },
- { "5Y", "2008-02-29", "2013-02-28", "ACT_365", "1826", "5.002740" },
- { "7Y", "2008-02-29", "2015-02-27", "ACT_365", "2555", "7.000000" },
- { "10Y", "2008-02-29", "2018-02-28", "ACT_365", "3652", "10.005479" },
- { "15Y", "2008-02-29", "2023-02-28", "ACT_365", "5478", "15.008219" },
- { "20Y", "2008-02-29", "2028-02-29", "ACT_365", "7305", "20.013699" },
- { "30Y", "2008-02-29", "2038-02-26", "ACT_365", "10955", "30.013699" }
- // end of set
- };
-
- private static final String[][] ACT_360 = {
- // name start end period dayDiff yearDiff
- { "0D", "2006-08-08", "2006-08-08", "ACT_360", "0", "0.00" },
- { "1D", "2006-08-08", "2006-08-09", "ACT_360", "1", "0.002778" },
- { "1W", "2006-08-08", "2006-08-15", "ACT_360", "7", "0.019444" },
- { "1M", "2006-08-08", "2006-09-08", "ACT_360", "31", "0.086111" },
- { "3M", "2006-08-08", "2006-11-08", "ACT_360", "92", "0.255556" },
- { "6M", "2006-08-08", "2007-02-08", "ACT_360", "184", "0.511111" },
- { "9M", "2006-08-08", "2007-05-08", "ACT_360", "273", "0.758333" },
- { "1Y", "2006-08-08", "2007-08-08", "ACT_360", "365", "1.013889" },
- { "2Y", "2006-08-08", "2008-08-08", "ACT_360", "731", "2.030556" },
- { "3Y", "2006-08-08", "2009-08-10", "ACT_360", "1098", "3.050000" },
- { "4Y", "2006-08-08", "2010-08-09", "ACT_360", "1462", "4.061111" },
- { "5Y", "2006-08-08", "2011-08-08", "ACT_360", "1826", "5.072222" },
- { "7Y", "2006-08-08", "2013-08-08", "ACT_360", "2557", "7.102778" },
- { "10Y", "2006-08-08", "2016-08-08", "ACT_360", "3653", "10.147222" },
- { "15Y", "2006-08-08", "2021-08-09", "ACT_360", "5480", "15.222222" },
- { "20Y", "2006-08-08", "2026-08-10", "ACT_360", "7307", "20.297222" },
- { "30Y", "2006-08-08", "2036-08-08", "ACT_360", "10958", "30.438889" },
- // leap year - funny date...
- { "0D", "2008-02-29", "2008-02-29", "ACT_360", "0", "0.00" },
- { "1D", "2008-02-29", "2008-03-03", "ACT_360", "3", "0.008333" },
- { "1W", "2008-02-29", "2008-03-07", "ACT_360", "7", "0.019444" },
- { "1M", "2008-02-29", "2008-03-31", "ACT_360", "31", "0.086111" },
- { "3M", "2008-02-29", "2008-05-29", "ACT_360", "90", "0.250000" },
- { "6M", "2008-02-29", "2008-08-29", "ACT_360", "182", "0.505556" },
- { "9M", "2008-02-29", "2008-11-28", "ACT_360", "273", "0.758333" },
- { "1Y", "2008-02-29", "2009-02-27", "ACT_360", "364", "1.011111" },
- { "2Y", "2008-02-29", "2010-02-26", "ACT_360", "728", "2.022222" },
- { "3Y", "2008-02-29", "2011-02-28", "ACT_360", "1095", "3.041667" },
- { "4Y", "2008-02-29", "2012-02-29", "ACT_360", "1461", "4.058333" },
- { "5Y", "2008-02-29", "2013-02-28", "ACT_360", "1826", "5.072222" },
- { "7Y", "2008-02-29", "2015-02-27", "ACT_360", "2555", "7.097222" },
- { "10Y", "2008-02-29", "2018-02-28", "ACT_360", "3652", "10.144444" },
- { "15Y", "2008-02-29", "2023-02-28", "ACT_360", "5478", "15.216667" },
- { "20Y", "2008-02-29", "2028-02-29", "ACT_360", "7305", "20.291667" },
- { "30Y", "2008-02-29", "2038-02-26", "ACT_360", "10955", "30.430556" }
- // end of set
- };
-
- private static final String[][] CONV_30_360 = {
- // name start end period dayDiff yearDiff
- { "0D", "2006-08-08", "2006-08-08", "CONV_30_360", "0", "0.00" },
- { "1D", "2006-08-08", "2006-08-09", "CONV_30_360", "1", "0.002778" },
- { "1W", "2006-08-08", "2006-08-15", "CONV_30_360", "7", "0.019444" },
- { "1M", "2006-08-08", "2006-09-08", "CONV_30_360", "30", "0.083333" },
- { "3M", "2006-08-08", "2006-11-08", "CONV_30_360", "90", "0.250000" },
- { "6M", "2006-08-08", "2007-02-08", "CONV_30_360", "180", "0.500000" },
- { "9M", "2006-08-08", "2007-05-08", "CONV_30_360", "270", "0.750000" },
- { "1Y", "2006-08-08", "2007-08-08", "CONV_30_360", "360", "1.000000" },
- { "2Y", "2006-08-08", "2008-08-08", "CONV_30_360", "720", "2.000000" },
- { "3Y", "2006-08-08", "2009-08-10", "CONV_30_360", "1082", "3.005556" },
- { "4Y", "2006-08-08", "2010-08-09", "CONV_30_360", "1441", "4.002778" },
- { "5Y", "2006-08-08", "2011-08-08", "CONV_30_360", "1800", "5.000000" },
- { "7Y", "2006-08-08", "2013-08-08", "CONV_30_360", "2520", "7.000000" },
- { "10Y", "2006-08-08", "2016-08-08", "CONV_30_360", "3600", "10.000000" },
- { "15Y", "2006-08-08", "2021-08-09", "CONV_30_360", "5401", "15.002778" },
- { "20Y", "2006-08-08", "2026-08-10", "CONV_30_360", "7202", "20.005556" },
- { "30Y", "2006-08-08", "2036-08-08", "CONV_30_360", "10800", "30.000000" },
- // leap year - funny date...
- { "0D", "2008-02-29", "2008-02-29", "CONV_30_360", "0", "0.00" },
- { "1D", "2008-02-29", "2008-03-03", "CONV_30_360", "4", "0.011111" },
- { "1W", "2008-02-29", "2008-03-07", "CONV_30_360", "8", "0.022222" },
- { "1M", "2008-02-29", "2008-03-31", "CONV_30_360", "32", "0.088889" },
- { "3M", "2008-02-29", "2008-05-29", "CONV_30_360", "90", "0.250000" },
- { "6M", "2008-02-29", "2008-08-29", "CONV_30_360", "180", "0.500000" },
- { "9M", "2008-02-29", "2008-11-28", "CONV_30_360", "269", "0.747222" },
- { "1Y", "2008-02-29", "2009-02-27", "CONV_30_360", "358", "0.994444" },
- { "2Y", "2008-02-29", "2010-02-26", "CONV_30_360", "717", "1.991667" },
- { "3Y", "2008-02-29", "2011-02-28", "CONV_30_360", "1079", "2.997222" },
- { "4Y", "2008-02-29", "2012-02-29", "CONV_30_360", "1440", "4.000000" },
- { "5Y", "2008-02-29", "2013-02-28", "CONV_30_360", "1799", "4.997222" },
- { "7Y", "2008-02-29", "2015-02-27", "CONV_30_360", "2518", "6.994444" },
- { "10Y", "2008-02-29", "2018-02-28", "CONV_30_360", "3599", "9.997222" },
- { "15Y", "2008-02-29", "2023-02-28", "CONV_30_360", "5399", "14.997222" },
- { "20Y", "2008-02-29", "2028-02-29", "CONV_30_360", "7200", "20.000000" },
- { "30Y", "2008-02-29", "2038-02-26", "CONV_30_360", "10797", "29.991667" }
- // end of set
- };
-
- private static final String[][] CONV_360E_ISDA = {
- // name start end period dayDiff yearDiff
- { "0D", "2006-08-08", "2006-08-08", "CONV_360E_ISDA", "0", "0.00" },
- { "1D", "2006-08-08", "2006-08-09", "CONV_360E_ISDA", "1", "0.002778" },
- { "1W", "2006-08-08", "2006-08-15", "CONV_360E_ISDA", "7", "0.019444" },
- { "1M", "2006-08-08", "2006-09-08", "CONV_360E_ISDA", "30", "0.083333" },
- { "3M", "2006-08-08", "2006-11-08", "CONV_360E_ISDA", "90", "0.250000" },
- { "6M", "2006-08-08", "2007-02-08", "CONV_360E_ISDA", "180", "0.500000" },
- { "9M", "2006-08-08", "2007-05-08", "CONV_360E_ISDA", "270", "0.750000" },
- { "1Y", "2006-08-08", "2007-08-08", "CONV_360E_ISDA", "360", "1.000000" },
- { "2Y", "2006-08-08", "2008-08-08", "CONV_360E_ISDA", "720", "2.000000" },
- { "3Y", "2006-08-08", "2009-08-10", "CONV_360E_ISDA", "1082", "3.005556" },
- { "4Y", "2006-08-08", "2010-08-09", "CONV_360E_ISDA", "1441", "4.002778" },
- { "5Y", "2006-08-08", "2011-08-08", "CONV_360E_ISDA", "1800", "5.000000" },
- { "7Y", "2006-08-08", "2013-08-08", "CONV_360E_ISDA", "2520", "7.000000" },
- { "10Y", "2006-08-08", "2016-08-08", "CONV_360E_ISDA", "3600", "10.000000" },
- { "15Y", "2006-08-08", "2021-08-09", "CONV_360E_ISDA", "5401", "15.002778" },
- { "20Y", "2006-08-08", "2026-08-10", "CONV_360E_ISDA", "7202", "20.005556" },
- { "30Y", "2006-08-08", "2036-08-08", "CONV_360E_ISDA", "10800", "30.000000" },
- // leap year - funny date...
- { "0D", "2008-02-29", "2008-02-29", "CONV_360E_ISDA", "0", "0.00" },
- { "1D", "2008-02-29", "2008-03-03", "CONV_360E_ISDA", "4", "0.011111" },
- { "1W", "2008-02-29", "2008-03-07", "CONV_360E_ISDA", "8", "0.022222" },
- { "1M", "2008-02-29", "2008-03-31", "CONV_360E_ISDA", "31", "0.086111" },
- { "3M", "2008-02-29", "2008-05-29", "CONV_360E_ISDA", "90", "0.250000" },
- { "6M", "2008-02-29", "2008-08-29", "CONV_360E_ISDA", "180", "0.500000" },
- { "9M", "2008-02-29", "2008-11-28", "CONV_360E_ISDA", "269", "0.747222" },
- { "1Y", "2008-02-29", "2009-02-27", "CONV_360E_ISDA", "358", "0.994444" },
- { "2Y", "2008-02-29", "2010-02-26", "CONV_360E_ISDA", "717", "1.991667" },
- { "3Y", "2008-02-29", "2011-02-28", "CONV_360E_ISDA", "1079", "2.997222" },
- { "4Y", "2008-02-29", "2012-02-29", "CONV_360E_ISDA", "1440", "4.000000" },
- { "5Y", "2008-02-29", "2013-02-28", "CONV_360E_ISDA", "1799", "4.997222" },
- { "7Y", "2008-02-29", "2015-02-27", "CONV_360E_ISDA", "2518", "6.994444" },
- { "10Y", "2008-02-29", "2018-02-28", "CONV_360E_ISDA", "3599", "9.997222" },
- { "15Y", "2008-02-29", "2023-02-28", "CONV_360E_ISDA", "5399", "14.997222" },
- { "20Y", "2008-02-29", "2028-02-29", "CONV_360E_ISDA", "7200", "20.000000" },
- { "30Y", "2008-02-29", "2038-02-26", "CONV_360E_ISDA", "10797", "29.991667" }
- // end of set
- };
-
- private static final String[][] CONV_360E_ISMA = {
- // name start end period dayDiff yearDiff
- { "0D", "2006-08-08", "2006-08-08", "CONV_360E_ISMA", "0", "0.00" },
- { "1D", "2006-08-08", "2006-08-09", "CONV_360E_ISMA", "1", "0.002778" },
- { "1W", "2006-08-08", "2006-08-15", "CONV_360E_ISMA", "7", "0.019444" },
- { "1M", "2006-08-08", "2006-09-08", "CONV_360E_ISMA", "30", "0.083333" },
- { "3M", "2006-08-08", "2006-11-08", "CONV_360E_ISMA", "90", "0.250000" },
- { "6M", "2006-08-08", "2007-02-08", "CONV_360E_ISMA", "180", "0.500000" },
- { "9M", "2006-08-08", "2007-05-08", "CONV_360E_ISMA", "270", "0.750000" },
- { "1Y", "2006-08-08", "2007-08-08", "CONV_360E_ISMA", "360", "1.000000" },
- { "2Y", "2006-08-08", "2008-08-08", "CONV_360E_ISMA", "720", "2.000000" },
- { "3Y", "2006-08-08", "2009-08-10", "CONV_360E_ISMA", "1082", "3.005556" },
- { "4Y", "2006-08-08", "2010-08-09", "CONV_360E_ISMA", "1441", "4.002778" },
- { "5Y", "2006-08-08", "2011-08-08", "CONV_360E_ISMA", "1800", "5.000000" },
- { "7Y", "2006-08-08", "2013-08-08", "CONV_360E_ISMA", "2520", "7.000000" },
- { "10Y", "2006-08-08", "2016-08-08", "CONV_360E_ISMA", "3600", "10.000000" },
- { "15Y", "2006-08-08", "2021-08-09", "CONV_360E_ISMA", "5401", "15.002778" },
- { "20Y", "2006-08-08", "2026-08-10", "CONV_360E_ISMA", "7202", "20.005556" },
- { "30Y", "2006-08-08", "2036-08-08", "CONV_360E_ISMA", "10800", "30.000000" },
- // leap year - funny date...
- { "0D", "2008-02-29", "2008-02-29", "CONV_360E_ISMA", "0", "0.00" },
- { "1D", "2008-02-29", "2008-03-03", "CONV_360E_ISMA", "4", "0.011111" },
- { "1W", "2008-02-29", "2008-03-07", "CONV_360E_ISMA", "8", "0.022222" },
- { "1M", "2008-02-29", "2008-03-31", "CONV_360E_ISMA", "31", "0.086111" },
- { "3M", "2008-02-29", "2008-05-29", "CONV_360E_ISMA", "90", "0.250000" },
- { "6M", "2008-02-29", "2008-08-29", "CONV_360E_ISMA", "180", "0.500000" },
- { "9M", "2008-02-29", "2008-11-28", "CONV_360E_ISMA", "269", "0.747222" },
- { "1Y", "2008-02-29", "2009-02-27", "CONV_360E_ISMA", "358", "0.994444" },
- { "2Y", "2008-02-29", "2010-02-26", "CONV_360E_ISMA", "717", "1.991667" },
- { "3Y", "2008-02-29", "2011-02-28", "CONV_360E_ISMA", "1079", "2.997222" },
- { "4Y", "2008-02-29", "2012-02-29", "CONV_360E_ISMA", "1440", "4.000000" },
- { "5Y", "2008-02-29", "2013-02-28", "CONV_360E_ISMA", "1799", "4.997222" },
- { "7Y", "2008-02-29", "2015-02-27", "CONV_360E_ISMA", "2518", "6.994444" },
- { "10Y", "2008-02-29", "2018-02-28", "CONV_360E_ISMA", "3599", "9.997222" },
- { "15Y", "2008-02-29", "2023-02-28", "CONV_360E_ISMA", "5399", "14.997222" },
- { "20Y", "2008-02-29", "2028-02-29", "CONV_360E_ISMA", "7200", "20.000000" },
- { "30Y", "2008-02-29", "2038-02-26", "CONV_360E_ISMA", "10797", "29.991667" }
- // end of set
- };
-
- public void testConv30EvIsma() {
- final PeriodCountCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
- Assert.assertNotNull(cal);
-
- for (final String[] test : CONV_360E_ISMA) {
- runtest(cal, test);
- }
- }
-
- public void testConv30Ev360() {
- final PeriodCountCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
- Assert.assertNotNull(cal);
-
- for (final String[] test : CONV_360E_ISDA) {
- runtest(cal, test);
- }
- }
-
- public void testConv30v360() {
- final PeriodCountCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
- Assert.assertNotNull(cal);
-
- for (final String[] test : CONV_30_360) {
- runtest(cal, test);
- }
- }
-
- public void testAct365() {
- final PeriodCountCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
- Assert.assertNotNull(cal);
-
- for (final String[] test : ACT_365) {
- runtest(cal, test);
- }
- }
-
- public void testAct360() {
- final PeriodCountCalculator<Date> cal = DefaultJdkDateCalculatorFactory.getDefaultInstance().getPeriodCountCalculator();
- Assert.assertNotNull(cal);
-
- for (final String[] test : ACT_360) {
- runtest(cal, test);
- }
- }
-
- private void runtest(final PeriodCountCalculator<Date> cal, final String[] test) {
- final String name = test[0];
- final Date start = createDate(test[1]);
- final Date end = createDate(test[2]);
- final PeriodCountBasis pcount = PeriodCountBasis.valueOf(test[3]);
- final int dayDiff = Integer.parseInt(test[4]);
- Assert.assertEquals(name + " Basis:" + pcount + " start:" + start + " dayDiff", dayDiff, cal.dayDiff(start, end, pcount));
-
- final BigDecimal yearDiff = new BigDecimal(cal.yearDiff(start, end, pcount)).setScale(6, BigDecimal.ROUND_HALF_UP);
- Assert.assertTrue(name + " Basis:" + pcount + " yearDiff expected:" + test[5] + " got:" + yearDiff, (new BigDecimal(
- test[5])).compareTo(yearDiff) == 0);
- }
-
-}
\ No newline at end of file
Modified: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/PeriodCountCalculatorTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/PeriodCountCalculatorTest.java 2006-09-04 17:16:22 UTC (rev 97)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/PeriodCountCalculatorTest.java 2006-09-04 18:49:30 UTC (rev 98)
@@ -1,5 +1,7 @@
/*
+ * $Id$
* Copyright 2006 the original author or authors.
+ * Copyright 2006 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
@@ -15,393 +17,26 @@
*/
package net.objectlab.kit.datecalc.joda;
-import java.math.BigDecimal;
+import org.joda.time.LocalDate;
-import junit.framework.Assert;
-import junit.framework.TestCase;
-import net.objectlab.kit.datecalc.common.PeriodCountBasis;
+import net.objectlab.kit.datecalc.common.AbstractPeriodCountCalculator;
import net.objectlab.kit.datecalc.common.PeriodCountCalculator;
-import org.joda.time.LocalDate;
+public class PeriodCountCalculatorTest extends AbstractPeriodCountCalculator<LocalDate> {
-public class PeriodCountCalculatorTest extends TestCase {
-
- private static final String[][] ACT_365 = {
- // name start end period dayDiff yearDiff
- { "0D", "2006-08-08", "2006-08-08", "ACT_365", "0", "0.00" },
- { "1D", "2006-08-08", "2006-08-09", "ACT_365", "1", "0.002740" },
- { "1W", "2006-08-08", "2006-08-15", "ACT_365", "7", "0.019178" },
- { "1M", "2006-08-08", "2006-09-08", "ACT_365", "31", "0.084932" },
- { "3M", "2006-08-08", "2006-11-08", "ACT_365", "92", "0.252055" },
- { "6M", "2006-08-08", "2007-02-08", "ACT_365", "184", "0.504110" },
- { "9M", "2006-08-08", "2007-05-08", "ACT_365", "273", "0.747945" },
- { "1Y", "2006-08-08", "2007-08-08", "ACT_365", "365", "1.000000" },
- { "2Y", "2006-08-08", "2008-08-08", "ACT_365", "731", "2.002740" },
- { "3Y", "2006-08-08", "2009-08-10", "ACT_365", "1098", "3.008219" },
- { "4Y", "2006-08-08", "2010-08-09", "ACT_365", "1462", "4.005479" },
- { "5Y", "2006-08-08", "2011-08-08", "ACT_365", "1826", "5.002740" },
- { "7Y", "2006-08-08", "2013-08-08", "ACT_365", "2557", "7.005479" },
- { "10Y", "2006-08-08", "2016-08-08", "ACT_365", "3653", "10.008219" },
- { "15Y", "2006-08-08", "2021-08-09", "ACT_365", "5480", "15.013699" },
- { "20Y", "2006-08-08", "2026-08-10", "ACT_365", "7307", "20.019178" },
- { "30Y", "2006-08-08", "2036-08-08", "ACT_365", "10958", "30.021918" },
- // leap year - funny date...
- { "0D", "2008-02-29", "2008-02-29", "ACT_365", "0", "0.00" },
- { "1D", "2008-02-29", "2008-03-03", "ACT_365", "3", "0.008219" },
- { "1W", "2008-02-29", "2008-03-07", "ACT_365", "7", "0.019178" },
- { "1M", "2008-02-29", "2008-03-31", "ACT_365", "31", "0.084932" },
- { "3M", "2008-02-29", "2008-05-29", "ACT_365", "90", "0.246575" },
- { "6M", "2008-02-29", "2008-08-29", "ACT_365", "182", "0.498630" },
- { "9M", "2008-02-29", "2008-11-28", "ACT_365", "273", "0.747945" },
- { "1Y", "2008-02-29", "2009-02-27", "ACT_365", "364", "0.997260" },
- { "2Y", "2008-02-29", "2010-02-26", "ACT_365", "728", "1.994521" },
- { "3Y", "2008-02-29", "2011-02-28", "ACT_365", "1095", "3.000000" },
- { "4Y", "2008-02-29", "2012-02-29", "ACT_365", "1461", "4.002740" },
- { "5Y", "2008-02-29", "2013-02-28", "ACT_365", "1826", "5.002740" },
- { "7Y", "2008-02-29", "2015-02-27", "ACT_365", "2555", "7.000000" },
- { "10Y", "2008-02-29", "2018-02-28", "ACT_365", "3652", "10.005479" },
- { "15Y", "2008-02-29", "2023-02-28", "ACT_365", "5478", "15.008219" },
- { "20Y", "2008-02-29", "2028-02-29", "ACT_365", "7305", "20.013699" },
- { "30Y", "2008-02-29", "2038-02-26", "ACT_365", "10955", "30.013699" },
- // start date end of month...
- { "0D", "1998-12-31", "1998-12-31", "ACT_365", "0", "0.00" },
- { "1D", "1998-12-31", "1999-01-01", "ACT_365", "1", "0.002740" },
- { "1W", "1998-12-31", "1999-01-07", "ACT_365", "7", "0.019178" },
- { "1M", "1998-12-31", "1999-01-29", "ACT_365", "29", "0.079452" },
- { "3M", "1998-12-31", "1999-03-31", "ACT_365", "90", "0.246575" },
- { "6M", "1998-12-31", "1999-06-30", "ACT_365", "181", "0.495890" },
- { "9M", "1998-12-31", "1999-09-30", "ACT_365", "273", "0.747945" },
- { "1Y", "1998-12-31", "1999-12-31", "ACT_365", "365", "1.000000" },
- { "2Y", "1998-12-31", "2000-12-29", "ACT_365", "729", "1.997260" },
- { "3Y", "1998-12-31", "2001-12-31", "ACT_365", "1096", "3.002740" },
- { "4Y", "1998-12-31", "2002-12-31", "ACT_365", "1461", "4.002740" },
- { "5Y", "1998-12-31", "2003-12-31", "ACT_365", "1826", "5.002740" },
- { "7Y", "1998-12-31", "2005-12-30", "ACT_365", "2556", "7.002740" },
- { "10Y", "1998-12-31", "2008-12-31", "ACT_365", "3653", "10.008219" },
- { "15Y", "1998-12-31", "2013-12-31", "ACT_365", "5479", "15.010959" },
- { "20Y", "1998-12-31", "2018-12-31", "ACT_365", "7305", "20.013699" },
- { "30Y", "1998-12-31", "2028-12-29", "ACT_365", "10956", "30.016438" }
- // end of set
- };
-
- private static final String[][] ACT_360 = {
- // name start end period dayDiff yearDiff
- { "0D", "2006-08-08", "2006-08-08", "ACT_360", "0", "0.00" },
- { "1D", "2006-08-08", "2006-08-09", "ACT_360", "1", "0.002778" },
- { "1W", "2006-08-08", "2006-08-15", "ACT_360", "7", "0.019444" },
- { "1M", "2006-08-08", "2006-09-08", "ACT_360", "31", "0.086111" },
- { "3M", "2006-08-08", "2006-11-08", "ACT_360", "92", "0.255556" },
- { "6M", "2006-08-08", "2007-02-08", "ACT_360", "184", "0.511111" },
- { "9M", "2006-08-08", "2007-05-08", "ACT_360", "273", "0.758333" },
- { "1Y", "2006-08-08", "2007-08-08", "ACT_360", "365", "1.013889" },
- { "2Y", "2006-08-08", "2008-08-08", "ACT_360", "731", "2.030556" },
- { "3Y", "2006-08-08", "2009-08-10", "ACT_360", "1098", "3.050000" },
- { "4Y", "2006-08-08", "2010-08-09", "ACT_360", "1462", "4.061111" },
- { "5Y", "2006-08-08", "2011-08-08", "ACT_360", "1826", "5.072222" },
- { "7Y", "2006-08-08", "2013-08-08", "ACT_360", "2557", "7.102778" },
- { "10Y", "2006-08-08", "2016-08-08", "ACT_360", "3653", "10.147222" },
- { "15Y", "2006-08-08", "2021-08-09", "ACT_360", "5480", "15.222222" },
- { "20Y", "2006-08-08", "2026-08-10", "ACT_360", "7307", "20.297222" },
- { "30Y", "2006-08-08", "2036-08-08", "ACT_360", "10958", "30.438889" },
- // leap year - funny date...
- { "0D", "2008-02-29", "2008-02-29", "ACT_360", "0", "0.00" },
- { "1D", "2008-02-29", "2008-03-03", "ACT_360", "3", "0.008333" },
- { "1W", "2008-02-29", "2008-03-07", "ACT_360", "7", "0.019444" },
- { "1M", "2008-02-29", "2008-03-31", "ACT_360", "31", "0.086111" },
- { "3M", "2008-02-29", "2008-05-29", "ACT_360", "90", "0.250000" },
- { "6M", "2008-02-29", "2008-08-29", "ACT_360", "182", "0.505556" },
- { "9M", "2008-02-29", "2008-11-28", "ACT_360", "273", "0.758333" },
- { "1Y", "2008-02-29", "2009-02-27", "ACT_360", "364", "1.011111" },
- { "2Y", "2008-02-29", "2010-02-26", "ACT_360", "728", "2.022222" },
- { "3Y", "2008-02-29", "2011-02-28", "ACT_360", "1095", "3.041667" },
- { "4Y", "2008-02-29", "2012-02-29", "ACT_360", "1461", "4.058333" },
- { "5Y", "2008-02-29", "2013-02-28", "ACT_360", "1826", "5.072222" },
- { "7Y", "2008-02-29", "2015-02-27", "ACT_360", "2555", "7.097222" },
- { "10Y", "2008-02-29", "2018-02-28", "ACT_360", "3652", "10.144444" },
- { "15Y", "2008-02-29", "2023-02-28", "ACT_360", "5478", "15.216667" },
- { "20Y", "2008-02-29", "2028-02-29", "ACT_360", "7305", "20.291667" },
- { "30Y", "2008-02-29", "2038-02-26", "ACT_360", "10955", "30.430556" },
- // start date end of month...
- { "0D", "1998-12-31", "1998-12-31", "ACT_360", "0", "0.00" },
- { "1D", "1998-12-31", "1999-01-01", "ACT_360", "1", "0.002778" },
- { "1W", "1998-12-31", "1999-01-07", "ACT_360", "7", "0.019444" },
- { "1M", "1998-12-31", "1999-01-29", "ACT_360", "29", "0.080556" },
- { "3M", "1998-12-31", "1999-03-31", "ACT_360", "90", "0.250000" },
- { "6M", "1998-12-31", "1999-06-30", "ACT_360", "181", "0.502778" },
- { "9M", "1998-12-31", "1999-09-30", "ACT_360", "273", "0.758333" },
- { "1Y", "1998-12-31", "1999-12-31", "ACT_360", "365", "1.013889" },
- { "2Y", "1998-12-31", "2000-12-29", "ACT_360", "729", "2.025000" },
- { "3Y", "1998-12-31", "2001-12-31", "ACT_360", "1096", "3.044444" },
- { "4Y", "1998-12-31", "2002-12-31", "ACT_360", "1461", "4.058333" },
- { "5Y", "1998-12-31", "2003-12-31", "ACT_360", "1826", "5.072222" },
- { "7Y", "1998-12-31", "2005-12-30", "ACT_360", "2556", "7.100000" },
- { "10Y", "1998-12-31", "2008-12-31", "ACT_360", "3653", "10.147222" },
- { "15Y", "1998-12-31", "2013-12-31", "ACT_360", "5479", "15.219444" },
- { "20Y", "1998-12-31", "2018-12-31", "ACT_360", "7305", "20.291667" },
- { "30Y", "1998-12-31", "2028-12-29", "ACT_360", "10956", "30.433333" }
- // end of set
- };
-
- private static final String[][] CONV_30_360 = {
- // name start end period dayDiff yearDiff
- { "0D", "2006-08-08", "2006-08-08", "CONV_30_360", "0", "0.00" },
- { "1D", "2006-08-08", "2006-08-09", "CONV_30_360", "1", "0.002778" },
- { "1W", "2006-08-08", "2006-08-15", "CONV_30_360", "7", "0.019444" },
- { ...
[truncated message content] |