| 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()); |
| } |
| } |