package org.wta.util; import org.junit.Test; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNull; public class DateUtilsTest { @Test public void testParseRfc1123DateTime() throws Exception { Calendar cal = Calendar.getInstance(); cal.clear(); cal.setTimeZone(TimeZone.getTimeZone("GMT")); cal.set(Calendar.YEAR, 2015); cal.set(Calendar.MONTH, Calendar.JUNE); cal.set(Calendar.DATE, 20); cal.set(Calendar.HOUR, 2); cal.set(Calendar.MINUTE, 37); cal.set(Calendar.SECOND, 14); Date expected = cal.getTime(); assertEquals(expected, DateUtils.parseRfc1123DateTime("Sat, 20 Jun 2015 02:37:14 GMT")); assertNull(DateUtils.parseRfc1123DateTime("Sat, 20 Jun 2015 02:37:14")); assertNull(DateUtils.parseRfc1123DateTime("Sat, 20 Jun 2015")); } @Test public void testFormatRfc1123DateTime() throws Exception { Calendar cal = Calendar.getInstance(); cal.clear(); cal.setTimeZone(TimeZone.getTimeZone("GMT+1")); cal.set(Calendar.YEAR, 2015); cal.set(Calendar.MONTH, Calendar.JUNE); cal.set(Calendar.DATE, 20); cal.set(Calendar.HOUR, 2); cal.set(Calendar.MINUTE, 37); cal.set(Calendar.SECOND, 14); Date date = cal.getTime(); TimeZone tz = TimeZone.getTimeZone("GMT"); assertEquals("Sat, 20 Jun 2015 01:37:14 GMT", DateUtils.formatRfc1123DateTime(date, tz)); } @Test public void testParseIso8601DateTime() throws Exception { Calendar cal = Calendar.getInstance(); cal.clear(); cal.setTimeZone(TimeZone.getTimeZone("GMT")); cal.set(Calendar.YEAR, 1997); cal.set(Calendar.MONTH, Calendar.JULY); cal.set(Calendar.DATE, 16); cal.set(Calendar.HOUR, 18); cal.set(Calendar.MINUTE, 20); cal.set(Calendar.SECOND, 30); Date expected = cal.getTime(); // dates without times or time zones are not supported assertNull(DateUtils.parseIso8601DateTime("1997")); assertNull(DateUtils.parseIso8601DateTime("1997-07")); assertNull(DateUtils.parseIso8601DateTime("1997-07-16")); // dates without seconds are not supported assertNull(DateUtils.parseIso8601DateTime("1997-07-16T19:20+01:00")); // dates with fractional seconds containing less that 3 digits are not supported assertNull(DateUtils.parseIso8601DateTime("1997-07-16T19:20:30.45+01:00")); assertEquals(expected, DateUtils.parseIso8601DateTime("1997-07-16T19:20:30+01:00")); assertEquals(expected, DateUtils.parseIso8601DateTime("1997-07-16T18:20:30Z")); cal.set(Calendar.MILLISECOND, 235); expected = cal.getTime(); assertEquals(expected, DateUtils.parseIso8601DateTime("1997-07-16T19:20:30.235+01:00")); assertEquals(expected, DateUtils.parseIso8601DateTime("1997-07-16T18:20:30.235Z")); } @Test public void testFormatIso8601DateTime() throws Exception { Calendar cal = Calendar.getInstance(); cal.clear(); cal.setTimeZone(TimeZone.getTimeZone("GMT+1")); cal.set(Calendar.YEAR, 1997); cal.set(Calendar.MONTH, Calendar.JULY); cal.set(Calendar.DATE, 16); cal.set(Calendar.HOUR, 19); cal.set(Calendar.MINUTE, 20); cal.set(Calendar.SECOND, 30); Date date = cal.getTime(); TimeZone tz = TimeZone.getTimeZone("GMT"); assertEquals("1997-07-16T18:20:30+00:00", DateUtils.formatIso8601DateTime(date, tz)); } }