blob: 928505d13e6a4eb7ed9cf9975f4630f519be7b89 [file] [log] [blame]
package org.codehaus.jackson.map.ser;
import org.codehaus.jackson.*;
import main.BaseTest;
import java.io.*;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.map.*;
public class TestArraySerialization
extends BaseTest
{
public void testLongStringArray() throws Exception
{
final int SIZE = 40000;
StringBuilder sb = new StringBuilder(SIZE*2);
for (int i = 0; i < SIZE; ++i) {
sb.append((char) i);
}
String str = sb.toString();
ObjectMapper mapper = new ObjectMapper();
byte[] data = mapper.writeValueAsBytes(new String[] { "abc", str, null, str });
JsonParser jp = mapper.getJsonFactory().createJsonParser(data);
assertToken(JsonToken.START_ARRAY, jp.nextToken());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("abc", jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
String actual = jp.getText();
assertEquals(str.length(), actual.length());
assertEquals(str, actual);
assertToken(JsonToken.VALUE_NULL, jp.nextToken());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals(str, jp.getText());
assertToken(JsonToken.END_ARRAY, jp.nextToken());
assertNull(jp.nextToken());
}
public void testIntArray() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
mapper.writeValue(sw, new int[] { 1, 2, 3, -7 });
assertEquals("[1,2,3,-7]", sw.toString().trim());
}
public void testBigIntArray() throws Exception
{
final int SIZE = 99999;
ObjectMapper mapper = new ObjectMapper();
int[] ints = new int[SIZE];
for (int i = 0; i < ints.length; ++i) {
ints[i] = i;
}
// Let's try couple of times, to ensure that state is handled
// correctly by ObjectMapper (wrt buffer recycling used
// with 'writeAsBytes()')
JsonFactory f = mapper.getJsonFactory();
for (int round = 0; round < 3; ++round) {
byte[] data = mapper.writeValueAsBytes(ints);
JsonParser jp = f.createJsonParser(data);
assertToken(JsonToken.START_ARRAY, jp.nextToken());
for (int i = 0; i < SIZE; ++i) {
assertToken(JsonToken.VALUE_NUMBER_INT, jp.nextToken());
assertEquals(i, jp.getIntValue());
}
assertToken(JsonToken.END_ARRAY, jp.nextToken());
}
}
public void testLongArray() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
mapper.writeValue(sw, new long[] { Long.MIN_VALUE, 0, Long.MAX_VALUE });
assertEquals("["+Long.MIN_VALUE+",0,"+Long.MAX_VALUE+"]", sw.toString().trim());
}
public void testStringArray() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
mapper.writeValue(sw, new String[] { "a", "\"foo\"", null });
assertEquals("[\"a\",\"\\\"foo\\\"\",null]", sw.toString().trim());
}
public void testDoubleArray() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
mapper.writeValue(sw, new double[] { 1.01, 2.0, -7, Double.NaN, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY });
assertEquals("[1.01,2.0,-7.0,\"NaN\",\"-Infinity\",\"Infinity\"]", sw.toString().trim());
}
public void testFloatArray() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
mapper.writeValue(sw, new float[] { 1.01f, 2.0f, -7f, Float.NaN, Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY });
assertEquals("[1.01,2.0,-7.0,\"NaN\",\"-Infinity\",\"Infinity\"]", sw.toString().trim());
}
}