package org.springmodules.validation.util.date;
import java.text.SimpleDateFormat;
import java.util.Date;
import junit.framework.TestCase;
/**
* @author Steven Devijver
* @since 25-04-2005
*/
public class DefaultDateParserTests extends TestCase {
public DefaultDateParserTests() {
super();
}
public DefaultDateParserTests(String arg0) {
super(arg0);
}
public void testFormat_junk1() {
try {
new DefaultDateParser().parse("2005-04-09 2330:00");
fail();
} catch (DateParseException e) {
}
}
public void testFormat_yyyyMMdd() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409");
assertNotNull(t);
assertEquals("2005-04-09", formatDate(t, "yyyy-MM-dd"));
}
public void testFormat_yyyy_MM_dd() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409");
assertNotNull(t);
assertEquals("2005-04-09", formatDate(t, "yyyy-MM-dd"));
}
public void testFormat_yyyy_MM_dd_HH_mm_ss() throws DateParseException {
Date t = new DefaultDateParser().parse("2005-04-09 23:30:00");
assertNotNull(t);
assertEquals("2005-04-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testFormat_yyyyMMdd_HHmmss() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000");
assertNotNull(t);
assertEquals("2005-04-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testFormat_yyyyMMdd_HH_mm_ss() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 23:30:00");
assertNotNull(t);
assertEquals("2005-04-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testFormat_yyyy_MM_dd_HHmmss() throws DateParseException {
Date t = new DefaultDateParser().parse("2005-04-09 233000");
assertNotNull(t);
assertEquals("2005-04-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_addMilliseconds() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000+10S");
assertNotNull(t);
assertEquals("2005-04-09 23:30:00.010", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_subtractMilliseconds() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000-10S");
assertNotNull(t);
assertEquals("2005-04-09 23:29:59.990", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftUpSecond() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000>s");
assertNotNull(t);
assertEquals("2005-04-09 23:30:00.999", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftDownSecond() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000<s");
assertNotNull(t);
assertEquals("2005-04-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_addSeconds() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000+10s");
assertNotNull(t);
assertEquals("2005-04-09 23:30:10.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_subtractSeconds() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000-10s");
assertNotNull(t);
assertEquals("2005-04-09 23:29:50.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftUpMinute() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000>m");
assertNotNull(t);
assertEquals("2005-04-09 23:30:59.999", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftDownMinute() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233025<m");
assertNotNull(t);
assertEquals("2005-04-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_addMinutes() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000+10m");
assertNotNull(t);
assertEquals("2005-04-09 23:40:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_subtractMinutes() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000-10m");
assertNotNull(t);
assertEquals("2005-04-09 23:20:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftUpHour() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000>H");
assertNotNull(t);
assertEquals("2005-04-09 23:59:59.999", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftDownHour() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000<H");
assertNotNull(t);
assertEquals("2005-04-09 23:00:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_addHours() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000+10H");
assertNotNull(t);
assertEquals("2005-04-10 09:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_subtractHours() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000-10H");
assertNotNull(t);
assertEquals("2005-04-09 13:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftUpDay() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000>d");
assertNotNull(t);
assertEquals("2005-04-09 23:59:59.999", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftDownDay() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000<d");
assertNotNull(t);
assertEquals("2005-04-09 00:00:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_addDays() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000+10d");
assertNotNull(t);
assertEquals("2005-04-19 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_subtractDays() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000-10d");
assertNotNull(t);
assertEquals("2005-03-30 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftUpWeek() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000>w");
assertNotNull(t);
assertEquals("2005-04-10 23:59:59.999", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftDownWeek() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000<w");
assertNotNull(t);
assertEquals("2005-04-04 00:00:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_addWeeks() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000+10w");
assertNotNull(t);
assertEquals("2005-06-18 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_subtractWeeks() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000-10w");
assertNotNull(t);
assertEquals("2005-01-29 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftUpMonth() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000>M");
assertNotNull(t);
assertEquals("2005-04-30 23:59:59.999", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftDownMonth() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000<M");
assertNotNull(t);
assertEquals("2005-04-01 00:00:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_addMonths() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000+10M");
assertNotNull(t);
assertEquals("2006-02-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_subtractMonths() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000-10M");
assertNotNull(t);
assertEquals("2004-06-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftUpYear() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000>y");
assertNotNull(t);
assertEquals("2005-12-31 23:59:59.999", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_shiftDownYear() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000<y");
assertNotNull(t);
assertEquals("2005-01-01 00:00:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_addYears() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000+10y");
assertNotNull(t);
assertEquals("2015-04-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testModifier_subtractYears() throws DateParseException {
Date t = new DefaultDateParser().parse("20050409 233000-10y");
assertNotNull(t);
assertEquals("1995-04-09 23:30:00.000", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testComplexModifier1() throws DateParseException {
Date t = new DefaultDateParser().parse("2005-04-09 23:30:00>M+10d+8H");
assertNotNull(t);
assertEquals("2005-05-11 07:59:59.999", formatDate(t, "yyyy-MM-dd HH:mm:ss.SSS"));
}
public void testT() throws DateParseException {
Date t1 = new Date();
Date t2 = new DefaultDateParser().parse("T");
Date t3 = new Date();
assertNotNull(t2);
assertTrue(t1.getTime() <= t2.getTime() && t2.getTime() <= t3.getTime());
}
public String formatDate(Date t, String format) {
return new SimpleDateFormat(format).format(t);
}
}