blob: 131688f0744bbe7da4d649081679174062db5ab2 [file] [log] [blame]
package org.codehaus.jackson.impl;
import java.io.ByteArrayInputStream;
import java.io.StringReader;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.SerializableString;
import org.codehaus.jackson.io.SerializedString;
public class TestNextXxx
extends main.BaseTest
{
// [JACKSON-653]
public void testIsNextTokenName() throws Exception
{
_testIsNextTokenName1(false);
_testIsNextTokenName1(true);
_testIsNextTokenName2(false);
_testIsNextTokenName2(true);
}
private void _testIsNextTokenName1(boolean useStream) throws Exception
{
final String DOC = "{\"name\":123,\"name2\":14,\"x\":\"name\"}";
JsonFactory jf = new JsonFactory();
JsonParser jp = useStream ?
jf.createJsonParser(new ByteArrayInputStream(DOC.getBytes("UTF-8")))
: jf.createJsonParser(new StringReader(DOC));
SerializedString NAME = new SerializedString("name");
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.START_OBJECT, jp.getCurrentToken());
assertTrue(jp.nextFieldName(NAME));
assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken());
assertEquals(NAME.getValue(), jp.getCurrentName());
assertEquals(NAME.getValue(), jp.getText());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.VALUE_NUMBER_INT, jp.getCurrentToken());
assertEquals(123, jp.getIntValue());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken());
assertEquals("name2", jp.getCurrentName());
assertToken(JsonToken.VALUE_NUMBER_INT, jp.nextToken());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken());
assertEquals("x", jp.getCurrentName());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.VALUE_STRING, jp.getCurrentToken());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.END_OBJECT, jp.getCurrentToken());
assertFalse(jp.nextFieldName(NAME));
assertNull(jp.getCurrentToken());
jp.close();
}
private void _testIsNextTokenName2(boolean useStream) throws Exception
{
final String DOC = "{\"name\":123,\"name2\":14,\"x\":\"name\"}";
JsonFactory jf = new JsonFactory();
JsonParser jp = useStream ?
jf.createJsonParser(new ByteArrayInputStream(DOC.getBytes("UTF-8")))
: jf.createJsonParser(new StringReader(DOC));
SerializableString NAME = new SerializedString("name");
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.START_OBJECT, jp.getCurrentToken());
assertTrue(jp.nextFieldName(NAME));
assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken());
assertEquals(NAME.getValue(), jp.getCurrentName());
assertEquals(NAME.getValue(), jp.getText());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.VALUE_NUMBER_INT, jp.getCurrentToken());
assertEquals(123, jp.getIntValue());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken());
assertEquals("name2", jp.getCurrentName());
assertToken(JsonToken.VALUE_NUMBER_INT, jp.nextToken());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.FIELD_NAME, jp.getCurrentToken());
assertEquals("x", jp.getCurrentName());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.VALUE_STRING, jp.getCurrentToken());
assertFalse(jp.nextFieldName(NAME));
assertToken(JsonToken.END_OBJECT, jp.getCurrentToken());
assertFalse(jp.nextFieldName(NAME));
assertNull(jp.getCurrentToken());
jp.close();
}
}