diff options
author | Jerome Guibert <jerome.guibert@fullsix.com> | 2014-09-19 15:41:27 +0200 |
---|---|---|
committer | Jerome Guibert <jerome.guibert@fullsix.com> | 2014-09-19 15:41:27 +0200 |
commit | 3c2d40901088f38eca41896f5b7410729e85ef70 (patch) | |
tree | 4c0e928bbf11a762c2a9c483e7ebe3c50c5abb76 /src/test/java/com/fasterxml/jackson/databind/util | |
parent | f95a92786724c90bb33ec30eee6990831617eb23 (diff) | |
download | jackson-databind-3c2d40901088f38eca41896f5b7410729e85ef70.tar.gz |
extends iso8601 format to support parse according expression: [yyyy-MM-dd|yyyyMMdd][T(hh:mm[:ss[.sss]]|hhmm[ss[.sss]])]?[Z|[+-]hh:mm]]
Diffstat (limited to 'src/test/java/com/fasterxml/jackson/databind/util')
-rw-r--r-- | src/test/java/com/fasterxml/jackson/databind/util/ISO8601UtilsTest.java | 104 |
1 files changed, 98 insertions, 6 deletions
diff --git a/src/test/java/com/fasterxml/jackson/databind/util/ISO8601UtilsTest.java b/src/test/java/com/fasterxml/jackson/databind/util/ISO8601UtilsTest.java index 21b9046d3..9c97807fc 100644 --- a/src/test/java/com/fasterxml/jackson/databind/util/ISO8601UtilsTest.java +++ b/src/test/java/com/fasterxml/jackson/databind/util/ISO8601UtilsTest.java @@ -1,28 +1,39 @@ package com.fasterxml.jackson.databind.util; -import java.util.*; +import java.text.ParseException; import java.text.ParsePosition; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; import com.fasterxml.jackson.databind.BaseMapTest; -import com.fasterxml.jackson.databind.util.ISO8601Utils; /** * @see ISO8601Utils */ -public class ISO8601UtilsTest extends BaseMapTest -{ +public class ISO8601UtilsTest extends BaseMapTest { private Date date; + private Date dateWithoutTime; private Date dateZeroMillis; + private Date dateZeroSecondAndMillis; @Override - public void setUp() - { + public void setUp() { Calendar cal = new GregorianCalendar(2007, 8 - 1, 13, 19, 51, 23); cal.setTimeZone(TimeZone.getTimeZone("GMT")); cal.set(Calendar.MILLISECOND, 789); date = cal.getTime(); cal.set(Calendar.MILLISECOND, 0); dateZeroMillis = cal.getTime(); + cal.set(Calendar.SECOND, 0); + dateZeroSecondAndMillis = cal.getTime(); + + cal = new GregorianCalendar(2007, 8 - 1, 13, 0, 0, 0); + cal.set(Calendar.MILLISECOND, 0); + cal.setTimeZone(TimeZone.getTimeZone("GMT")); + dateWithoutTime = cal.getTime(); + } public void testFormat() { @@ -58,4 +69,85 @@ public class ISO8601UtilsTest extends BaseMapTest assertEquals(date, d); } + public void testParseShortDate() throws java.text.ParseException { + Date d = ISO8601Utils.parse("20070813T19:51:23.789Z", new ParsePosition(0)); + assertEquals(date, d); + + d = ISO8601Utils.parse("20070813T19:51:23Z", new ParsePosition(0)); + assertEquals(dateZeroMillis, d); + + d = ISO8601Utils.parse("20070813T21:51:23.789+02:00", new ParsePosition(0)); + assertEquals(date, d); + } + + public void testParseShortTime() throws java.text.ParseException { + Date d = ISO8601Utils.parse("2007-08-13T195123.789Z", new ParsePosition(0)); + assertEquals(date, d); + + d = ISO8601Utils.parse("2007-08-13T195123Z", new ParsePosition(0)); + assertEquals(dateZeroMillis, d); + + d = ISO8601Utils.parse("2007-08-13T215123.789+02:00", new ParsePosition(0)); + assertEquals(date, d); + } + + public void testParseShortDateTime() throws java.text.ParseException { + Date d = ISO8601Utils.parse("20070813T195123.789Z", new ParsePosition(0)); + assertEquals(date, d); + + d = ISO8601Utils.parse("20070813T195123Z", new ParsePosition(0)); + assertEquals(dateZeroMillis, d); + + d = ISO8601Utils.parse("20070813T215123.789+02:00", new ParsePosition(0)); + assertEquals(date, d); + } + + public void testParseWithoutTime() throws ParseException { + Date d = ISO8601Utils.parse("2007-08-13Z", new ParsePosition(0)); + assertEquals(dateWithoutTime, d); + + d = ISO8601Utils.parse("20070813Z", new ParsePosition(0)); + assertEquals(dateWithoutTime, d); + + d = ISO8601Utils.parse("2007-08-13+00:00", new ParsePosition(0)); + assertEquals(dateWithoutTime, d); + + d = ISO8601Utils.parse("20070813+00:00", new ParsePosition(0)); + assertEquals(dateWithoutTime, d); + } + + public void testParseWithoutTimeAndTimeZoneMustFail() { + try { + ISO8601Utils.parse("2007-08-13", new ParsePosition(0)); + fail(); + } catch (ParseException p) { + } + try { + ISO8601Utils.parse("20070813", new ParsePosition(0)); + fail(); + } catch (ParseException p) { + } + try { + ISO8601Utils.parse("2007-08-13", new ParsePosition(0)); + fail(); + } catch (ParseException p) { + } + try { + ISO8601Utils.parse("20070813", new ParsePosition(0)); + fail(); + } catch (ParseException p) { + } + } + + + public void testParseOptional() throws java.text.ParseException { + Date d = ISO8601Utils.parse("2007-08-13T19:51Z", new ParsePosition(0)); + assertEquals(dateZeroSecondAndMillis, d); + + d = ISO8601Utils.parse("2007-08-13T1951Z", new ParsePosition(0)); + assertEquals(dateZeroSecondAndMillis, d); + + d = ISO8601Utils.parse("2007-08-13T21:51+02:00", new ParsePosition(0)); + assertEquals(dateZeroSecondAndMillis, d); + } } |