/** * The test class DateTest. * * @author (your name) * @version (a version number or a date) */ public class DateTest extends junit.framework.TestCase { private Date newYearsOld; private Date milleniumStart; private Date ianBDay; private Date epochStart; private Date newYear2000; private Date xmas2008; private Date oneDay; private Date anotherDay; private Date leap2000; private Date leap2004; private Date badLeap2100; private Date badLeap2007; private Date feb28_2007; private Date feb28_2000; private Date oct32; private Date negativeDay; private Date bigDay; private Date badMonthNeg; private Date badMonthBig; private Date badMar32; private Date badApr31; private Date badJun31; private Date badSep31; private Date badNov31; private Date goodJan31; private Date goodMar31; private Date goodAug31; private Date nextMonday; private Date nextFriday; /** * Default constructor for test class DateTest */ public DateTest() { } /** * Sets up the test fixture. * * Called before every test case method. */ protected void setUp() { newYearsOld = new Date(1991, 12, 31); milleniumStart = new Date(2001, 1, 1); epochStart = new Date(7, 11, 28); // Nov 28 of Year 7. ianBDay = new Date(1966, 8, 31); newYear2000 = new Date(2000, 1, 1); xmas2008 = new Date(2008, 12, 25); oneDay = new Date(2007, 9, 30); anotherDay = new Date(2007, 10, 1); leap2000 = new Date(2000, 2, 29); leap2004 = new Date(2004, 2, 29); badLeap2100 = new Date(2100, 2, 29); badLeap2007 = new Date(2007, 2, 29); feb28_2007 = new Date(2007, 2, 28); feb28_2000 = new Date(2000, 2, 28); oct32 = new Date(2007, 10, 32); negativeDay = new Date(2007, 3, -5); bigDay = new Date(2007, 10, 35); badMonthNeg = new Date(2007, -4, 7); badMonthBig = new Date(2007, 22, 7); badMar32 = new Date(2007, 3, 32); badApr31 = new Date(2007, 4, 31); badJun31 = new Date(2008, 6, 31); badSep31 = new Date(2007, 9, 31); badNov31 = new Date(2004, 11, 31); goodJan31 = new Date(2000, 1, 31); goodMar31 = new Date(2000, 3, 31); goodAug31 = new Date(2009, 8, 31); nextMonday = new Date(2007, 10, 8); nextFriday = new Date(2007, 10, 13); } /** * Tears down the test fixture. * * Called after every test case method. */ protected void tearDown() { } public void testToStringUS() { assertEquals("01/01/2001", milleniumStart.toStringUS()); assertEquals("12/31/1991", newYearsOld.toStringUS()); assertEquals("08/31/1966", ianBDay.toStringUS()); assertEquals("11/28/7", epochStart.toStringUS()); } public void testToStringEuro() { assertEquals("01-01-2001", milleniumStart.toStringEuro()); assertEquals("31-12-1991", newYearsOld.toStringEuro()); assertEquals("31-08-1966", ianBDay.toStringEuro()); assertEquals("28-11-7", epochStart.toStringEuro()); } public void testToStringISO() { assertEquals("2001.01.01", milleniumStart.toStringISO()); assertEquals("1991.12.31", newYearsOld.toStringISO()); assertEquals("1966.08.31", ianBDay.toStringISO()); assertEquals("7.11.28", epochStart.toStringISO()); } public void testIsValid() { assertEquals(true, goodJan31.isValid()); assertEquals(false, badMonthNeg.isValid()); assertEquals(true, leap2000.isValid()); assertEquals(false, badMonthBig.isValid()); assertEquals(true, oneDay.isValid()); assertEquals(true, leap2004.isValid()); assertEquals(false, badNov31.isValid()); assertEquals(false, bigDay.isValid()); assertEquals(false, oct32.isValid()); assertEquals(false, badApr31.isValid()); assertEquals(true, anotherDay.isValid()); assertEquals(false, badMar32.isValid()); assertEquals(true, goodMar31.isValid()); assertEquals(true, feb28_2000.isValid()); assertEquals(true, newYear2000.isValid()); assertEquals(false, badSep31.isValid()); assertEquals(false, badJun31.isValid()); assertEquals(true, feb28_2007.isValid()); assertEquals(true, xmas2008.isValid()); assertEquals(false, negativeDay.isValid()); assertEquals(true, ianBDay.isValid()); assertEquals(false, badLeap2007.isValid()); assertEquals(false, badLeap2100.isValid()); assertEquals(true, goodAug31.isValid()); } public void testComesBefore() { assertEquals(true, leap2004.comesBefore(oneDay)); assertEquals(false, oneDay.comesBefore(leap2004)); assertEquals(false, oneDay.comesBefore(oneDay)); assertEquals(true, oneDay.comesBefore(anotherDay)); assertEquals(false, anotherDay.comesBefore(oneDay)); Date goodAug30 = new Date(2007, 8, 30); Date feb28_2004 = new Date(2004, 2, 28); assertEquals(true, feb28_2004.comesBefore(leap2004)); assertEquals(false, leap2004.comesBefore(feb28_2004)); Date aaa = new Date(1999,3,14); // early y,m,d Date aaz = new Date(1999,3,28); // early y,m but late d Date aza = new Date(1999,9,14); // early y, d but late m Date azz = new Date(1999,9,28); // early y but late m,d Date zaa = new Date(2008,3,14); // early m,d but late y Date zaz = new Date(2008,3,28); // early m but late y, d Date zza = new Date(2008,9,14); // early d but late y,m Date zzz = new Date(2008,9,28); // early but late y,m,d Date mid = new Date(2002,5,21); // Between the a's and z's assertEquals(true, aaa.comesBefore(mid) ); assertEquals(true, aaz.comesBefore(mid) ); assertEquals(true, aza.comesBefore(mid) ); assertEquals(true, azz.comesBefore(mid) ); assertEquals(false, zaa.comesBefore(mid) ); assertEquals(false, zaz.comesBefore(mid) ); assertEquals(false, zza.comesBefore(mid) ); assertEquals(false, zzz.comesBefore(mid) ); assertEquals(false, mid.comesBefore(aaa) ); assertEquals(false, mid.comesBefore(aaz) ); assertEquals(false, mid.comesBefore(aza) ); assertEquals(false, mid.comesBefore(azz) ); assertEquals(true, mid.comesBefore(zaa) ); assertEquals(true, mid.comesBefore(zaz) ); assertEquals(true, mid.comesBefore(zza) ); assertEquals(true, mid.comesBefore(zzz) ); } public void testSameDayAs() { assertEquals(false, leap2004.sameDayAs(anotherDay)); anotherDay.isValid(); assertEquals(true, anotherDay.sameDayAs(anotherDay)); Date anotherLeap2004 = new Date(2004, 2, 29); assertEquals(true, leap2004.sameDayAs(anotherLeap2004)); Date d1 = new Date(2004, 2, 27); Date d2 = new Date(2003, 2, 26); Date d3 = new Date(2004, 3, 27); assertEquals(false, d1.sameDayAs(d2)); assertEquals(false, d2.sameDayAs(d1)); assertEquals(false, d1.sameDayAs(d3)); assertEquals(false, d3.sameDayAs(d1)); } public void testNextDay() { Date t1; t1 = xmas2008.nextDay();; assertEquals(12, t1.getMonth()); assertEquals(2008, t1.getYear()); assertEquals(26, t1.getDay()); Date t2; t2 = goodJan31.nextDay(); assertEquals(2000, t2.getYear()); assertEquals(2, t2.getMonth()); assertEquals(1, t2.getDay()); Date t3; t3 = (new Date(2008,12,31)).nextDay();; assertEquals(2009, t3.getYear()); assertEquals(1, t3.getMonth()); assertEquals(1, t3.getDay()); } public void testToday() { Date now = epochStart.today(); // This should really be static. assertEquals(true ,now.isValid()); assertEquals(false,now.comesBefore(leap2000)); // This test case will eventually expire: assertEquals(true, now.comesBefore( new Date(2010,6,28) ) ); // This test case might fail if it has *just* become midnight: assertEquals(true, now.sameDayAs( ianBDay.today() ) ); } }