package com.fasterxml.jackson.databind;
import java.text.ParseException;
import java.util.*;
import com.fasterxml.jackson.databind.util.StdDateFormat;
public class TestStdDateFormat
extends BaseMapTest
{
public void testFactories() {
TimeZone tz = TimeZone.getTimeZone("GMT");
Locale loc = Locale.US;
assertNotNull(StdDateFormat.getISO8601Format(tz, loc));
assertNotNull(StdDateFormat.getRFC1123Format(tz, loc));
}
// [databind#803]
public void testLenientDefaults() throws Exception
{
StdDateFormat f = StdDateFormat.instance;
// default should be lenient
assertTrue(f.isLenient());
StdDateFormat f2 = f.clone();
assertTrue(f2.isLenient());
f2.setLenient(false);
assertFalse(f2.isLenient());
f2.setLenient(true);
assertTrue(f2.isLenient());
// and for testing, finally, leave as non-lenient
f2.setLenient(false);
assertFalse(f2.isLenient());
StdDateFormat f3 = f2.clone();
assertFalse(f3.isLenient());
}
public void testLenientParsing() throws Exception
{
StdDateFormat f = StdDateFormat.instance.clone();
f.setLenient(false);
// first, legal dates are... legal
Date dt = f.parse("2015-11-30");
assertNotNull(dt);
// but as importantly, when not lenient, do not allow
try {
f.parse("2015-11-32");
fail("Should not pass");
} catch (ParseException e) {
verifyException(e, "can not parse date");
}
// ... yet, with lenient, do allow
f.setLenient(true);
dt = f.parse("2015-11-32");
assertNotNull(dt);
}
public void testInvalid() {
StdDateFormat std = new StdDateFormat();
try {
std.parse("foobar");
} catch (java.text.ParseException e) {
verifyException(e, "Can not parse");
}
}
}