blob: 4c85e67465a31a05744d240dfa437d6ea0cc365b [file] [log] [blame]
package org.codehaus.jackson.smile;
import java.io.ByteArrayOutputStream;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.io.SerializedString;
public class TestGeneratorWithSerializedString extends SmileTestBase
{
final static String NAME_WITH_QUOTES = "\"name\"";
final static String NAME_WITH_LATIN1 = "P\u00f6ll\u00f6";
private final SerializedString quotedName = new SerializedString(NAME_WITH_QUOTES);
private final SerializedString latin1Name = new SerializedString(NAME_WITH_LATIN1);
public void testSimple() throws Exception
{
SmileFactory sf = new SmileFactory();
ByteArrayOutputStream out = new ByteArrayOutputStream();
JsonGenerator jgen = sf.createJsonGenerator(out);
_writeSimple(jgen);
jgen.close();
byte[] smileB = out.toByteArray();
_verifySimple(sf.createJsonParser(smileB));
}
/*
/**********************************************************
/* Helper methods
/**********************************************************
*/
private void _writeSimple(JsonGenerator jgen) throws Exception
{
// Let's just write array of 2 objects
jgen.writeStartArray();
jgen.writeStartObject();
jgen.writeFieldName(quotedName);
jgen.writeString("a");
jgen.writeFieldName(latin1Name);
jgen.writeString("b");
jgen.writeEndObject();
jgen.writeStartObject();
jgen.writeFieldName(latin1Name);
jgen.writeString("c");
jgen.writeFieldName(quotedName);
jgen.writeString("d");
jgen.writeEndObject();
jgen.writeEndArray();
}
private void _verifySimple(JsonParser jp) throws Exception
{
assertToken(JsonToken.START_ARRAY, jp.nextToken());
assertToken(JsonToken.START_OBJECT, jp.nextToken());
assertToken(JsonToken.FIELD_NAME, jp.nextToken());
assertEquals(NAME_WITH_QUOTES, jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("a", jp.getText());
assertToken(JsonToken.FIELD_NAME, jp.nextToken());
assertEquals(NAME_WITH_LATIN1, jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("b", jp.getText());
assertToken(JsonToken.END_OBJECT, jp.nextToken());
assertToken(JsonToken.START_OBJECT, jp.nextToken());
assertToken(JsonToken.FIELD_NAME, jp.nextToken());
assertEquals(NAME_WITH_LATIN1, jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("c", jp.getText());
assertToken(JsonToken.FIELD_NAME, jp.nextToken());
assertEquals(NAME_WITH_QUOTES, jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("d", jp.getText());
assertToken(JsonToken.END_OBJECT, jp.nextToken());
assertToken(JsonToken.END_ARRAY, jp.nextToken());
assertNull(jp.nextToken());
}
}