• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.fasterxml.jackson.databind.ser;
2 
3 import com.fasterxml.jackson.core.*;
4 import com.fasterxml.jackson.databind.*;
5 
6 public class TestArraySerialization
7     extends BaseMapTest
8 {
9     private final ObjectMapper MAPPER = sharedMapper();
10 
testLongStringArray()11     public void testLongStringArray() throws Exception
12     {
13         final int SIZE = 40000;
14 
15         StringBuilder sb = new StringBuilder(SIZE*2);
16         for (int i = 0; i < SIZE; ++i) {
17             sb.append((char) i);
18         }
19         String str = sb.toString();
20         byte[] data = MAPPER.writeValueAsBytes(new String[] { "abc", str, null, str });
21         JsonParser jp = MAPPER.createParser(data);
22         assertToken(JsonToken.START_ARRAY, jp.nextToken());
23         assertToken(JsonToken.VALUE_STRING, jp.nextToken());
24         assertEquals("abc", jp.getText());
25         assertToken(JsonToken.VALUE_STRING, jp.nextToken());
26         String actual = jp.getText();
27         assertEquals(str.length(), actual.length());
28         assertEquals(str, actual);
29         assertToken(JsonToken.VALUE_NULL, jp.nextToken());
30         assertToken(JsonToken.VALUE_STRING, jp.nextToken());
31         assertEquals(str, jp.getText());
32         assertToken(JsonToken.END_ARRAY, jp.nextToken());
33         assertNull(jp.nextToken());
34         jp.close();
35     }
36 
testIntArray()37     public void testIntArray() throws Exception
38     {
39         String json = MAPPER.writeValueAsString(new int[] { 1, 2, 3, -7 });
40         assertEquals("[1,2,3,-7]", json);
41     }
42 
testBigIntArray()43     public void testBigIntArray() throws Exception
44     {
45         final int SIZE = 99999;
46         int[] ints = new int[SIZE];
47         for (int i = 0; i < ints.length; ++i) {
48             ints[i] = i;
49         }
50 
51         // Let's try couple of times, to ensure that state is handled
52         // correctly by ObjectMapper (wrt buffer recycling used
53         // with 'writeAsBytes()')
54         for (int round = 0; round < 3; ++round) {
55             byte[] data = MAPPER.writeValueAsBytes(ints);
56             JsonParser jp = MAPPER.createParser(data);
57             assertToken(JsonToken.START_ARRAY, jp.nextToken());
58             for (int i = 0; i < SIZE; ++i) {
59                 assertToken(JsonToken.VALUE_NUMBER_INT, jp.nextToken());
60                 assertEquals(i, jp.getIntValue());
61             }
62             assertToken(JsonToken.END_ARRAY, jp.nextToken());
63             jp.close();
64         }
65     }
66 
testLongArray()67     public void testLongArray() throws Exception
68     {
69         String json = MAPPER.writeValueAsString(new long[] { Long.MIN_VALUE, 0, Long.MAX_VALUE });
70         assertEquals("["+Long.MIN_VALUE+",0,"+Long.MAX_VALUE+"]", json);
71     }
72 
testStringArray()73     public void testStringArray() throws Exception
74     {
75         assertEquals("[\"a\",\"\\\"foo\\\"\",null]",
76                 MAPPER.writeValueAsString(new String[] { "a", "\"foo\"", null }));
77         assertEquals("[]",
78                 MAPPER.writeValueAsString(new String[] { }));
79     }
80 
testDoubleArray()81     public void testDoubleArray() throws Exception
82     {
83         String json = MAPPER.writeValueAsString(new double[] { 1.01, 2.0, -7, Double.NaN, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY });
84         assertEquals("[1.01,2.0,-7.0,\"NaN\",\"-Infinity\",\"Infinity\"]", json);
85     }
86 
testFloatArray()87     public void testFloatArray() throws Exception
88     {
89         String json = MAPPER.writeValueAsString(new float[] { 1.01f, 2.0f, -7f, Float.NaN, Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY });
90         assertEquals("[1.01,2.0,-7.0,\"NaN\",\"-Infinity\",\"Infinity\"]", json);
91     }
92 }
93