package com.brightgenerous.json.delegate; import static org.junit.Assert.*; import java.io.StringReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.junit.Test; import com.brightgenerous.json.JsonException; import com.brightgenerous.json.TypeToken; public class JsonDelegaterTest { @Test public void formatJson() throws JsonException, ParseException { String dateFormat = "yyyy-MM-dd"; JsonDelegater[] delegs = new JsonDelegater[] { new JsonDelegaterGson(), new JsonDelegaterJackson(), new JsonDelegaterJsonic() }; for (JsonDelegater deleg : delegs) { Foo<Bar> obj1 = new Foo<>(); Foo<Bar> obj2; { obj1.setObj(new Bar()); obj1.getObj().setStr("bar.str"); obj1.setHoge(new Hoge()); obj1.getHoge().setObj(Integer.valueOf(100)); obj1.setDate(new SimpleDateFormat(dateFormat).parse("2013-01-02")); String json = deleg.formatJson(obj1, new TypeToken<Foo<Bar>>() { }.getType(), dateFormat, false); obj2 = deleg.parseJson(new StringReader(json), new TypeToken<Foo<Bar>>() { }.getType(), dateFormat, false); } assertEquals(obj1.getObj().getClass(), obj2.getObj().getClass()); assertEquals(obj1.getObj().getStr(), "bar.str"); assertEquals(obj1.getObj().getStr(), obj2.getObj().getStr()); assertEquals(obj1.getHoge().getClass(), obj2.getHoge().getClass()); assertEquals(obj1.getHoge().getObj(), obj2.getHoge().getObj()); assertEquals(obj1.getDate(), obj2.getDate()); } } static class Foo<T> { private T obj; private Hoge hoge; private Date date; public T getObj() { return obj; } public void setObj(T obj) { this.obj = obj; } public Hoge getHoge() { return hoge; } public void setHoge(Hoge hoge) { this.hoge = hoge; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } } static class Bar { private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } } static class Hoge { private Integer obj; public Integer getObj() { return obj; } public void setObj(Integer obj) { this.obj = obj; } } }