package org.yajul.date; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.junit.Test; import java.sql.Timestamp; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import static org.junit.Assert.*; /** * Test DateHelper functions. * * Uses joda-time as a reference. * * <br> * User: josh * Date: 9/28/11 * Time: 10:59 AM */ public class DateHelperTest { @Test public void testMakeTimeMillis() { long midnightMillis = DateHelper.MIDNIGHT_MILLIS; DateTime base = new DateTime(midnightMillis); DateTime expected = base.withTime(1, 23, 45, 67); long x = expected.getMillis(); long y = DateHelper.makeTimeMillis(1,23,45,67); assertEquals(x, y); } @Test(expected = IllegalArgumentException.class) public void testTooManyArgsForMakeTime() { DateHelper.makeTimeMillis(1, 23, 45, 67, 666); } @Test(expected = IllegalArgumentException.class) public void testTooFewArgsForMakeTime() { DateHelper.makeTimeMillis(); } @Test public void testGregorianCalendar() { DateTime m = new DateTime(2008, 8, 31, 23, 21, 34, 134); GregorianCalendar c = DateHelper.asGregorianCalendar(m.toDate()); assertEquals(c.get(Calendar.YEAR),2008); assertEquals(c.get(Calendar.MONTH),Calendar.AUGUST); assertEquals(c.get(Calendar.DAY_OF_MONTH),31); assertEquals(c.get(Calendar.HOUR_OF_DAY),23); assertEquals(c.get(Calendar.MINUTE),21); assertEquals(c.get(Calendar.SECOND),34); assertEquals(c.get(Calendar.MILLISECOND),134); } @Test public void testMax() { DateTime m = new DateTime(2008, 8, 31, 23, 21, 34, 134); DateTime n = m.minusSeconds(4); assertEquals(DateHelper.max(m.toDate(),n.toDate()),m.toDate()); } @Test public void testFormat() { DateTime m = new DateTime(2008, 8, 31, 23, 21, 34, 134, DateTimeZone.UTC); assertEquals(DateHelper.formatDate(m.toDate()), "2008-08-31"); assertEquals(DateHelper.formatNullableDate(null),""); assertEquals(DateHelper.formatDate(m.toDate(), DateHelper.MM_DD_YYYY), "08/31/2008"); assertEquals(DateHelper.formatNullableDate(null, DateHelper.YYYY_MM_DD),""); } @Test(expected = IllegalArgumentException.class) public void testFormatNullDate() { DateHelper.formatDate(null); } @Test(expected = IllegalArgumentException.class) public void testFormatNullFormat() { DateHelper.formatDate(new Date(),null); } @Test public void testCleanDate() { DateTime m = new DateTime(2008, 8, 31, 23, 21, 34, 134); Timestamp t = new Timestamp(m.getMillis()); Date d = m.toDate(); // Make sure the JDK is messed up... (Timestamp != Date, but Date == Timestamp) assertTrue(d.equals(t)); assertFalse(t.equals(d)); assertEquals(DateHelper.cleanDate(d), d); assertEquals(DateHelper.cleanDate(t), d); assertEquals(DateHelper.cleanDate(t).getClass(), Date.class); assertNull(DateHelper.cleanDate(null)); } @Test public void testFloorToDayStart() { DateTime m = new DateTime(2008, 8, 31, 23, 21, 34, 134); DateTime d = new DateTime(2008, 8, 31, 0, 0, 0, 0); final Date actual = DateHelper.floorToDayStart(m.toDate()); assertEquals(actual, d.toDate()); // final Date expected = DateUtil.floorToDayStart(m.toDate()); // Replaced with hard coded value [jsd] final Date expected = new Date(1220155200000L); assertEquals(actual, expected); } }