package com.mastfrog.acteur; import com.mastfrog.acteur.headers.Headers; import java.util.regex.Pattern; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatterBuilder; import org.junit.Test; import static org.junit.Assert.*; /** * * @author Tim Boudreau */ public class VerifyDateTimeBehavior { private static final String WHEN = "1973-09-25T08:10:30.511-05:00"; public static final DateTimeFormatter ISO2822DateFormat = new DateTimeFormatterBuilder().appendDayOfWeekShortText().appendLiteral(", ").appendDayOfMonth(2).appendLiteral(" ").appendMonthOfYearShortText().appendLiteral(" ").appendYear(4, 4).appendLiteral(" ").appendHourOfDay(2).appendLiteral(":").appendMinuteOfHour(2).appendLiteral(":").appendSecondOfMinute(2).appendTimeZoneId() // .appendLiteral(" GMT") .toFormatter(); @Test public void test() throws Throwable { assertTrue(true); DateTime dt = new DateTime(WHEN); DateTime zeroed = dt.withMillisOfSecond(0); System.err.println(dt); String val = Headers.DATE.toString(dt); System.err.println("HDATE " + val); DateTime parsed = Headers.DATE.toValue(val); String val2 = Headers.DATE.toString(parsed); System.err.println("HDATE " + val2); assertEquals(val, val2); assertEquals(zeroed.getMillis(), parsed.getMillis()); assertFalse(zeroed.isBefore(parsed)); assertFalse(dt.isAfter(dt)); assertFalse(dt.isBefore(dt)); assertFalse(zeroed.isAfter(parsed)); DateTime withZulu = dt.withZone(DateTimeZone.UTC); System.err.println("WITH ZULU: " + Headers.DATE.toString(withZulu)); DateTime withEST = zeroed.toDateTime(DateTimeZone.forID("EST")); System.err.println("EST " + withEST); assertEquals(zeroed.getMillis(), withEST.getMillis()); System.err.println("WITH EST: " + Headers.DATE.toString(withEST)); String ss = "Tue, 25 Sep 1973 13:10:30 EST"; String ss1 = "Tue, 25 Sep 1973 13:10:30 -05:00"; String ss2 = "Tue, 25 Sep 73 13:10:30 -05:00"; DateTime ugh = Headers.DATE.toValue(ss); DateTime ugh1 = Headers.DATE.toValue(ss1); assertEquals(ugh, ugh1); System.err.println("UGH " + ugh); System.err.println("UGH 1 " + ugh1); assertEquals(ugh.getMillis(), ugh1.getMillis()); // assertEquals(dt, parsed); DateTime ugh3 = ugh.withZone(DateTimeZone.forOffsetHours(7)); assertEquals(ugh.getMillis(), ugh3.getMillis()); DateTime ugh4 = Headers.DATE.toValue(ss2); assertEquals(ugh4.toString() + " expected " + ugh.toString(), ugh.getMillis(), ugh4.getMillis()); // DateTime ugh5 = ugh.toDateTime(DateTimeZone.forOffsetHours(7)); // assertFalse(ugh3.getMillis() == ugh5.getMillis()); assertEquals(ugh, ugh.toDateTimeISO()); } @Test public void testPatternFromGlob() { String pattern = ActeurFactory.patternFromGlob("foo/?ar"); Pattern p = Pattern.compile(pattern); assertTrue(p.matcher("foo/bar").find()); assertTrue(p.matcher("foo/car").find()); assertTrue(p.matcher("foo/war").find()); assertFalse(p.matcher("foo/warg").find()); p = Pattern.compile(pattern = ActeurFactory.patternFromGlob("foo/*/bar/*/baz")); assertTrue(p.matcher("foo/goo/bar/moo/baz").find()); assertTrue(p.matcher("/foo/goo/bar/moo/baz").find()); assertTrue(p.matcher("/foo/saldfhjalsdfhasdhfj/bar/moo/baz").find()); assertFalse(p.matcher("foo/goo/bar/moo/wuggles").find()); assertFalse(p.matcher("/foo/goo/bar/moo/baz/wunk").find()); assertFalse(p.matcher("/foo/foo/bar/").find()); assertEquals(ActeurFactory.patternFromGlob("/foo"), ActeurFactory.patternFromGlob("foo")); } }