|
From: <be...@us...> - 2006-09-07 17:24:55
|
Revision: 125
http://svn.sourceforge.net/objectlabkit/?rev=125&view=rev
Author: benoitx
Date: 2006-09-07 10:24:20 -0700 (Thu, 07 Sep 2006)
Log Message:
-----------
Added more tests to JDK and Joda for factory tests (genericesed ie). That spotted a couple of bugs!
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/AbstractDateCalculatorFactory.java
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java
trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java
trunk/datecalc-joda/.classpath
trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java
trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.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/YearMonthDayDateCalculator.java
Added Paths:
-----------
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java
trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorTest.java
trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateCalculatorFactoryTest.java
trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayCalculatorFactoryTest.java
Removed Paths:
-------------
trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java
trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/AbstractDateCalculatorTest.java
trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactoryTest.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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculator.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -61,9 +61,14 @@
}
public E getStartDate() {
+ if (startDate == null) {
+ startDate = getToday();
+ }
return startDate;
}
+ protected abstract E getToday();
+
/** Set both start date and current date */
public void setStartDate(final E startDate) {
this.startDate = startDate;
@@ -71,6 +76,9 @@
}
public E getCurrentBusinessDate() {
+ if (currentBusinessDate == null) {
+ currentBusinessDate = getToday();
+ }
return currentBusinessDate;
}
@@ -127,6 +135,9 @@
}
public boolean isCurrentDateNonWorking() {
+ if (currentBusinessDate == null) {
+ currentBusinessDate = getToday();
+ }
return isNonWorkingDay(currentBusinessDate);
}
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactory.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -47,7 +47,7 @@
public void registerHolidays(final String name, final Set<E> holidaysSet) {
this.holidays.put(name, holidaysSet);
}
-
+
protected void setHolidays(final String name, final DateCalculator<E> dc) {
if (holidays.containsKey(name)) {
dc.setNonWorkingDays(holidays.get(name));
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/DateCalculatorFactory.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -45,8 +45,10 @@
* holidays with that name, it will return a DateCalculator with
* an empty holiday set (will work on Weekend only).
* @param type
- * typically one of the value of HolidayHandlerType
+ * typically one of the value of HolidayHandlerType or null.
* @return a new DateCalculator
+ * @exception IllegalArgumentException
+ * if the type is not null or a valid value.
*/
DateCalculator<E> getDateCalculator(final String name, final String holidayHandlerType);
Modified: trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java
===================================================================
--- trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-common/src/main/java/net/objectlab/kit/datecalc/common/Utils.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -48,8 +48,12 @@
}
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
+ return blastTime(cal);
+ }
+
+ public static Calendar blastTime(final Calendar cal) {
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
- cal.set(Calendar.HOUR, 0);
+ cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
@@ -59,12 +63,15 @@
/**
*
* @param str
- * string
- * @return
+ * string (return today if string is null)
+ * @return today if
* @throws IllegalArgumentException
* if the string cannot be parsed.
*/
public static Date createDate(final String str) {
+ if (str == null) {
+ return createCalendar(null).getTime();
+ }
try {
final Date date = SDF.parse(str);
final Calendar cal = getCal(date);
@@ -83,6 +90,9 @@
* if the string cannot be parsed.
*/
public static Calendar createCalendar(final String str) {
+ if (str == null) {
+ return blastTime(Calendar.getInstance());
+ }
try {
final Date date = SDF.parse(str);
final Calendar cal = getCal(date);
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorFactoryTest.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -0,0 +1,111 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.util.Set;
+
+import junit.framework.Assert;
+
+public abstract class AbstractDateCalculatorFactoryTest<E> extends AbstractDateTestCase<E> {
+
+ public void testGetCalendarsNoHoliday() {
+ final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+ Assert.assertNotNull("cal1", cal1);
+ Assert.assertEquals("name", "bla", cal1.getName());
+ Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
+
+ final DateCalculator<E> cal2 = getDateCalculatorFactory().getDateCalculator("bla", null);
+ Assert.assertNotNull("cal2", cal2);
+ Assert.assertEquals("name", "bla", cal2.getName());
+ Assert.assertTrue("no holiday", cal2.getNonWorkingDays().isEmpty());
+ Assert.assertNotSame(cal1, cal2);
+ }
+
+ public void testGetCalendarsNoHolidayButSomeRegistered() {
+ final Set<E> uk = createUKHolidays();
+ getDateCalculatorFactory().registerHolidays("UK", uk);
+
+ final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+ Assert.assertNotNull("cal1", cal1);
+ Assert.assertEquals("name", "bla", cal1.getName());
+ Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
+
+ final DateCalculator<E> cal2 = getDateCalculatorFactory().getDateCalculator("UK", null);
+ Assert.assertNotNull("cal2", cal2);
+ Assert.assertEquals("name cal2", "UK", cal2.getName());
+ Assert.assertEquals("UK holidays", 4, cal2.getNonWorkingDays().size());
+ Assert.assertNotSame(cal1, cal2);
+ }
+
+ public void testGetCorrectAlgo() {
+ DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+
+ Assert.assertNull("No algo", cal1.getHolidayHandlerType());
+ cal1 = getDateCalculatorFactory().getDateCalculator("bla", HolidayHandlerType.BACKWARD);
+ Assert.assertEquals("Type", HolidayHandlerType.BACKWARD, cal1.getHolidayHandlerType());
+
+ cal1 = getDateCalculatorFactory().getDateCalculator("bla", HolidayHandlerType.FORWARD);
+ Assert.assertEquals("Type", HolidayHandlerType.FORWARD, cal1.getHolidayHandlerType());
+
+ cal1 = getDateCalculatorFactory().getDateCalculator("bla", HolidayHandlerType.MODIFIED_FOLLLOWING);
+ Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_FOLLLOWING, cal1.getHolidayHandlerType());
+
+ cal1 = getDateCalculatorFactory().getDateCalculator("bla", HolidayHandlerType.MODIFIED_PRECEEDING);
+ Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_PRECEEDING, cal1.getHolidayHandlerType());
+ }
+
+ public void testGetIncorrectAlgo() {
+ try {
+ getDateCalculatorFactory().getDateCalculator("bla", "bliobl");
+ fail("Should have thrown UnsupportedOperationException");
+ } catch (final IllegalArgumentException e) {
+ // all ok
+ }
+ }
+
+ public void testSetHol() {
+ final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+
+ Assert.assertNotNull("No algo", cal1);
+ Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
+ Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
+
+ cal1.setNonWorkingDays(null);
+ Assert.assertNotNull("empty", cal1.getNonWorkingDays());
+ Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
+ }
+
+ public void testUseDefault() {
+ final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("bla", null);
+
+ Assert.assertNotNull("No algo", cal1);
+ Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
+ Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
+
+ E date = cal1.moveByDays(0).getCurrentBusinessDate();
+ Assert.assertEquals("default today", newDate(null), date);
+
+ cal1.setStartDate(null);
+ date = cal1.moveByDays(0).getCurrentBusinessDate();
+ Assert.assertEquals("default today", newDate(null), date);
+
+ cal1.setStartDate(newDate("2006-08-08"));
+ cal1.setCurrentBusinessDate(null);
+ date = cal1.moveByDays(0).getCurrentBusinessDate();
+ Assert.assertEquals("default today", newDate(null), date);
+ }
+
+ public void testHolNoAlgo() {
+ final Set<E> uk = createUKHolidays();
+ getDateCalculatorFactory().registerHolidays("UK", uk);
+ final DateCalculator<E> cal1 = getDateCalculatorFactory().getDateCalculator("UK", null);
+
+ Assert.assertNotNull("No algo", cal1);
+ Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
+ Assert.assertTrue("non empty hol", !cal1.getNonWorkingDays().isEmpty());
+
+ cal1.setCurrentBusinessDate(newDate("2006-12-25"));
+ Assert.assertTrue("current date is holiday", cal1.isCurrentDateNonWorking());
+
+ cal1.setCurrentBusinessDate(newDate("2006-12-24"));
+ Assert.assertTrue("current date is weekend", cal1.isCurrentDateNonWorking());
+ }
+}
Added: trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorTest.java
===================================================================
--- trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorTest.java (rev 0)
+++ trunk/datecalc-common/src/test/java/net/objectlab/kit/datecalc/common/AbstractDateCalculatorTest.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -0,0 +1,35 @@
+package net.objectlab.kit.datecalc.common;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+public abstract class AbstractDateCalculatorTest extends TestCase {
+
+ public AbstractDateCalculatorTest() {
+ super();
+ }
+
+ protected Date createDate(final String str) {
+ return Utils.createDate(str);
+ }
+
+ protected Set<Date> createUKHolidays() {
+ final Set<Date> uk = new HashSet<Date>();
+ uk.add(createDate("2006-01-01"));
+ uk.add(createDate("2006-08-28"));
+ uk.add(createDate("2006-12-25"));
+ uk.add(createDate("2006-12-26"));
+ return uk;
+ }
+
+ protected Set<Date> createUSHolidays() {
+ final Set<Date> us = new HashSet<Date>();
+ us.add(createDate("2006-07-04"));
+ us.add(createDate("2006-11-28"));
+ us.add(createDate("2006-12-25"));
+ return us;
+ }
+}
\ No newline at end of file
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkCalendarCalculatorFactory.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -66,7 +66,7 @@
} else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
cal.setHolidayHandler(new CalendarModifiedPreceedingHandler());
} else {
- throw new UnsupportedOperationException("Unsupported HolidayHandler: " + holidayHandlerType);
+ throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
}
return cal;
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/DefaultJdkDateCalculatorFactory.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -66,7 +66,7 @@
} else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
cal.setHolidayHandler(new DateModifiedPreceedingHandler());
} else {
- throw new UnsupportedOperationException("Unsupported HolidayHandler: " + holidayHandlerType);
+ throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
}
return cal;
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkCalendarBaseDateCalculator.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -25,6 +25,7 @@
import net.objectlab.kit.datecalc.common.DateCalculator;
import net.objectlab.kit.datecalc.common.HolidayHandler;
import net.objectlab.kit.datecalc.common.Tenor;
+import net.objectlab.kit.datecalc.common.Utils;
import net.objectlab.kit.datecalc.common.WorkingWeek;
/**
@@ -48,7 +49,11 @@
public JdkCalendarBaseDateCalculator(final String name, final Calendar startDate, final Set<Calendar> nonWorkingDays,
final HolidayHandler<Calendar> holidayHandler) {
super(name, nonWorkingDays, holidayHandler);
- setStartDate(startDate);
+ Calendar date = startDate;
+ if (date == null) {
+ date = getToday();
+ }
+ setStartDate(date);
}
public void setWorkingWeek(final WorkingWeek week) {
@@ -104,4 +109,9 @@
public JdkCalendarBaseDateCalculator moveByBusinessDays(final int businessDays) {
return (JdkCalendarBaseDateCalculator) super.moveByBusinessDays(businessDays);
}
+
+ @Override
+ protected Calendar getToday() {
+ return Utils.blastTime(Calendar.getInstance());
+ }
}
Modified: trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java
===================================================================
--- trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/main/java/net/objectlab/kit/datecalc/jdk/JdkDateBaseDateCalculator.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -49,13 +49,17 @@
public JdkDateBaseDateCalculator(final String name, final Date startDate, final Set<Date> nonWorkingDays,
final HolidayHandler<Date> holidayHandler) {
super(name, nonWorkingDays, holidayHandler);
-
+ Date date = startDate;
final HolidayHandler<Calendar> locDate = new HolidayHandlerDateWrapper(holidayHandler, this);
final Set<Calendar> nonWorkingCalendars = Utils.toCalendarSet(nonWorkingDays);
- delegate = new JdkCalendarBaseDateCalculator(name, Utils.getCal(startDate), nonWorkingCalendars, locDate);
- setStartDate(startDate);
- delegate.setStartDate(Utils.getCal(startDate));
+ if (date == null) {
+ date = getToday();
+ }
+
+ delegate = new JdkCalendarBaseDateCalculator(name, Utils.getCal(date), nonWorkingCalendars, locDate);
+ delegate.setStartDate(Utils.getCal(date));
+ setStartDate(date);
}
// TODO throw an exception if the type is incorrect
@@ -67,7 +71,7 @@
* is the date a non-working day according to the WorkingWeek?
*/
public boolean isWeekend(final Date date) {
- if (date != null) {
+ if (date != null && delegate != null) {
return delegate.isWeekend(Utils.getCal(date));
}
return false;
@@ -92,4 +96,9 @@
}
super.setStartDate(startDate);
}
+
+ @Override
+ protected Date getToday() {
+ return Utils.blastTime(Calendar.getInstance()).getTime();
+ }
}
Deleted: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/AbstractDateCalculatorTest.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -1,36 +0,0 @@
-package net.objectlab.kit.datecalc.jdk;
-
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import junit.framework.TestCase;
-import net.objectlab.kit.datecalc.common.Utils;
-
-public abstract class AbstractDateCalculatorTest extends TestCase {
-
- public AbstractDateCalculatorTest() {
- super();
- }
-
- protected Date createDate(final String str) {
- return Utils.createDate(str);
- }
-
- protected Set<Date> createUKHolidays() {
- final Set<Date> uk = new HashSet<Date>();
- uk.add(createDate("2006-01-01"));
- uk.add(createDate("2006-08-28"));
- uk.add(createDate("2006-12-25"));
- uk.add(createDate("2006-12-26"));
- return uk;
- }
-
- protected Set<Date> createUSHolidays() {
- final Set<Date> us = new HashSet<Date>();
- us.add(createDate("2006-07-04"));
- us.add(createDate("2006-11-28"));
- us.add(createDate("2006-12-25"));
- return us;
- }
-}
\ No newline at end of file
Modified: trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java
===================================================================
--- trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-jdk/src/test/java/net/objectlab/kit/datecalc/jdk/DateCalculatorFactoryTest.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -1,60 +1,20 @@
package net.objectlab.kit.datecalc.jdk;
import java.util.Date;
-import java.util.Set;
-import junit.framework.Assert;
-import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
+import net.objectlab.kit.datecalc.common.AbstractDateCalculatorFactoryTest;
+import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+import net.objectlab.kit.datecalc.common.Utils;
-public class DateCalculatorFactoryTest extends AbstractDateCalculatorTest {
+public class DateCalculatorFactoryTest extends AbstractDateCalculatorFactoryTest<Date> {
- public void testGetCalendarsNoHoliday() {
- final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
- Assert.assertNotNull("cal1", cal1);
- Assert.assertEquals("name", "bla", cal1.getName());
- Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
-
- final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
- Assert.assertNotNull("cal2", cal2);
- Assert.assertEquals("name", "bla", cal2.getName());
- Assert.assertTrue("no holiday", cal2.getNonWorkingDays().isEmpty());
- Assert.assertNotSame(cal1, cal2);
+ @Override
+ protected Date newDate(final String date) {
+ return Utils.createDate(date);
}
- public void testGetCalendarsNoHolidayButSomeRegistered() {
- final Set<Date> uk = createUKHolidays();
- DefaultJdkDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", uk);
-
- final DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
- Assert.assertNotNull("cal1", cal1);
- Assert.assertEquals("name", "bla", cal1.getName());
- Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
-
- final DateCalculator<Date> cal2 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK", null);
- Assert.assertNotNull("cal2", cal2);
- Assert.assertEquals("name cal2", "UK", cal2.getName());
- Assert.assertEquals("UK holidays", 4, cal2.getNonWorkingDays().size());
- Assert.assertNotSame(cal1, cal2);
+ @Override
+ protected DateCalculatorFactory<Date> getDateCalculatorFactory() {
+ return DefaultJdkDateCalculatorFactory.getDefaultInstance();
}
-
- public void testGetCorrectAlgo() {
- DateCalculator<Date> cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
-
- Assert.assertNull("No algo", cal1.getHolidayHandlerType());
- cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.BACKWARD);
- Assert.assertEquals("Type", HolidayHandlerType.BACKWARD, cal1.getHolidayHandlerType());
-
- cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD);
- Assert.assertEquals("Type", HolidayHandlerType.FORWARD, cal1.getHolidayHandlerType());
-
- cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- HolidayHandlerType.MODIFIED_FOLLLOWING);
- Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_FOLLLOWING, cal1.getHolidayHandlerType());
-
- cal1 = DefaultJdkDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- HolidayHandlerType.MODIFIED_PRECEEDING);
- Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_PRECEEDING, cal1.getHolidayHandlerType());
-
- }
}
Modified: trunk/datecalc-joda/.classpath
===================================================================
--- trunk/datecalc-joda/.classpath 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/.classpath 2006-09-07 17:24:20 UTC (rev 125)
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry output="target/test-classes" kind="src" path="src/test/java"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.3/joda-time-1.3.jar"/>
- <classpathentry combineaccessrules="false" kind="src" path="/datecalc-common"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="output" path="target/classes"/>
+ <classpathentry path="src/main/java" kind="src"/>
+ <classpathentry path="src/test/java" output="target/test-classes" kind="src"/>
+ <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/>
+ <classpathentry sourcepath="/JODA_TIME_SRC" path="M2_REPO/joda-time/joda-time/1.3/joda-time-1.3.jar" kind="var"/>
+ <classpathentry path="/datecalc-common" combineaccessrules="false" kind="src"/>
+ <classpathentry path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" kind="var"/>
+ <classpathentry path="target/classes" kind="output"/>
</classpath>
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultLocalDateCalculatorFactory.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -58,6 +58,8 @@
cal.setHolidayHandler(new LocalDateModifiedFollowingHandler());
} else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
cal.setHolidayHandler(new LocalDateModifiedPreceedingHandler());
+ } else if (holidayHandlerType != null) {
+ throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
}
return cal;
}
Modified: trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java
===================================================================
--- trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/DefaultYearMonthDayCalculatorFactory.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -60,6 +60,8 @@
cal.setHolidayHandler(new YearMonthDayModifiedFollowingHandler());
} else if (HolidayHandlerType.MODIFIED_PRECEEDING.equals(holidayHandlerType)) {
cal.setHolidayHandler(new YearMonthDayModifiedPreceedingHandler());
+ } else if (holidayHandlerType != null) {
+ throw new IllegalArgumentException("Unsupported HolidayHandler: " + holidayHandlerType);
}
return cal;
}
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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/LocalDateCalculator.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -88,4 +88,9 @@
final Set<LocalDate> holidays, final HolidayHandler<LocalDate> handler) {
return new LocalDateCalculator(name, startDate, holidays, handler);
}
+
+ @Override
+ protected LocalDate getToday() {
+ return new LocalDate();
+ }
}
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-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/main/java/net/objectlab/kit/datecalc/joda/YearMonthDayDateCalculator.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -67,7 +67,7 @@
* is the date a non-working day according to the WorkingWeek?
*/
public boolean isWeekend(final YearMonthDay date) {
- if (date != null) {
+ if (date != null && delegate != null) {
return delegate.isWeekend(date.toLocalDate());
}
return false;
@@ -92,4 +92,9 @@
}
super.setStartDate(startDate);
}
+
+ @Override
+ protected YearMonthDay getToday() {
+ return new YearMonthDay();
+ }
}
Deleted: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/AbstractDateCalculatorTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/AbstractDateCalculatorTest.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/AbstractDateCalculatorTest.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -1,32 +0,0 @@
-package net.objectlab.kit.datecalc.joda;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.joda.time.LocalDate;
-
-public abstract class AbstractDateCalculatorTest extends TestCase {
-
- public AbstractDateCalculatorTest() {
- super();
- }
-
- protected Set<LocalDate> createUKHolidays() {
- final Set<LocalDate> uk = new HashSet<LocalDate>();
- uk.add(new LocalDate("2006-01-01"));
- uk.add(new LocalDate("2006-08-28"));
- uk.add(new LocalDate("2006-12-25"));
- uk.add(new LocalDate("2006-12-26"));
- return uk;
- }
-
- protected Set<LocalDate> createUSHolidays() {
- final Set<LocalDate> us = new HashSet<LocalDate>();
- us.add(new LocalDate("2006-07-04"));
- us.add(new LocalDate("2006-11-28"));
- us.add(new LocalDate("2006-12-25"));
- return us;
- }
-}
\ No newline at end of file
Deleted: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactoryTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactoryTest.java 2006-09-07 14:48:06 UTC (rev 124)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/DateCalculatorFactoryTest.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -1,117 +0,0 @@
-package net.objectlab.kit.datecalc.joda;
-
-import java.util.Set;
-
-import junit.framework.Assert;
-import net.objectlab.kit.datecalc.common.DateCalculator;
-import net.objectlab.kit.datecalc.common.HolidayHandlerType;
-
-import org.joda.time.LocalDate;
-
-public class DateCalculatorFactoryTest extends AbstractDateCalculatorTest {
-
- public void testGetCalendarsNoHoliday() {
- final DateCalculator<LocalDate> cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- null);
- Assert.assertNotNull("cal1", cal1);
- Assert.assertEquals("name", "bla", cal1.getName());
- Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
-
- final DateCalculator<LocalDate> cal2 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- null);
- Assert.assertNotNull("cal2", cal2);
- Assert.assertEquals("name", "bla", cal2.getName());
- Assert.assertTrue("no holiday", cal2.getNonWorkingDays().isEmpty());
- Assert.assertNotSame(cal1, cal2);
- }
-
- public void testGetCalendarsNoHolidayButSomeRegistered() {
- final Set<LocalDate> uk = createUKHolidays();
- DefaultLocalDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", uk);
-
- final DateCalculator<LocalDate> cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- null);
- Assert.assertNotNull("cal1", cal1);
- Assert.assertEquals("name", "bla", cal1.getName());
- Assert.assertTrue("no holiday", cal1.getNonWorkingDays().isEmpty());
-
- final DateCalculator<LocalDate> cal2 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK",
- null);
- Assert.assertNotNull("cal2", cal2);
- Assert.assertEquals("name cal2", "UK", cal2.getName());
- Assert.assertEquals("UK holidays", 4, cal2.getNonWorkingDays().size());
- Assert.assertNotSame(cal1, cal2);
- }
-
- public void testGetCorrectAlgo() {
- DateCalculator<LocalDate> cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", null);
-
- Assert.assertNull("No algo", cal1.getHolidayHandlerType());
- cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.BACKWARD);
- Assert.assertEquals("Type", HolidayHandlerType.BACKWARD, cal1.getHolidayHandlerType());
-
- cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla", HolidayHandlerType.FORWARD);
- Assert.assertEquals("Type", HolidayHandlerType.FORWARD, cal1.getHolidayHandlerType());
-
- cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- HolidayHandlerType.MODIFIED_FOLLLOWING);
- Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_FOLLLOWING, cal1.getHolidayHandlerType());
-
- cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- HolidayHandlerType.MODIFIED_PRECEEDING);
- Assert.assertEquals("Type", HolidayHandlerType.MODIFIED_PRECEEDING, cal1.getHolidayHandlerType());
-
- }
-
- public void testSetHol() {
- final DateCalculator<LocalDate> cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- null);
-
- Assert.assertNotNull("No algo", cal1);
- Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
- Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
-
- cal1.setNonWorkingDays(null);
- Assert.assertNotNull("empty", cal1.getNonWorkingDays());
- Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
- }
-
- public void testUseDefault() {
- final DateCalculator<LocalDate> cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("bla",
- null);
-
- Assert.assertNotNull("No algo", cal1);
- Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
- Assert.assertTrue("empty hol", cal1.getNonWorkingDays().isEmpty());
-
- LocalDate date = cal1.moveByDays(0).getCurrentBusinessDate();
- Assert.assertEquals("default today", new LocalDate(), date);
-
- cal1.setStartDate(null);
- date = cal1.moveByDays(0).getCurrentBusinessDate();
- Assert.assertEquals("default today", new LocalDate(), date);
-
- cal1.setStartDate(new LocalDate("2006-08-08"));
- cal1.setCurrentBusinessDate(null);
- date = cal1.moveByDays(0).getCurrentBusinessDate();
- Assert.assertEquals("default today", new LocalDate(), date);
- }
-
- public void testHolNoAlgo() {
- final Set<LocalDate> uk = createUKHolidays();
- DefaultLocalDateCalculatorFactory.getDefaultInstance().registerHolidays("UK", uk);
- final DateCalculator<LocalDate> cal1 = DefaultLocalDateCalculatorFactory.getDefaultInstance().getDateCalculator("UK",
- null);
-
- Assert.assertNotNull("No algo", cal1);
- Assert.assertNotNull("No hol", cal1.getNonWorkingDays());
- Assert.assertTrue("non empty hol", !cal1.getNonWorkingDays().isEmpty());
-
- cal1.setCurrentBusinessDate(new LocalDate("2006-12-25"));
- Assert.assertTrue("current date is holiday", cal1.isCurrentDateNonWorking());
-
- cal1.setCurrentBusinessDate(new LocalDate("2006-12-24"));
- Assert.assertTrue("current date is weekend", cal1.isCurrentDateNonWorking());
-
- }
-}
Added: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateCalculatorFactoryTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateCalculatorFactoryTest.java (rev 0)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/LocalDateCalculatorFactoryTest.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -0,0 +1,19 @@
+package net.objectlab.kit.datecalc.joda;
+
+import net.objectlab.kit.datecalc.common.AbstractDateCalculatorFactoryTest;
+import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+
+import org.joda.time.LocalDate;
+
+public class LocalDateCalculatorFactoryTest extends AbstractDateCalculatorFactoryTest<LocalDate> {
+
+ @Override
+ protected LocalDate newDate(final String date) {
+ return new LocalDate(date);
+ }
+
+ @Override
+ protected DateCalculatorFactory<LocalDate> getDateCalculatorFactory() {
+ return DefaultLocalDateCalculatorFactory.getDefaultInstance();
+ }
+}
Added: trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayCalculatorFactoryTest.java
===================================================================
--- trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayCalculatorFactoryTest.java (rev 0)
+++ trunk/datecalc-joda/src/test/java/net/objectlab/kit/datecalc/joda/YearMonthDayCalculatorFactoryTest.java 2006-09-07 17:24:20 UTC (rev 125)
@@ -0,0 +1,19 @@
+package net.objectlab.kit.datecalc.joda;
+
+import net.objectlab.kit.datecalc.common.AbstractDateCalculatorFactoryTest;
+import net.objectlab.kit.datecalc.common.DateCalculatorFactory;
+
+import org.joda.time.YearMonthDay;
+
+public class YearMonthDayCalculatorFactoryTest extends AbstractDateCalculatorFactoryTest<YearMonthDay> {
+
+ @Override
+ protected YearMonthDay newDate(final String date) {
+ return new YearMonthDay(date);
+ }
+
+ @Override
+ protected DateCalculatorFactory<YearMonthDay> getDateCalculatorFactory() {
+ return DefaultYearMonthDayCalculatorFactory.getDefaultInstance();
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|