package z.net.json;
import junit.framework.Assert;
import org.junit.Test;
import z.net.json.core.DataCharBuffer;
import z.net.json.core.IndexBuffer;
/**
*/
public class JsonTokenizerTest {
@Test
public void test () {
DataCharBuffer dataBuffer = new DataCharBuffer();
dataBuffer.data = "{ \"key\" : \"value\" }".toCharArray();
dataBuffer.length = dataBuffer.data.length;
JsonTokenizer tokenizer = new JsonTokenizer(dataBuffer, new IndexBuffer(dataBuffer.data.length, true));
/* { */
Assert.assertTrue(tokenizer.hasMoreTokens());
tokenizer.parseToken();
Assert.assertEquals(0, tokenizer.tokenPosition());
Assert.assertEquals(TokenTypes.JSON_CURLY_BRACKET_LEFT, tokenizer.tokenType());
/* key */
Assert.assertTrue(tokenizer.hasMoreTokens());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(4, tokenizer.tokenPosition());
Assert.assertEquals(3, tokenizer.tokenLength());
/* : */
Assert.assertTrue(tokenizer.hasMoreTokens());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(9, tokenizer.tokenPosition());
Assert.assertEquals(TokenTypes.JSON_COLON, tokenizer.tokenType());
/* "value" */
Assert.assertTrue(tokenizer.hasMoreTokens());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(12, tokenizer.tokenPosition());
Assert.assertEquals(5, tokenizer.tokenLength());
/* } */
Assert.assertTrue(tokenizer.hasMoreTokens());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(19, tokenizer.tokenPosition());
Assert.assertEquals(TokenTypes.JSON_CURLY_BRACKET_RIGHT, tokenizer.tokenType());
Assert.assertFalse(tokenizer.hasMoreTokens());
}
@Test
public void testNumbers() {
DataCharBuffer dataBuffer = new DataCharBuffer();
dataBuffer.data = "{ \"key\" : 0.123, \"key2\" : 1234567890.0123456789 }".toCharArray();
dataBuffer.length = dataBuffer.data.length;
JsonTokenizer tokenizer = new JsonTokenizer(dataBuffer, new IndexBuffer(dataBuffer.data.length, true));
Assert.assertTrue(tokenizer.hasMoreTokens());
tokenizer.parseToken();
Assert.assertEquals(0, tokenizer.tokenPosition());
Assert.assertEquals(TokenTypes.JSON_CURLY_BRACKET_LEFT, tokenizer.tokenType());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(4, tokenizer.tokenPosition());
Assert.assertEquals(3, tokenizer.tokenLength());
Assert.assertEquals(TokenTypes.JSON_STRING_TOKEN, tokenizer.tokenType());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(9, tokenizer.tokenPosition());
Assert.assertEquals(TokenTypes.JSON_COLON, tokenizer.tokenType());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(11, tokenizer.tokenPosition());
Assert.assertEquals(5, tokenizer.tokenLength());
Assert.assertEquals(TokenTypes.JSON_NUMBER_TOKEN, tokenizer.tokenType());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(16, tokenizer.tokenPosition());
Assert.assertEquals(TokenTypes.JSON_COMMA, tokenizer.tokenType());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(19, tokenizer.tokenPosition());
Assert.assertEquals(4, tokenizer.tokenLength());
Assert.assertEquals(TokenTypes.JSON_STRING_TOKEN, tokenizer.tokenType());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(25, tokenizer.tokenPosition());
Assert.assertEquals(TokenTypes.JSON_COLON, tokenizer.tokenType());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(27, tokenizer.tokenPosition());
Assert.assertEquals(21, tokenizer.tokenLength());
Assert.assertEquals(TokenTypes.JSON_NUMBER_TOKEN, tokenizer.tokenType());
tokenizer.nextToken();
tokenizer.parseToken();
Assert.assertEquals(49, tokenizer.tokenPosition());
Assert.assertEquals(TokenTypes.JSON_CURLY_BRACKET_RIGHT, tokenizer.tokenType());
}
}