package fitnesse.util; import java.text.ParseException; import java.util.Date; import java.util.regex.Pattern; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class DateTimeUtilTest { @Test public void canParseIsoDate() throws ParseException { Date date = new Date(); String formatted = DateTimeUtil.formatDate(date); Date newDate = DateTimeUtil.getDateFromString(formatted); // Chop off milliseconds, since they might differ. assertEquals(date.getTime() / 1000, newDate.getTime() / 1000); } @Test public void canParseISO8601DateFormat() throws ParseException { // If not, it will throw runtime exception String dateString = "2015-10-12T18:00:00+00:00"; DateTimeUtil.getDateFromString(dateString); } @Test public void canParseUSDateFormat() throws ParseException { // If not, it will throw runtime exception String dateString = "12/31/1969 18:00:00"; DateTimeUtil.getDateFromString(dateString); } @Test(expected = ParseException.class) public void canNotParseInvalidDateFormat() throws ParseException { String dateString = "1-1/69 18:00:00"; DateTimeUtil.getDateFromString(dateString); } @Test public void dateIsFormattedAsIso8601() { Pattern isoPattern = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(Z|[+-]\\d{2}:\\d{2})"); String formatted = DateTimeUtil.formatDate(new Date()); assertTrue(String.format("String '%s' does not match pattern '%s'", formatted, isoPattern.pattern()), isoPattern.matcher(formatted).find()); } }