Skip to content

Commit b80e4fb

Browse files
committed
Add parsing related unit tests for JSONArray
1 parent 4206874 commit b80e4fb

File tree

1 file changed

+363
-0
lines changed

1 file changed

+363
-0
lines changed
Lines changed: 363 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,363 @@
1+
package processing.data;
2+
3+
import org.junit.Test;
4+
5+
import java.io.ByteArrayOutputStream;
6+
import java.io.PrintWriter;
7+
8+
import static org.junit.Assert.assertEquals;
9+
import static org.junit.Assert.assertThrows;
10+
11+
12+
public class JSONArrayTest {
13+
@Test
14+
public void testDefaultConstructor() {
15+
JSONArray jsonArray = new JSONArray();
16+
assertEquals(0, jsonArray.size());
17+
}
18+
19+
@Test
20+
public void testEmptyTokenerConstructor() {
21+
JSONArray jsonArray = new JSONArray(new JSONTokener("[]"));
22+
assertEquals(0, jsonArray.size());
23+
}
24+
25+
@Test
26+
public void testNullTokenerConstructor() {
27+
JSONArray jsonArray = new JSONArray(new JSONTokener("[null]"));
28+
assertEquals(1, jsonArray.size());
29+
assertEquals(JSONObject.NULL, jsonArray.get(0));
30+
}
31+
32+
@Test
33+
public void testIntTokenerConstructor() {
34+
JSONArray jsonArray = new JSONArray(new JSONTokener("[1]"));
35+
assertEquals(1, jsonArray.size());
36+
assertEquals(1, jsonArray.get(0));
37+
}
38+
39+
@Test
40+
public void testDoubleTokenerConstructor() {
41+
JSONArray jsonArray = new JSONArray(new JSONTokener("[0.1]"));
42+
assertEquals(1, jsonArray.size());
43+
assertEquals(0.1, jsonArray.get(0));
44+
}
45+
46+
@Test
47+
public void testStringTokenerConstructor() {
48+
JSONArray jsonArray = new JSONArray(new JSONTokener("[\"a\"]"));
49+
assertEquals(1, jsonArray.size());
50+
assertEquals("a", jsonArray.get(0));
51+
}
52+
53+
@Test
54+
public void testArrayTokenerConstructor() {
55+
JSONArray jsonArray = new JSONArray(new JSONTokener("[[1]]"));
56+
assertEquals(1, jsonArray.size());
57+
assertEquals(JSONArray.class, jsonArray.get(0).getClass());
58+
JSONArray innerJsonArray = ((JSONArray) jsonArray.get(0));
59+
assertEquals(1, innerJsonArray.size());
60+
assertEquals(1, innerJsonArray.get(0));
61+
}
62+
63+
@Test
64+
public void testObjectTokenerConstructor() {
65+
JSONArray jsonArray = new JSONArray(new JSONTokener("[{\"a\":\"b\"}]"));
66+
assertEquals(1, jsonArray.size());
67+
assertEquals(JSONObject.class, jsonArray.get(0).getClass());
68+
JSONObject innerJsonObject = ((JSONObject) jsonArray.get(0));
69+
assertEquals(1, innerJsonObject.size());
70+
assertEquals("b", innerJsonObject.get("a"));
71+
}
72+
73+
@Test
74+
public void testMixedTokenerConstructor() {
75+
JSONArray jsonArray = new JSONArray(new JSONTokener("[null, 1, 2147483648, 0.1, \"a\", [1], {\"a\": \"b\"}]"));
76+
assertEquals(7, jsonArray.size());
77+
78+
assertEquals(JSONObject.NULL, jsonArray.get(0));
79+
80+
assertEquals(1, jsonArray.get(1));
81+
82+
assertEquals(2147483648L, jsonArray.get(2));
83+
84+
assertEquals(0.1, jsonArray.get(3));
85+
86+
assertEquals("a", jsonArray.get(4));
87+
88+
assertEquals(JSONArray.class, jsonArray.get(5).getClass());
89+
JSONArray innerJsonArray = (JSONArray) jsonArray.get(5);
90+
assertEquals(1, innerJsonArray.size());
91+
assertEquals(1, innerJsonArray.get(0));
92+
93+
assertEquals(JSONObject.class, jsonArray.get(6).getClass());
94+
JSONObject innerJsonObject = (JSONObject) jsonArray.get(6);
95+
assertEquals(1, innerJsonObject.size());
96+
assertEquals("b", innerJsonObject.get("a"));
97+
}
98+
99+
@Test
100+
public void testTrailingCommaTokenerConstructor() {
101+
JSONArray jsonArray = new JSONArray(new JSONTokener("[1, 2,]"));
102+
assertEquals(2, jsonArray.size());
103+
assertEquals(1, jsonArray.get(0));
104+
assertEquals(2, jsonArray.get(1));
105+
}
106+
107+
@Test
108+
public void testWhitespaceTokenerConstructor() {
109+
JSONArray jsonArray = new JSONArray(new JSONTokener(" [ 1 , 2 , ] "));
110+
assertEquals(2, jsonArray.size());
111+
assertEquals(1, jsonArray.get(0));
112+
assertEquals(2, jsonArray.get(1));
113+
}
114+
115+
@Test
116+
public void testNoSpacesTokenerConstructor() {
117+
JSONArray jsonArray = new JSONArray(new JSONTokener("[1,2]"));
118+
assertEquals(2, jsonArray.size());
119+
assertEquals(1, jsonArray.get(0));
120+
assertEquals(2, jsonArray.get(1));
121+
}
122+
123+
@Test
124+
public void testNoStartTokenerConstructorThrowsException() {
125+
RuntimeException exception = assertThrows(RuntimeException.class, () -> new JSONArray(new JSONTokener("1, 2]")));
126+
assertEquals("A JSONArray text must start with '['", exception.getMessage());
127+
}
128+
129+
@Test
130+
public void testNoEndTokenerConstructorThrowsException() {
131+
RuntimeException exception = assertThrows(RuntimeException.class, () -> new JSONArray(new JSONTokener("[1, 2")));
132+
assertEquals("Expected a ',' or ']'", exception.getMessage());
133+
}
134+
135+
@Test
136+
public void testEmptyIntListConstructor() {
137+
JSONArray jsonArray = new JSONArray(new IntList(new int[]{}));
138+
assertEquals(0, jsonArray.size());
139+
}
140+
141+
@Test
142+
public void testFilledIntListConstructor() {
143+
JSONArray jsonArray = new JSONArray(new IntList(new int[]{1, 2}));
144+
assertEquals(2, jsonArray.size());
145+
assertEquals(1, jsonArray.get(0));
146+
assertEquals(2, jsonArray.get(1));
147+
}
148+
149+
@Test
150+
public void testEmptyFloatListConstructor() {
151+
JSONArray jsonArray = new JSONArray(new FloatList(new float[]{}));
152+
assertEquals(0, jsonArray.size());
153+
}
154+
155+
@Test
156+
public void testFilledFloatListConstructor() {
157+
JSONArray jsonArray = new JSONArray(new FloatList(new float[]{0.1f, 0.2f}));
158+
assertEquals(2, jsonArray.size());
159+
assertEquals(0.1f, jsonArray.get(0));
160+
assertEquals(0.2f, jsonArray.get(1));
161+
}
162+
163+
@Test
164+
public void testEmptyStringListConstructor() {
165+
JSONArray jsonArray = new JSONArray(new StringList(new String[]{}));
166+
assertEquals(0, jsonArray.size());
167+
}
168+
169+
@Test
170+
public void testFilledStringListConstructor() {
171+
JSONArray jsonArray = new JSONArray(new StringList(new String[]{"a", "b"}));
172+
assertEquals(2, jsonArray.size());
173+
assertEquals("a", jsonArray.get(0));
174+
assertEquals("b", jsonArray.get(1));
175+
}
176+
177+
@Test
178+
public void testEmptyArrayConstructor() {
179+
JSONArray jsonArray = new JSONArray(new int[]{});
180+
assertEquals(0, jsonArray.size());
181+
}
182+
183+
@Test
184+
public void testFilledArrayConstructor() {
185+
JSONArray jsonArray = new JSONArray(new int[]{1, 2});
186+
assertEquals(2, jsonArray.size());
187+
assertEquals(1, jsonArray.get(0));
188+
assertEquals(2, jsonArray.get(1));
189+
}
190+
191+
@Test
192+
public void testNullFormat() {
193+
String json = "[\n" +
194+
"null,\n" +
195+
"null\n" +
196+
"]";
197+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
198+
String output = jsonArray.format(0);
199+
assertEquals(json, output);
200+
}
201+
202+
@Test
203+
public void testIntFormat() {
204+
String json = "[\n" +
205+
"1,\n" +
206+
"2\n" +
207+
"]";
208+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
209+
String output = jsonArray.format(0);
210+
assertEquals(json, output);
211+
}
212+
213+
@Test
214+
public void testLongFormat() {
215+
String json = "[\n" +
216+
"2147483648,\n" +
217+
"2147483649\n" +
218+
"]";
219+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
220+
String output = jsonArray.format(0);
221+
assertEquals(json, output);
222+
}
223+
224+
@Test
225+
public void testDoubleFormat() {
226+
String json = "[\n" +
227+
"0.1,\n" +
228+
"0.2\n" +
229+
"]";
230+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
231+
String output = jsonArray.format(0);
232+
assertEquals(json, output);
233+
}
234+
235+
@Test
236+
public void testJSONArrayFormat() {
237+
String json = "[\n" +
238+
"[],\n" +
239+
"[\n" +
240+
"1,\n" +
241+
"2\n" +
242+
"]\n" +
243+
"]";
244+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
245+
String output = jsonArray.format(0);
246+
assertEquals(json, output);
247+
}
248+
249+
@Test
250+
public void testJSONObjectFormat() {
251+
String json = "[\n" +
252+
"{},\n" +
253+
"{\n" +
254+
"\"a\":\"b\",\n" +
255+
"\"c\":\"d\"\n" +
256+
"}\n" +
257+
"]";
258+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
259+
String output = jsonArray.format(0);
260+
assertEquals(json, output);
261+
}
262+
263+
@Test
264+
public void testMixedFormat() {
265+
String json = "[\n" +
266+
"null,\n" +
267+
"1,\n" +
268+
"2147483648,\n" +
269+
"0.1,\n" +
270+
"[\n" +
271+
"1,\n" +
272+
"2\n" +
273+
"],\n" +
274+
"{\n" +
275+
"\"a\":\"b\",\n" +
276+
"\"c\":\"d\"\n" +
277+
"}\n" +
278+
"]";
279+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
280+
String output = jsonArray.format(0);
281+
assertEquals(json, output);
282+
}
283+
284+
@Test
285+
public void testIndentFormat() {
286+
String json = "[\n" +
287+
" 1,\n" +
288+
" 2,\n" +
289+
" [\n" +
290+
" 1,\n" +
291+
" 2\n" +
292+
" ]\n" +
293+
"]";
294+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
295+
String output = jsonArray.format(4);
296+
assertEquals(json, output);
297+
}
298+
299+
@Test
300+
public void testNegativeIndentFormat() {
301+
String json = "[1,2,[1,2]]";
302+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
303+
String output = jsonArray.format(-1);
304+
assertEquals(json, output);
305+
}
306+
307+
@Test
308+
public void testIndentWrite() {
309+
String json = "[\n" +
310+
" 1,\n" +
311+
" 2,\n" +
312+
" [\n" +
313+
" 1,\n" +
314+
" 2\n" +
315+
" ]\n" +
316+
"]";
317+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
318+
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
319+
jsonArray.write(new PrintWriter(byteArrayOutputStream));
320+
assertEquals(json, byteArrayOutputStream.toString());
321+
}
322+
323+
@Test
324+
public void testIndentOptionsWrite() {
325+
String json = "[\n" +
326+
" 1,\n" +
327+
" 2,\n" +
328+
" [\n" +
329+
" 1,\n" +
330+
" 2\n" +
331+
" ]\n" +
332+
"]";
333+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
334+
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
335+
jsonArray.write(new PrintWriter(byteArrayOutputStream), "indent=4");
336+
assertEquals(json, byteArrayOutputStream.toString());
337+
}
338+
339+
@Test
340+
public void testCompactOptionsWrite() {
341+
String json = "[1,2,[1,2]]";
342+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
343+
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
344+
jsonArray.write(new PrintWriter(byteArrayOutputStream), "compact");
345+
assertEquals(json, byteArrayOutputStream.toString());
346+
}
347+
348+
@Test
349+
public void testMultiOptionsWrite() {
350+
String json = "[\n" +
351+
" 1,\n" +
352+
" 2,\n" +
353+
" [\n" +
354+
" 1,\n" +
355+
" 2\n" +
356+
" ]\n" +
357+
"]";
358+
JSONArray jsonArray = new JSONArray(new JSONTokener(json));
359+
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
360+
jsonArray.write(new PrintWriter(byteArrayOutputStream), "indent=2,indent=4");
361+
assertEquals(json, byteArrayOutputStream.toString());
362+
}
363+
}

0 commit comments

Comments
 (0)