You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2010/01/28 10:37:29 UTC
svn commit: r904012 [2/2] - in /commons/proper/lang/branches/LANG_2_X/src:
pending/ test/java/org/apache/commons/lang/time/
Modified: commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/time/DateUtilsRoundingTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/time/DateUtilsRoundingTest.java?rev=904012&r1=904011&r2=904012&view=diff
==============================================================================
--- commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/time/DateUtilsRoundingTest.java (original)
+++ commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/time/DateUtilsRoundingTest.java Thu Jan 28 09:37:28 2010
@@ -50,664 +50,664 @@
return suite;
}
- DateFormat dateTimeParser;
-
- Date januaryOneDate;
- Date targetYearDate;
- //No targetMonths, these must be tested for every type of month(28-31 days)
- Date targetDateDate, targetDayOfMonthDate, targetAmDate, targetPmDate;
- Date targetHourOfDayDate, targetHourDate;
- Date targetMinuteDate;
- Date targetSecondDate;
- Date targetMilliSecondDate;
-
- Calendar januaryOneCalendar;
- FastDateFormat fdf = DateFormatUtils.ISO_DATETIME_FORMAT;
-
- protected void setUp() throws Exception {
- super.setUp();
- dateTimeParser = new SimpleDateFormat("MMM dd, yyyy H:mm:ss.SSS", Locale.ENGLISH);
-
- targetYearDate = dateTimeParser.parse("January 1, 2007 0:00:00.000");
- targetDateDate = targetDayOfMonthDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
- targetAmDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
- targetPmDate = dateTimeParser.parse("June 1, 2008 12:00:00.000");
- targetHourDate = dateTimeParser.parse("June 1, 2008 8:00:00.000");
- targetHourOfDayDate = dateTimeParser.parse("June 1, 2008 8:00:00.000");
- targetMinuteDate = dateTimeParser.parse("June 1, 2008 8:15:00.000");
- targetSecondDate = dateTimeParser.parse("June 1, 2008 8:15:14.000");
- targetMilliSecondDate = dateTimeParser.parse("June 1, 2008 8:15:14.231");
-
- januaryOneDate = dateTimeParser.parse("January 1, 2008 0:00:00.000");
- januaryOneCalendar = Calendar.getInstance();
- januaryOneCalendar.setTime(januaryOneDate);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.Year
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundYear() throws Exception {
- final int calendarField = Calendar.YEAR;
- Date roundedUpDate = dateTimeParser.parse("January 1, 2008 0:00:00.000");
- Date roundedDownDate = targetYearDate;
- Date lastRoundedDownDate = dateTimeParser.parse("June 30, 2007 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.MONTH
- * Includes rounding months with 28, 29, 30 and 31 days
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundMonth() throws Exception {
- final int calendarField = Calendar.MONTH;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- //month with 28 days
- roundedUpDate = dateTimeParser.parse("March 1, 2007 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("February 14, 2007 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 29 days
- roundedUpDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("February 15, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 30 days
- roundedUpDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("April 15, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 31 days
- roundedUpDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("May 16, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 17, 2007 00:00:00.000");
- maxDate = dateTimeParser.parse("January 16, 2008 23:59:59.999");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with DateUtils.SEMI_MONTH
- * Includes rounding months with 28, 29, 30 and 31 days, each with first and second half
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundSemiMonth() throws Exception {
- final int calendarField = DateUtils.SEMI_MONTH;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- //month with 28 days (1)
- roundedUpDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("February 8, 2007 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 28 days (2)
- roundedUpDate = dateTimeParser.parse("March 1, 2007 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("February 23, 2007 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 29 days (1)
- roundedUpDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("February 8, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 29 days (2)
- roundedUpDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("February 23, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 30 days (1)
- roundedUpDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("April 8, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 30 days (2)
- roundedUpDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("April 23, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 31 days (1)
- roundedUpDate = dateTimeParser.parse("May 16, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("May 8, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //month with 31 days (2)
- roundedUpDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
- roundedDownDate = dateTimeParser.parse("May 16, 2008 0:00:00.000");
- lastRoundedDownDate = dateTimeParser.parse("May 23, 2008 23:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 24, 2007 00:00:00.000");
- maxDate = dateTimeParser.parse("January 8, 2008 23:59:59.999");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.DATE
- * Includes rounding the extremes of one day
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundDate() throws Exception {
- final int calendarField = Calendar.DATE;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
- roundedDownDate = targetDateDate;
- lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 31, 2007 12:00:00.000");
- maxDate = dateTimeParser.parse("January 1, 2008 11:59:59.999");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.DAY_OF_MONTH
- * Includes rounding the extremes of one day
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundDayOfMonth() throws Exception {
- final int calendarField = Calendar.DAY_OF_MONTH;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
- roundedDownDate = targetDayOfMonthDate;
- lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 31, 2007 12:00:00.000");
- maxDate = dateTimeParser.parse("January 1, 2008 11:59:59.999");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.AM_PM
- * Includes rounding the extremes of both AM and PM of one day
- * Includes rounding to January 1
- *
- * @throws Exception
- * @3.0
- */
- public void testRoundAmPm() throws Exception {
- final int calendarField = Calendar.AM_PM;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- //AM
- roundedUpDate = dateTimeParser.parse("June 1, 2008 12:00:00.000");
- roundedDownDate = targetAmDate;
- lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 5:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //PM
- roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
- roundedDownDate = targetPmDate;
- lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 17:59:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 31, 2007 18:00:00.000");
- maxDate = dateTimeParser.parse("January 1, 2008 5:59:59.999");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.HOUR_OF_DAY
- * Includes rounding the extremes of one hour
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundHourOfDay() throws Exception {
- final int calendarField = Calendar.HOUR_OF_DAY;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- roundedUpDate = dateTimeParser.parse("June 1, 2008 9:00:00.000");
- roundedDownDate = targetHourOfDayDate;
- lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:29:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 31, 2007 23:30:00.000");
- maxDate = dateTimeParser.parse("January 1, 2008 0:29:59.999");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.HOUR
- * Includes rounding the extremes of one hour
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundHour() throws Exception {
- final int calendarField = Calendar.HOUR;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- roundedUpDate = dateTimeParser.parse("June 1, 2008 9:00:00.000");
- roundedDownDate = targetHourDate;
- lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:29:59.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 31, 2007 23:30:00.000");
- maxDate = dateTimeParser.parse("January 1, 2008 0:29:59.999");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.MINUTE
- * Includes rounding the extremes of one minute
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundMinute() throws Exception {
- final int calendarField = Calendar.MINUTE;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- roundedUpDate = dateTimeParser.parse("June 1, 2008 8:16:00.000");
- roundedDownDate = targetMinuteDate;
- lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:15:29.999");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 31, 2007 23:59:30.000");
- maxDate = dateTimeParser.parse("January 1, 2008 0:00:29.999");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.SECOND
- * Includes rounding the extremes of one second
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundSecond() throws Exception {
- final int calendarField = Calendar.SECOND;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- roundedUpDate = dateTimeParser.parse("June 1, 2008 8:15:15.000");
- roundedDownDate = targetSecondDate;
- lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:15:14.499");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = dateTimeParser.parse("December 31, 2007 23:59:59.500");
- maxDate = dateTimeParser.parse("January 1, 2008 0:00:00.499");
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Tests DateUtils.round()-method with Calendar.MILLISECOND
- * Includes rounding the extremes of one second
- * Includes rounding to January 1
- *
- * @throws Exception
- * @since 3.0
- */
- public void testRoundMilliSecond() throws Exception {
- final int calendarField = Calendar.MILLISECOND;
- Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
- Date minDate, maxDate;
-
- roundedDownDate = lastRoundedDownDate = targetMilliSecondDate;
- roundedUpDate = dateTimeParser.parse("June 1, 2008 8:15:14.232");
- baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
-
- //round to January 1
- minDate = maxDate = januaryOneDate;
- roundToJanuaryFirst(minDate, maxDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.YEAR
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateYear() throws Exception {
- final int calendarField = Calendar.YEAR;
- Date lastTruncateDate = dateTimeParser.parse("December 31, 2007 23:59:59.999");
- baseTruncateTest(targetYearDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.MONTH
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateMonth() throws Exception {
- final int calendarField = Calendar.MONTH;
- Date truncatedDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
- Date lastTruncateDate = dateTimeParser.parse("March 31, 2008 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with DateUtils.SEMI_MONTH
- * Includes truncating months with 28, 29, 30 and 31 days, each with first and second half
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateSemiMonth() throws Exception {
- final int calendarField = DateUtils.SEMI_MONTH;
- Date truncatedDate, lastTruncateDate;
-
- //month with 28 days (1)
- truncatedDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
- lastTruncateDate = dateTimeParser.parse("February 15, 2007 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
-
- //month with 28 days (2)
- truncatedDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
- lastTruncateDate = dateTimeParser.parse("February 28, 2007 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
-
- //month with 29 days (1)
- truncatedDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
- lastTruncateDate = dateTimeParser.parse("February 15, 2008 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
-
- //month with 29 days (2)
- truncatedDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
- lastTruncateDate = dateTimeParser.parse("February 29, 2008 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
-
- //month with 30 days (1)
- truncatedDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
- lastTruncateDate = dateTimeParser.parse("April 15, 2008 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
-
- //month with 30 days (2)
- truncatedDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
- lastTruncateDate = dateTimeParser.parse("April 30, 2008 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
-
- //month with 31 days (1)
- truncatedDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
- lastTruncateDate = dateTimeParser.parse("March 15, 2008 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
-
- //month with 31 days (2)
- truncatedDate = dateTimeParser.parse("March 16, 2008 0:00:00.000");
- lastTruncateDate = dateTimeParser.parse("March 31, 2008 23:59:59.999");
- baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
-
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.DATE
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateDate() throws Exception {
- final int calendarField = Calendar.DATE;
- Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
- baseTruncateTest(targetDateDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.DAY_OF_MONTH
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateDayOfMonth() throws Exception {
- final int calendarField = Calendar.DAY_OF_MONTH;
- Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
- baseTruncateTest(targetDayOfMonthDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.AM_PM
- * Includes truncating the extremes of both AM and PM of one day
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateAmPm() throws Exception {
- final int calendarField = Calendar.AM_PM;
-
- //AM
- Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
- baseTruncateTest(targetAmDate, lastTruncateDate, calendarField);
-
- //PM
- lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
- baseTruncateTest(targetPmDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.HOUR
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateHour() throws Exception {
- final int calendarField = Calendar.HOUR;
- Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:59:59.999");
- baseTruncateTest(targetHourDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.HOUR_OF_DAY
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateHourOfDay() throws Exception {
- final int calendarField = Calendar.HOUR_OF_DAY;
- Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:59:59.999");
- baseTruncateTest(targetHourOfDayDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.MINUTE
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateMinute() throws Exception {
- final int calendarField = Calendar.MINUTE;
- Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:15:59.999");
- baseTruncateTest(targetMinuteDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.SECOND
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateSecond() throws Exception {
- final int calendarField = Calendar.SECOND;
- Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:15:14.999");
- baseTruncateTest(targetSecondDate, lastTruncateDate, calendarField);
- }
-
- /**
- * Test DateUtils.truncate()-method with Calendar.SECOND
- *
- * @throws Exception
- * @since 3.0
- */
- public void testTruncateMilliSecond() throws Exception {
- final int calendarField = Calendar.MILLISECOND;
- baseTruncateTest(targetMilliSecondDate, targetMilliSecondDate, calendarField);
- }
-
- /**
- * When using this basetest all extremes are tested.<br>
- * It will test the Date, Calendar and Object-implementation<br>
- * lastRoundDownDate should round down to roundedDownDate<br>
- * lastRoundDownDate + 1 millisecond should round up to roundedUpDate
- *
- * @param roundedUpDate the next rounded date after <strong>roundedDownDate</strong> when using <strong>calendarField</strong>
- * @param roundedDownDate the result if <strong>lastRoundDownDate</strong> was rounded with <strong>calendarField</strong>
- * @param lastRoundDownDate rounding this value with <strong>calendarField</strong> will result in <strong>roundedDownDate</strong>
- * @param calendarField
- * @since 3.0
- */
- protected void baseRoundTest(final Date roundedUpDate, final Date roundedDownDate, final Date lastRoundDownDate, final int calendarField) {
- Date firstRoundUpDate = DateUtils.addMilliseconds(lastRoundDownDate, 1);
-
- //Date-comparison
- assertEquals(roundedDownDate, DateUtils.round(roundedDownDate, calendarField));
- assertEquals(roundedUpDate, DateUtils.round(roundedUpDate, calendarField));
- assertEquals(roundedDownDate, DateUtils.round(lastRoundDownDate, calendarField));
- assertEquals(roundedUpDate, DateUtils.round(firstRoundUpDate, calendarField));
-
- //Calendar-initiations
- Calendar roundedUpCalendar, roundedDownCalendar, lastRoundDownCalendar, firstRoundUpCalendar;
- roundedDownCalendar = Calendar.getInstance();
- roundedUpCalendar = Calendar.getInstance();
- lastRoundDownCalendar = Calendar.getInstance();
- firstRoundUpCalendar = Calendar.getInstance();
- roundedDownCalendar.setTime(roundedDownDate);
- roundedUpCalendar.setTime(roundedUpDate);
- lastRoundDownCalendar.setTime(lastRoundDownDate);
- firstRoundUpCalendar.setTime(firstRoundUpDate);
-
- //Calendar-comparison
- assertEquals(roundedDownCalendar, DateUtils.round(roundedDownCalendar, calendarField));
- assertEquals(roundedUpCalendar, DateUtils.round(roundedUpCalendar, calendarField));
- assertEquals(roundedDownCalendar, DateUtils.round(lastRoundDownCalendar, calendarField));
- assertEquals(roundedUpCalendar, DateUtils.round(firstRoundUpCalendar, calendarField));
-
- //Object-comparison
- assertEquals(roundedDownDate, DateUtils.round((Object) roundedDownDate, calendarField));
- assertEquals(roundedUpDate, DateUtils.round((Object) roundedUpDate, calendarField));
- assertEquals(roundedDownDate, DateUtils.round((Object) lastRoundDownDate, calendarField));
- assertEquals(roundedUpDate, DateUtils.round((Object) firstRoundUpDate, calendarField));
- assertEquals(roundedDownDate, DateUtils.round((Object) roundedDownCalendar, calendarField));
- assertEquals(roundedUpDate, DateUtils.round((Object) roundedUpCalendar, calendarField));
- assertEquals(roundedDownDate, DateUtils.round((Object) lastRoundDownDate, calendarField));
- assertEquals(roundedUpDate, DateUtils.round((Object) firstRoundUpDate, calendarField));
- }
-
- /**
- * When using this basetest all extremes are tested.<br>
- * It will test the Date, Calendar and Object-implementation<br>
- * lastTruncateDate should round down to truncatedDate<br>
- * lastTruncateDate + 1 millisecond should never round down to truncatedDate
- *
- * @param truncatedDate expected Date when <strong>lastTruncateDate</strong> is truncated with <strong>calendarField</strong>
- * @param lastTruncateDate the last possible Date which will truncate to <strong>truncatedDate</strong> with <strong>calendarField</strong>
- * @param calendarField a Calendar.field value
- * @since 3.0
- */
- protected void baseTruncateTest(final Date truncatedDate, final Date lastTruncateDate, final int calendarField) {
- Date nextTruncateDate = DateUtils.addMilliseconds(lastTruncateDate, 1);
-
- //Date-comparison
- assertEquals("Truncating "+ fdf.format(truncatedDate) +" as Date with CalendarField-value "+ calendarField +" must return itself", truncatedDate, DateUtils.truncate(truncatedDate, calendarField));
- assertEquals(truncatedDate, DateUtils.truncate(lastTruncateDate, calendarField));
- assertFalse(fdf.format(lastTruncateDate) +" is not an extreme when truncating as Date with CalendarField-value "+ calendarField, truncatedDate.equals(DateUtils.truncate(nextTruncateDate, calendarField)));
-
- //Calendar-initiations
- Calendar truncatedCalendar, lastTruncateCalendar, nextTruncateCalendar;
- truncatedCalendar = Calendar.getInstance();
- lastTruncateCalendar = Calendar.getInstance();
- nextTruncateCalendar = Calendar.getInstance();
- truncatedCalendar.setTime(truncatedDate);
- lastTruncateCalendar.setTime(lastTruncateDate);
- nextTruncateCalendar.setTime(nextTruncateDate);
-
- //Calendar-comparison
- assertEquals("Truncating "+ fdf.format(truncatedCalendar) +" as Calendar with CalendarField-value "+ calendarField +" must return itself", truncatedCalendar, DateUtils.truncate(truncatedCalendar, calendarField));
- assertEquals(truncatedCalendar, DateUtils.truncate(lastTruncateCalendar, calendarField));
- assertFalse(fdf.format(lastTruncateCalendar) +" is not an extreme when truncating as Calendar with CalendarField-value "+ calendarField, truncatedCalendar.equals(DateUtils.truncate(nextTruncateCalendar, calendarField)));
-
- //Object-comparison
- assertEquals("Truncating "+ fdf.format(truncatedDate) +" as Date cast to Object with CalendarField-value "+ calendarField +" must return itself as Date", truncatedDate, DateUtils.truncate((Object) truncatedDate, calendarField));
- assertEquals(truncatedDate, DateUtils.truncate((Object) lastTruncateDate, calendarField));
- assertFalse(fdf.format(lastTruncateDate) +" is not an extreme when truncating as Date cast to Object with CalendarField-value "+ calendarField, truncatedDate.equals(DateUtils.truncate((Object) nextTruncateDate, calendarField)));
- assertEquals("Truncating "+ fdf.format(truncatedCalendar) +" as Calendar cast to Object with CalendarField-value "+ calendarField +" must return itself as Date", truncatedDate, DateUtils.truncate((Object) truncatedCalendar, calendarField));
- assertEquals(truncatedDate, DateUtils.truncate((Object) lastTruncateCalendar, calendarField));
- assertFalse(fdf.format(lastTruncateCalendar) +" is not an extreme when truncating as Calendar cast to Object with CalendarField-value "+ calendarField, truncatedDate.equals(DateUtils.truncate((Object) nextTruncateCalendar, calendarField)));
- }
-
- /**
- *
- * Any January 1 could be considered as the ultimate extreme.
- * Instead of comparing the results if the input has a difference of 1 millisecond we check the output to be exactly January first.
- *
- * @param minDate
- * @param maxDate
- * @param calendarField
- * @since 3.0
- */
- protected void roundToJanuaryFirst(Date minDate, Date maxDate, int calendarField) {
- assertEquals("Rounding "+ fdf.format(januaryOneDate) +" as Date with CalendarField-value "+ calendarField +" must return itself", januaryOneDate, DateUtils.round(januaryOneDate, calendarField));
- assertEquals(januaryOneDate, DateUtils.round(minDate, calendarField));
- assertEquals(januaryOneDate, DateUtils.round(maxDate, calendarField));
-
- Calendar minCalendar = Calendar.getInstance();
- minCalendar.setTime(minDate);
- Calendar maxCalendar = Calendar.getInstance();
- maxCalendar.setTime(maxDate);
- assertEquals("Rounding "+ fdf.format(januaryOneCalendar) +" as Date with CalendarField-value "+ calendarField +" must return itself", januaryOneCalendar, DateUtils.round(januaryOneCalendar, calendarField));
- assertEquals(januaryOneCalendar, DateUtils.round(minCalendar, calendarField));
- assertEquals(januaryOneCalendar, DateUtils.round(maxCalendar, calendarField));
-
- Date toPrevRoundDate = DateUtils.addMilliseconds(minDate, -1);
- Date toNextRoundDate = DateUtils.addMilliseconds(maxDate, 1);
- assertFalse(fdf.format(minDate) +" is not an lower-extreme when rounding as Date with CalendarField-value "+ calendarField, januaryOneDate.equals(DateUtils.round(toPrevRoundDate, calendarField)));
- assertFalse(fdf.format(maxDate) +" is not an upper-extreme when rounding as Date with CalendarField-value "+ calendarField, januaryOneDate.equals(DateUtils.round(toNextRoundDate, calendarField)));
-
- Calendar toPrevRoundCalendar = Calendar.getInstance();
- toPrevRoundCalendar.setTime(toPrevRoundDate);
- Calendar toNextRoundCalendar = Calendar.getInstance();
- toNextRoundCalendar.setTime(toNextRoundDate);
- assertFalse(fdf.format(minCalendar) +" is not an lower-extreme when rounding as Date with CalendarField-value "+ calendarField, januaryOneDate.equals(DateUtils.round(toPrevRoundDate, calendarField)));
- assertFalse(fdf.format(maxCalendar) +" is not an upper-extreme when rounding as Date with CalendarField-value "+ calendarField, januaryOneDate.equals(DateUtils.round(toNextRoundDate, calendarField)));
- }
+ DateFormat dateTimeParser;
+
+ Date januaryOneDate;
+ Date targetYearDate;
+ //No targetMonths, these must be tested for every type of month(28-31 days)
+ Date targetDateDate, targetDayOfMonthDate, targetAmDate, targetPmDate;
+ Date targetHourOfDayDate, targetHourDate;
+ Date targetMinuteDate;
+ Date targetSecondDate;
+ Date targetMilliSecondDate;
+
+ Calendar januaryOneCalendar;
+ FastDateFormat fdf = DateFormatUtils.ISO_DATETIME_FORMAT;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ dateTimeParser = new SimpleDateFormat("MMM dd, yyyy H:mm:ss.SSS", Locale.ENGLISH);
+
+ targetYearDate = dateTimeParser.parse("January 1, 2007 0:00:00.000");
+ targetDateDate = targetDayOfMonthDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
+ targetAmDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
+ targetPmDate = dateTimeParser.parse("June 1, 2008 12:00:00.000");
+ targetHourDate = dateTimeParser.parse("June 1, 2008 8:00:00.000");
+ targetHourOfDayDate = dateTimeParser.parse("June 1, 2008 8:00:00.000");
+ targetMinuteDate = dateTimeParser.parse("June 1, 2008 8:15:00.000");
+ targetSecondDate = dateTimeParser.parse("June 1, 2008 8:15:14.000");
+ targetMilliSecondDate = dateTimeParser.parse("June 1, 2008 8:15:14.231");
+
+ januaryOneDate = dateTimeParser.parse("January 1, 2008 0:00:00.000");
+ januaryOneCalendar = Calendar.getInstance();
+ januaryOneCalendar.setTime(januaryOneDate);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.Year
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundYear() throws Exception {
+ final int calendarField = Calendar.YEAR;
+ Date roundedUpDate = dateTimeParser.parse("January 1, 2008 0:00:00.000");
+ Date roundedDownDate = targetYearDate;
+ Date lastRoundedDownDate = dateTimeParser.parse("June 30, 2007 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.MONTH
+ * Includes rounding months with 28, 29, 30 and 31 days
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundMonth() throws Exception {
+ final int calendarField = Calendar.MONTH;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ //month with 28 days
+ roundedUpDate = dateTimeParser.parse("March 1, 2007 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("February 14, 2007 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 29 days
+ roundedUpDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("February 15, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 30 days
+ roundedUpDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("April 15, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 31 days
+ roundedUpDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("May 16, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 17, 2007 00:00:00.000");
+ maxDate = dateTimeParser.parse("January 16, 2008 23:59:59.999");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with DateUtils.SEMI_MONTH
+ * Includes rounding months with 28, 29, 30 and 31 days, each with first and second half
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundSemiMonth() throws Exception {
+ final int calendarField = DateUtils.SEMI_MONTH;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ //month with 28 days (1)
+ roundedUpDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("February 8, 2007 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 28 days (2)
+ roundedUpDate = dateTimeParser.parse("March 1, 2007 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("February 23, 2007 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 29 days (1)
+ roundedUpDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("February 8, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 29 days (2)
+ roundedUpDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("February 23, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 30 days (1)
+ roundedUpDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("April 8, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 30 days (2)
+ roundedUpDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("April 23, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 31 days (1)
+ roundedUpDate = dateTimeParser.parse("May 16, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("May 1, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("May 8, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //month with 31 days (2)
+ roundedUpDate = dateTimeParser.parse("June 1, 2008 0:00:00.000");
+ roundedDownDate = dateTimeParser.parse("May 16, 2008 0:00:00.000");
+ lastRoundedDownDate = dateTimeParser.parse("May 23, 2008 23:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 24, 2007 00:00:00.000");
+ maxDate = dateTimeParser.parse("January 8, 2008 23:59:59.999");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.DATE
+ * Includes rounding the extremes of one day
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundDate() throws Exception {
+ final int calendarField = Calendar.DATE;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
+ roundedDownDate = targetDateDate;
+ lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 31, 2007 12:00:00.000");
+ maxDate = dateTimeParser.parse("January 1, 2008 11:59:59.999");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.DAY_OF_MONTH
+ * Includes rounding the extremes of one day
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundDayOfMonth() throws Exception {
+ final int calendarField = Calendar.DAY_OF_MONTH;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
+ roundedDownDate = targetDayOfMonthDate;
+ lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 31, 2007 12:00:00.000");
+ maxDate = dateTimeParser.parse("January 1, 2008 11:59:59.999");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.AM_PM
+ * Includes rounding the extremes of both AM and PM of one day
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @3.0
+ */
+ public void testRoundAmPm() throws Exception {
+ final int calendarField = Calendar.AM_PM;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ //AM
+ roundedUpDate = dateTimeParser.parse("June 1, 2008 12:00:00.000");
+ roundedDownDate = targetAmDate;
+ lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 5:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //PM
+ roundedUpDate = dateTimeParser.parse("June 2, 2008 0:00:00.000");
+ roundedDownDate = targetPmDate;
+ lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 17:59:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 31, 2007 18:00:00.000");
+ maxDate = dateTimeParser.parse("January 1, 2008 5:59:59.999");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.HOUR_OF_DAY
+ * Includes rounding the extremes of one hour
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundHourOfDay() throws Exception {
+ final int calendarField = Calendar.HOUR_OF_DAY;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ roundedUpDate = dateTimeParser.parse("June 1, 2008 9:00:00.000");
+ roundedDownDate = targetHourOfDayDate;
+ lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:29:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 31, 2007 23:30:00.000");
+ maxDate = dateTimeParser.parse("January 1, 2008 0:29:59.999");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.HOUR
+ * Includes rounding the extremes of one hour
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundHour() throws Exception {
+ final int calendarField = Calendar.HOUR;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ roundedUpDate = dateTimeParser.parse("June 1, 2008 9:00:00.000");
+ roundedDownDate = targetHourDate;
+ lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:29:59.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 31, 2007 23:30:00.000");
+ maxDate = dateTimeParser.parse("January 1, 2008 0:29:59.999");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.MINUTE
+ * Includes rounding the extremes of one minute
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundMinute() throws Exception {
+ final int calendarField = Calendar.MINUTE;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ roundedUpDate = dateTimeParser.parse("June 1, 2008 8:16:00.000");
+ roundedDownDate = targetMinuteDate;
+ lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:15:29.999");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 31, 2007 23:59:30.000");
+ maxDate = dateTimeParser.parse("January 1, 2008 0:00:29.999");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.SECOND
+ * Includes rounding the extremes of one second
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundSecond() throws Exception {
+ final int calendarField = Calendar.SECOND;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ roundedUpDate = dateTimeParser.parse("June 1, 2008 8:15:15.000");
+ roundedDownDate = targetSecondDate;
+ lastRoundedDownDate = dateTimeParser.parse("June 1, 2008 8:15:14.499");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = dateTimeParser.parse("December 31, 2007 23:59:59.500");
+ maxDate = dateTimeParser.parse("January 1, 2008 0:00:00.499");
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Tests DateUtils.round()-method with Calendar.MILLISECOND
+ * Includes rounding the extremes of one second
+ * Includes rounding to January 1
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testRoundMilliSecond() throws Exception {
+ final int calendarField = Calendar.MILLISECOND;
+ Date roundedUpDate, roundedDownDate, lastRoundedDownDate;
+ Date minDate, maxDate;
+
+ roundedDownDate = lastRoundedDownDate = targetMilliSecondDate;
+ roundedUpDate = dateTimeParser.parse("June 1, 2008 8:15:14.232");
+ baseRoundTest(roundedUpDate, roundedDownDate, lastRoundedDownDate, calendarField);
+
+ //round to January 1
+ minDate = maxDate = januaryOneDate;
+ roundToJanuaryFirst(minDate, maxDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.YEAR
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateYear() throws Exception {
+ final int calendarField = Calendar.YEAR;
+ Date lastTruncateDate = dateTimeParser.parse("December 31, 2007 23:59:59.999");
+ baseTruncateTest(targetYearDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.MONTH
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateMonth() throws Exception {
+ final int calendarField = Calendar.MONTH;
+ Date truncatedDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
+ Date lastTruncateDate = dateTimeParser.parse("March 31, 2008 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with DateUtils.SEMI_MONTH
+ * Includes truncating months with 28, 29, 30 and 31 days, each with first and second half
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateSemiMonth() throws Exception {
+ final int calendarField = DateUtils.SEMI_MONTH;
+ Date truncatedDate, lastTruncateDate;
+
+ //month with 28 days (1)
+ truncatedDate = dateTimeParser.parse("February 1, 2007 0:00:00.000");
+ lastTruncateDate = dateTimeParser.parse("February 15, 2007 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+
+ //month with 28 days (2)
+ truncatedDate = dateTimeParser.parse("February 16, 2007 0:00:00.000");
+ lastTruncateDate = dateTimeParser.parse("February 28, 2007 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+
+ //month with 29 days (1)
+ truncatedDate = dateTimeParser.parse("February 1, 2008 0:00:00.000");
+ lastTruncateDate = dateTimeParser.parse("February 15, 2008 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+
+ //month with 29 days (2)
+ truncatedDate = dateTimeParser.parse("February 16, 2008 0:00:00.000");
+ lastTruncateDate = dateTimeParser.parse("February 29, 2008 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+
+ //month with 30 days (1)
+ truncatedDate = dateTimeParser.parse("April 1, 2008 0:00:00.000");
+ lastTruncateDate = dateTimeParser.parse("April 15, 2008 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+
+ //month with 30 days (2)
+ truncatedDate = dateTimeParser.parse("April 16, 2008 0:00:00.000");
+ lastTruncateDate = dateTimeParser.parse("April 30, 2008 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+
+ //month with 31 days (1)
+ truncatedDate = dateTimeParser.parse("March 1, 2008 0:00:00.000");
+ lastTruncateDate = dateTimeParser.parse("March 15, 2008 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+
+ //month with 31 days (2)
+ truncatedDate = dateTimeParser.parse("March 16, 2008 0:00:00.000");
+ lastTruncateDate = dateTimeParser.parse("March 31, 2008 23:59:59.999");
+ baseTruncateTest(truncatedDate, lastTruncateDate, calendarField);
+
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.DATE
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateDate() throws Exception {
+ final int calendarField = Calendar.DATE;
+ Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
+ baseTruncateTest(targetDateDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.DAY_OF_MONTH
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateDayOfMonth() throws Exception {
+ final int calendarField = Calendar.DAY_OF_MONTH;
+ Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
+ baseTruncateTest(targetDayOfMonthDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.AM_PM
+ * Includes truncating the extremes of both AM and PM of one day
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateAmPm() throws Exception {
+ final int calendarField = Calendar.AM_PM;
+
+ //AM
+ Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 11:59:59.999");
+ baseTruncateTest(targetAmDate, lastTruncateDate, calendarField);
+
+ //PM
+ lastTruncateDate = dateTimeParser.parse("June 1, 2008 23:59:59.999");
+ baseTruncateTest(targetPmDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.HOUR
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateHour() throws Exception {
+ final int calendarField = Calendar.HOUR;
+ Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:59:59.999");
+ baseTruncateTest(targetHourDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.HOUR_OF_DAY
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateHourOfDay() throws Exception {
+ final int calendarField = Calendar.HOUR_OF_DAY;
+ Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:59:59.999");
+ baseTruncateTest(targetHourOfDayDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.MINUTE
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateMinute() throws Exception {
+ final int calendarField = Calendar.MINUTE;
+ Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:15:59.999");
+ baseTruncateTest(targetMinuteDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.SECOND
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateSecond() throws Exception {
+ final int calendarField = Calendar.SECOND;
+ Date lastTruncateDate = dateTimeParser.parse("June 1, 2008 8:15:14.999");
+ baseTruncateTest(targetSecondDate, lastTruncateDate, calendarField);
+ }
+
+ /**
+ * Test DateUtils.truncate()-method with Calendar.SECOND
+ *
+ * @throws Exception
+ * @since 3.0
+ */
+ public void testTruncateMilliSecond() throws Exception {
+ final int calendarField = Calendar.MILLISECOND;
+ baseTruncateTest(targetMilliSecondDate, targetMilliSecondDate, calendarField);
+ }
+
+ /**
+ * When using this basetest all extremes are tested.<br>
+ * It will test the Date, Calendar and Object-implementation<br>
+ * lastRoundDownDate should round down to roundedDownDate<br>
+ * lastRoundDownDate + 1 millisecond should round up to roundedUpDate
+ *
+ * @param roundedUpDate the next rounded date after <strong>roundedDownDate</strong> when using <strong>calendarField</strong>
+ * @param roundedDownDate the result if <strong>lastRoundDownDate</strong> was rounded with <strong>calendarField</strong>
+ * @param lastRoundDownDate rounding this value with <strong>calendarField</strong> will result in <strong>roundedDownDate</strong>
+ * @param calendarField
+ * @since 3.0
+ */
+ protected void baseRoundTest(final Date roundedUpDate, final Date roundedDownDate, final Date lastRoundDownDate, final int calendarField) {
+ Date firstRoundUpDate = DateUtils.addMilliseconds(lastRoundDownDate, 1);
+
+ //Date-comparison
+ assertEquals(roundedDownDate, DateUtils.round(roundedDownDate, calendarField));
+ assertEquals(roundedUpDate, DateUtils.round(roundedUpDate, calendarField));
+ assertEquals(roundedDownDate, DateUtils.round(lastRoundDownDate, calendarField));
+ assertEquals(roundedUpDate, DateUtils.round(firstRoundUpDate, calendarField));
+
+ //Calendar-initiations
+ Calendar roundedUpCalendar, roundedDownCalendar, lastRoundDownCalendar, firstRoundUpCalendar;
+ roundedDownCalendar = Calendar.getInstance();
+ roundedUpCalendar = Calendar.getInstance();
+ lastRoundDownCalendar = Calendar.getInstance();
+ firstRoundUpCalendar = Calendar.getInstance();
+ roundedDownCalendar.setTime(roundedDownDate);
+ roundedUpCalendar.setTime(roundedUpDate);
+ lastRoundDownCalendar.setTime(lastRoundDownDate);
+ firstRoundUpCalendar.setTime(firstRoundUpDate);
+
+ //Calendar-comparison
+ assertEquals(roundedDownCalendar, DateUtils.round(roundedDownCalendar, calendarField));
+ assertEquals(roundedUpCalendar, DateUtils.round(roundedUpCalendar, calendarField));
+ assertEquals(roundedDownCalendar, DateUtils.round(lastRoundDownCalendar, calendarField));
+ assertEquals(roundedUpCalendar, DateUtils.round(firstRoundUpCalendar, calendarField));
+
+ //Object-comparison
+ assertEquals(roundedDownDate, DateUtils.round((Object) roundedDownDate, calendarField));
+ assertEquals(roundedUpDate, DateUtils.round((Object) roundedUpDate, calendarField));
+ assertEquals(roundedDownDate, DateUtils.round((Object) lastRoundDownDate, calendarField));
+ assertEquals(roundedUpDate, DateUtils.round((Object) firstRoundUpDate, calendarField));
+ assertEquals(roundedDownDate, DateUtils.round((Object) roundedDownCalendar, calendarField));
+ assertEquals(roundedUpDate, DateUtils.round((Object) roundedUpCalendar, calendarField));
+ assertEquals(roundedDownDate, DateUtils.round((Object) lastRoundDownDate, calendarField));
+ assertEquals(roundedUpDate, DateUtils.round((Object) firstRoundUpDate, calendarField));
+ }
+
+ /**
+ * When using this basetest all extremes are tested.<br>
+ * It will test the Date, Calendar and Object-implementation<br>
+ * lastTruncateDate should round down to truncatedDate<br>
+ * lastTruncateDate + 1 millisecond should never round down to truncatedDate
+ *
+ * @param truncatedDate expected Date when <strong>lastTruncateDate</strong> is truncated with <strong>calendarField</strong>
+ * @param lastTruncateDate the last possible Date which will truncate to <strong>truncatedDate</strong> with <strong>calendarField</strong>
+ * @param calendarField a Calendar.field value
+ * @since 3.0
+ */
+ protected void baseTruncateTest(final Date truncatedDate, final Date lastTruncateDate, final int calendarField) {
+ Date nextTruncateDate = DateUtils.addMilliseconds(lastTruncateDate, 1);
+
+ //Date-comparison
+ assertEquals("Truncating "+ fdf.format(truncatedDate) +" as Date with CalendarField-value "+ calendarField +" must return itself", truncatedDate, DateUtils.truncate(truncatedDate, calendarField));
+ assertEquals(truncatedDate, DateUtils.truncate(lastTruncateDate, calendarField));
+ assertFalse(fdf.format(lastTruncateDate) +" is not an extreme when truncating as Date with CalendarField-value "+ calendarField, truncatedDate.equals(DateUtils.truncate(nextTruncateDate, calendarField)));
+
+ //Calendar-initiations
+ Calendar truncatedCalendar, lastTruncateCalendar, nextTruncateCalendar;
+ truncatedCalendar = Calendar.getInstance();
+ lastTruncateCalendar = Calendar.getInstance();
+ nextTruncateCalendar = Calendar.getInstance();
+ truncatedCalendar.setTime(truncatedDate);
+ lastTruncateCalendar.setTime(lastTruncateDate);
+ nextTruncateCalendar.setTime(nextTruncateDate);
+
+ //Calendar-comparison
+ assertEquals("Truncating "+ fdf.format(truncatedCalendar) +" as Calendar with CalendarField-value "+ calendarField +" must return itself", truncatedCalendar, DateUtils.truncate(truncatedCalendar, calendarField));
+ assertEquals(truncatedCalendar, DateUtils.truncate(lastTruncateCalendar, calendarField));
+ assertFalse(fdf.format(lastTruncateCalendar) +" is not an extreme when truncating as Calendar with CalendarField-value "+ calendarField, truncatedCalendar.equals(DateUtils.truncate(nextTruncateCalendar, calendarField)));
+
+ //Object-comparison
+ assertEquals("Truncating "+ fdf.format(truncatedDate) +" as Date cast to Object with CalendarField-value "+ calendarField +" must return itself as Date", truncatedDate, DateUtils.truncate((Object) truncatedDate, calendarField));
+ assertEquals(truncatedDate, DateUtils.truncate((Object) lastTruncateDate, calendarField));
+ assertFalse(fdf.format(lastTruncateDate) +" is not an extreme when truncating as Date cast to Object with CalendarField-value "+ calendarField, truncatedDate.equals(DateUtils.truncate((Object) nextTruncateDate, calendarField)));
+ assertEquals("Truncating "+ fdf.format(truncatedCalendar) +" as Calendar cast to Object with CalendarField-value "+ calendarField +" must return itself as Date", truncatedDate, DateUtils.truncate((Object) truncatedCalendar, calendarField));
+ assertEquals(truncatedDate, DateUtils.truncate((Object) lastTruncateCalendar, calendarField));
+ assertFalse(fdf.format(lastTruncateCalendar) +" is not an extreme when truncating as Calendar cast to Object with CalendarField-value "+ calendarField, truncatedDate.equals(DateUtils.truncate((Object) nextTruncateCalendar, calendarField)));
+ }
+
+ /**
+ *
+ * Any January 1 could be considered as the ultimate extreme.
+ * Instead of comparing the results if the input has a difference of 1 millisecond we check the output to be exactly January first.
+ *
+ * @param minDate
+ * @param maxDate
+ * @param calendarField
+ * @since 3.0
+ */
+ protected void roundToJanuaryFirst(Date minDate, Date maxDate, int calendarField) {
+ assertEquals("Rounding "+ fdf.format(januaryOneDate) +" as Date with CalendarField-value "+ calendarField +" must return itself", januaryOneDate, DateUtils.round(januaryOneDate, calendarField));
+ assertEquals(januaryOneDate, DateUtils.round(minDate, calendarField));
+ assertEquals(januaryOneDate, DateUtils.round(maxDate, calendarField));
+
+ Calendar minCalendar = Calendar.getInstance();
+ minCalendar.setTime(minDate);
+ Calendar maxCalendar = Calendar.getInstance();
+ maxCalendar.setTime(maxDate);
+ assertEquals("Rounding "+ fdf.format(januaryOneCalendar) +" as Date with CalendarField-value "+ calendarField +" must return itself", januaryOneCalendar, DateUtils.round(januaryOneCalendar, calendarField));
+ assertEquals(januaryOneCalendar, DateUtils.round(minCalendar, calendarField));
+ assertEquals(januaryOneCalendar, DateUtils.round(maxCalendar, calendarField));
+
+ Date toPrevRoundDate = DateUtils.addMilliseconds(minDate, -1);
+ Date toNextRoundDate = DateUtils.addMilliseconds(maxDate, 1);
+ assertFalse(fdf.format(minDate) +" is not an lower-extreme when rounding as Date with CalendarField-value "+ calendarField, januaryOneDate.equals(DateUtils.round(toPrevRoundDate, calendarField)));
+ assertFalse(fdf.format(maxDate) +" is not an upper-extreme when rounding as Date with CalendarField-value "+ calendarField, januaryOneDate.equals(DateUtils.round(toNextRoundDate, calendarField)));
+
+ Calendar toPrevRoundCalendar = Calendar.getInstance();
+ toPrevRoundCalendar.setTime(toPrevRoundDate);
+ Calendar toNextRoundCalendar = Calendar.getInstance();
+ toNextRoundCalendar.setTime(toNextRoundDate);
+ assertFalse(fdf.format(minCalendar) +" is not an lower-extreme when rounding as Date with CalendarField-value "+ calendarField, januaryOneDate.equals(DateUtils.round(toPrevRoundDate, calendarField)));
+ assertFalse(fdf.format(maxCalendar) +" is not an upper-extreme when rounding as Date with CalendarField-value "+ calendarField, januaryOneDate.equals(DateUtils.round(toNextRoundDate, calendarField)));
+ }
}
Modified: commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/time/DateUtilsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/time/DateUtilsTest.java?rev=904012&r1=904011&r2=904012&view=diff
==============================================================================
--- commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/time/DateUtilsTest.java (original)
+++ commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/time/DateUtilsTest.java Thu Jan 28 09:37:28 2010
@@ -456,150 +456,150 @@
assertDate(result, 1999, 6, 5, 4, 3, 2, 1);
}
- // -----------------------------------------------------------------------
- public void testSetYears() throws Exception {
- Date base = new Date(MILLIS_TEST);
- Date result = DateUtils.setYears(base, 2000);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 4, 3, 2, 1);
-
- result = DateUtils.setYears(base, 2008);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2008, 6, 5, 4, 3, 2, 1);
-
- result = DateUtils.setYears(base, 2005);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2005, 6, 5, 4, 3, 2, 1);
- }
-
- // -----------------------------------------------------------------------
- public void testSetMonths() throws Exception {
- Date base = new Date(MILLIS_TEST);
- Date result = DateUtils.setMonths(base, 5);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 5, 5, 4, 3, 2, 1);
-
- result = DateUtils.setMonths(base, 1);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 1, 5, 4, 3, 2, 1);
-
- try {
- result = DateUtils.setMonths(base, 12);
- fail("DateUtils.setMonths did not throw an expected IllegalArguementException.");
- } catch (IllegalArgumentException e) {
-
- }
- }
-
- // -----------------------------------------------------------------------
- public void testSetDays() throws Exception {
- Date base = new Date(MILLIS_TEST);
- Date result = DateUtils.setDays(base, 1);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 1, 4, 3, 2, 1);
-
- result = DateUtils.setDays(base, 29);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 29, 4, 3, 2, 1);
-
- try {
- result = DateUtils.setDays(base, 32);
- fail("DateUtils.setDays did not throw an expected IllegalArguementException.");
- } catch (IllegalArgumentException e) {
-
- }
- }
-
- // -----------------------------------------------------------------------
- public void testSetHours() throws Exception {
- Date base = new Date(MILLIS_TEST);
- Date result = DateUtils.setHours(base, 0);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 0, 3, 2, 1);
-
- result = DateUtils.setHours(base, 23);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 23, 3, 2, 1);
-
- try {
- result = DateUtils.setHours(base, 24);
- fail("DateUtils.setHours did not throw an expected IllegalArguementException.");
- } catch (IllegalArgumentException e) {
-
- }
- }
-
- // -----------------------------------------------------------------------
- public void testSetMinutes() throws Exception {
- Date base = new Date(MILLIS_TEST);
- Date result = DateUtils.setMinutes(base, 0);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 4, 0, 2, 1);
-
- result = DateUtils.setMinutes(base, 59);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 4, 59, 2, 1);
-
- try {
- result = DateUtils.setMinutes(base, 60);
- fail("DateUtils.setMinutes did not throw an expected IllegalArguementException.");
- } catch (IllegalArgumentException e) {
-
- }
- }
-
- // -----------------------------------------------------------------------
- public void testSetSeconds() throws Exception {
- Date base = new Date(MILLIS_TEST);
- Date result = DateUtils.setSeconds(base, 0);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 4, 3, 0, 1);
-
- result = DateUtils.setSeconds(base, 59);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 4, 3, 59, 1);
-
- try {
- result = DateUtils.setSeconds(base, 60);
- fail("DateUtils.setSeconds did not throw an expected IllegalArguementException.");
- } catch (IllegalArgumentException e) {
-
- }
- }
-
- // -----------------------------------------------------------------------
- public void testSetMilliseconds() throws Exception {
- Date base = new Date(MILLIS_TEST);
- Date result = DateUtils.setMilliseconds(base, 0);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 4, 3, 2, 0);
-
- result = DateUtils.setMilliseconds(base, 999);
- assertNotSame(base, result);
- assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
- assertDate(result, 2000, 6, 5, 4, 3, 2, 999);
-
- try {
- result = DateUtils.setMilliseconds(base, 1000);
- fail("DateUtils.setMilliseconds did not throw an expected IllegalArguementException.");
- } catch (IllegalArgumentException e) {
+ // -----------------------------------------------------------------------
+ public void testSetYears() throws Exception {
+ Date base = new Date(MILLIS_TEST);
+ Date result = DateUtils.setYears(base, 2000);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 4, 3, 2, 1);
+
+ result = DateUtils.setYears(base, 2008);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2008, 6, 5, 4, 3, 2, 1);
+
+ result = DateUtils.setYears(base, 2005);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2005, 6, 5, 4, 3, 2, 1);
+ }
+
+ // -----------------------------------------------------------------------
+ public void testSetMonths() throws Exception {
+ Date base = new Date(MILLIS_TEST);
+ Date result = DateUtils.setMonths(base, 5);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 5, 5, 4, 3, 2, 1);
+
+ result = DateUtils.setMonths(base, 1);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 1, 5, 4, 3, 2, 1);
+
+ try {
+ result = DateUtils.setMonths(base, 12);
+ fail("DateUtils.setMonths did not throw an expected IllegalArguementException.");
+ } catch (IllegalArgumentException e) {
- }
- }
+ }
+ }
+
+ // -----------------------------------------------------------------------
+ public void testSetDays() throws Exception {
+ Date base = new Date(MILLIS_TEST);
+ Date result = DateUtils.setDays(base, 1);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 1, 4, 3, 2, 1);
+
+ result = DateUtils.setDays(base, 29);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 29, 4, 3, 2, 1);
+
+ try {
+ result = DateUtils.setDays(base, 32);
+ fail("DateUtils.setDays did not throw an expected IllegalArguementException.");
+ } catch (IllegalArgumentException e) {
+
+ }
+ }
+
+ // -----------------------------------------------------------------------
+ public void testSetHours() throws Exception {
+ Date base = new Date(MILLIS_TEST);
+ Date result = DateUtils.setHours(base, 0);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 0, 3, 2, 1);
+
+ result = DateUtils.setHours(base, 23);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 23, 3, 2, 1);
+
+ try {
+ result = DateUtils.setHours(base, 24);
+ fail("DateUtils.setHours did not throw an expected IllegalArguementException.");
+ } catch (IllegalArgumentException e) {
+
+ }
+ }
+
+ // -----------------------------------------------------------------------
+ public void testSetMinutes() throws Exception {
+ Date base = new Date(MILLIS_TEST);
+ Date result = DateUtils.setMinutes(base, 0);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 4, 0, 2, 1);
+
+ result = DateUtils.setMinutes(base, 59);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 4, 59, 2, 1);
+
+ try {
+ result = DateUtils.setMinutes(base, 60);
+ fail("DateUtils.setMinutes did not throw an expected IllegalArguementException.");
+ } catch (IllegalArgumentException e) {
+
+ }
+ }
+
+ // -----------------------------------------------------------------------
+ public void testSetSeconds() throws Exception {
+ Date base = new Date(MILLIS_TEST);
+ Date result = DateUtils.setSeconds(base, 0);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 4, 3, 0, 1);
+
+ result = DateUtils.setSeconds(base, 59);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 4, 3, 59, 1);
+
+ try {
+ result = DateUtils.setSeconds(base, 60);
+ fail("DateUtils.setSeconds did not throw an expected IllegalArguementException.");
+ } catch (IllegalArgumentException e) {
+
+ }
+ }
+
+ // -----------------------------------------------------------------------
+ public void testSetMilliseconds() throws Exception {
+ Date base = new Date(MILLIS_TEST);
+ Date result = DateUtils.setMilliseconds(base, 0);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 4, 3, 2, 0);
+
+ result = DateUtils.setMilliseconds(base, 999);
+ assertNotSame(base, result);
+ assertDate(base, 2000, 6, 5, 4, 3, 2, 1);
+ assertDate(result, 2000, 6, 5, 4, 3, 2, 999);
+
+ try {
+ result = DateUtils.setMilliseconds(base, 1000);
+ fail("DateUtils.setMilliseconds did not throw an expected IllegalArguementException.");
+ } catch (IllegalArgumentException e) {
+
+ }
+ }
//-----------------------------------------------------------------------
private void assertDate(Date date, int year, int month, int day, int hour, int min, int sec, int mil) throws Exception {