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"); } } }