package org.json.simple.serialization; import junit.framework.TestCase; import org.json.simple.serialization.primitives.DateCodec; import org.junit.Test; import java.io.StringReader; import java.util.Date; /** * @author karl.wettin@kodapan.se * @since 2010-feb-02 19:14:08 */ public class TestDateCodec extends TestCase { private ISO8601CanonicalDateFormat iso8601 = new ISO8601CanonicalDateFormat(); @Test public void test() throws Exception { CodecRegistry registry = new CodecRegistry(); Date now = new Date(); String json = registry.getCodec(Date.class).marshal(now); Date time = registry.getCodec(Date.class).unmarshal(new StringReader("{ \"_class\" : \"java.util.Date\", \"time\" : "+now.getTime()+" }")); Date iso = registry.getCodec(Date.class).unmarshal(new StringReader("{ \"_class\" : \"java.util.Date\", \"iso8601\" : \""+iso8601.format(now)+"\" }")); Date primitive = registry.getCodec(Date.class).unmarshal(new StringReader("\""+iso8601.format(now)+"\"")); assertEquals(now, time); assertEquals(now, iso); assertEquals(now, primitive); Foo[] foo = new Foo[4]; foo[0] = new Foo(); foo[0].time = now; foo[0].value = "bar"; json = registry.getCodec(Foo.class).marshal(foo[0]); foo[1] = registry.getCodec(Foo.class).unmarshal(json); foo[2] = registry.getCodec(Foo.class).unmarshal("{ \"time\" : { \"_class\" : \"java.util.Date\", \"iso8601\" : \""+iso8601.format(now)+"\" }, \"value\" : \"bar\"}"); foo[3] = registry.getCodec(Foo.class).unmarshal("{ \"time\" : { \"_class\" : \"java.util.Date\", \"time\" : "+now.getTime()+" }, \"value\" : \"bar\"}"); for (int i=1; i<foo.length; i++) { assertEquals(foo[0].time, foo[i].time); assertEquals(foo[0].value, foo[i].value); } Date isoz = new ISO8601CanonicalDateFormat().parse("2010-08-31T11:52:03.000Z"); System.currentTimeMillis(); } public static class Foo { private Date time; private String value; public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } }