package org.chililog.server.common; import static org.junit.Assert.*; import java.util.Date; import java.util.GregorianCalendar; import org.chililog.server.common.JsonTranslator; import org.chililog.server.common.Log4JLogger; import org.junit.Test; public class JsonTranslatorTest { private static Log4JLogger _logger = Log4JLogger.getLogger(JsonTranslatorTest.class); @Test public void testBasic() { TestClass t1 = new TestClass(); String json = JsonTranslator.getInstance().toJson(t1); _logger.debug(json); TestClass t2 = JsonTranslator.getInstance().fromJson(json, TestClass.class); assertTrue(json.contains("\"StringWithBigName\": \"hello\"")); assertEquals(t1.getStringWithBigName(), t2.getStringWithBigName()); assertTrue(json.contains("\"Boolean\": false")); assertEquals(t1.isBoolean(), t2.isBoolean()); assertTrue(json.contains("\"Integer\": 1000")); assertEquals(t1.getInteger(), t2.getInteger()); assertTrue(json.contains("\"Date\": \"2011-01-02T23:22:21+1100\"")); assertEquals(t1.getDate(), t2.getDate()); assertTrue(json.contains("\"Colour\": \"Blue\"")); assertEquals(t1.getColour(), t2.getColour()); // Show work with trailing white spaces JsonTranslator.getInstance().fromJson(json + " \r\n ", TestClass.class); } /** * Inner classes have to be static before GSON can deserialize */ public static class TestClass { private String _stringWithBigName = "hello"; private boolean _boolean = false; private int _integer = 1000; private Date _date = new GregorianCalendar(2011, 0, 2, 23, 22, 21).getTime(); private String[] _stringsList = new String[] { "one", "two", "three" }; private Colour _colour = Colour.Blue; private long _longNumber = 123123123L; public TestClass() { return; } public String getStringWithBigName() { return _stringWithBigName; } public void setStringWithBigName(String stringWithBigName) { _stringWithBigName = stringWithBigName; } public boolean isBoolean() { return _boolean; } public void setBoolean(boolean b) { _boolean = b; } public int getInteger() { return _integer; } public void setInteger(int integer) { _integer = integer; } public Date getDate() { return _date; } public void setDate(Date date) { _date = date; } public String[] getStringsList() { return _stringsList; } public void setStringsList(String[] stringsList) { _stringsList = stringsList; } public Colour getColour() { return _colour; } public void setColour(Colour colour) { _colour = colour; } public long getLongNumber() { return _longNumber; } public void setLongNumber(long longNumber) { _longNumber = longNumber; } } public static enum Colour { Red, Green, Blue } }