package z.net.json; import org.junit.Test; import z.net.json.core.DataCharBuffer; import z.net.json.core.IndexBuffer; import static junit.framework.Assert.*; /** */ public class JsonNavigatorTest { @Test public void testWithParser() { DataCharBuffer dataBuffer = new DataCharBuffer(); dataBuffer.data = "{ \"key\" : \"value\", \"key2\" : 12345, \"key3\" : true, \"key4\" : false, \"key5\" : 12345.6789, \"key6\" : \" \\\" \\t \\n \\r \" }".toCharArray(); dataBuffer.length = dataBuffer.data.length; IndexBuffer tokenBuffer = new IndexBuffer(dataBuffer.data.length, true); IndexBuffer elementBuffer = new IndexBuffer(dataBuffer.data.length, true); JsonParser parser = new JsonParser(tokenBuffer, elementBuffer); parser.parse(dataBuffer); assertEquals(14, elementBuffer.count); assertsOnNavigator(dataBuffer, elementBuffer); } public void testWithParser2() { DataCharBuffer dataBuffer = new DataCharBuffer(); dataBuffer.data = "{ \"key\" : \"value\", \"key2\" : 12345, \"key3\" : true, \"key4\" : false, \"key5\" : 12345.6789, \"key6\" : \" \\\" \\t \\n \\r \" }".toCharArray(); dataBuffer.length = dataBuffer.data.length; IndexBuffer elementBuffer = new IndexBuffer(dataBuffer.data.length, true); JsonParser2 parser = new JsonParser2(); parser.parse(dataBuffer, elementBuffer); assertEquals(14, elementBuffer.count); assertsOnNavigator(dataBuffer, elementBuffer); } private void assertsOnNavigator(DataCharBuffer dataBuffer, IndexBuffer elementBuffer) { JsonNavigator navigator = new JsonNavigator(dataBuffer, elementBuffer); assertEquals(ElementTypes.JSON_OBJECT_START, navigator.type()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_NAME, navigator.type()); assertEquals(3, navigator.length()); assertEquals("key", navigator.asString()); assertTrue(navigator.isEqualUnencoded("key")); assertFalse(navigator.isEqualUnencoded("kea")); assertFalse(navigator.isEqualUnencoded("key2")); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_VALUE_STRING, navigator.type()); assertEquals("value", navigator.asString()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_NAME, navigator.type()); assertEquals("key2", navigator.asString()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_VALUE_NUMBER, navigator.type()); assertEquals(12345, navigator.asInt()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_NAME, navigator.type()); assertEquals("key3", navigator.asString()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_VALUE_BOOLEAN, navigator.type()); assertEquals(true, navigator.asBoolean()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_NAME, navigator.type()); assertEquals("key4", navigator.asString()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_VALUE_BOOLEAN, navigator.type()); assertEquals(false, navigator.asBoolean()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_NAME, navigator.type()); assertEquals("key5", navigator.asString()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_VALUE_NUMBER, navigator.type()); assertEquals((double) 12345.6789, navigator.asDouble()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_NAME, navigator.type()); assertEquals("key6", navigator.asString()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_PROPERTY_VALUE_STRING_ENC, navigator.type()); assertEquals(" \" \t \n \r ", navigator.asString()); assertTrue(navigator.hasNext()); navigator.next(); assertEquals(ElementTypes.JSON_OBJECT_END, navigator.type()); assertFalse(navigator.hasNext()); } }