1+ package processing .data ;
2+
3+ import org .junit .Before ;
4+ import org .junit .Test ;
5+
6+ import java .io .StringReader ;
7+
8+ import static org .junit .Assert .*;
9+
10+ public class JSONArrayTest {
11+ private JSONArray jsonArray ;
12+
13+ @ Before
14+ public void setUp () {
15+ jsonArray = new JSONArray ();
16+ }
17+
18+ // Verify getString method works as intended
19+ @ Test
20+ public void testGetString () {
21+ JSONArray array = JSONArray .parse ("['sample', 'text']" );
22+ assertEquals ("sample" , array .getString (0 ));
23+ assertEquals ("text" , array .getString (1 ));
24+ }
25+
26+ // Verify getString method with default return value works as intended
27+ @ Test
28+ public void testGetStringWithDefault () {
29+ JSONArray array = JSONArray .parse ("['sample', null]" );
30+ assertEquals ("sample" , array .getString (0 , "default" ));
31+ assertEquals ("random" , array .getString (1 , "random" ));
32+ assertEquals ("default" , array .getString (2 , "default" ));
33+ }
34+
35+ // Verify getString method with invalid type throws exception
36+ @ Test (expected = RuntimeException .class )
37+ public void testGetStringWithInvalidType () {
38+ JSONArray array = JSONArray .parse ("[132]" );
39+ array .getString (0 );
40+ }
41+
42+ // Verify list creation from String list works as intended
43+ @ Test
44+ public void testJSONArrayFromStringList () {
45+ StringList stringList = new StringList ();
46+ stringList .append ("some" );
47+ stringList .append ("text" );
48+
49+ JSONArray array = new JSONArray (stringList );
50+
51+ assertEquals (2 , array .size ());
52+ assertEquals ("some" , array .getString (0 ));
53+ assertEquals ("text" , array .getString (1 ));
54+ }
55+
56+ // Verify getInt method works as intended
57+ @ Test
58+ public void testGetInt () {
59+ JSONArray array = JSONArray .parse ("[ 118, 999]" );
60+ assertEquals (118 , array .getInt (0 ));
61+ assertEquals (999 , array .getInt (1 ));
62+ }
63+
64+ // Verify getInt method with default return value works as intended
65+ @ Test
66+ public void testGetIntWithDefault () {
67+ JSONArray array = JSONArray .parse ("[72, null]" );
68+ assertEquals (72 , array .getInt (0 , -1 ));
69+ assertEquals (-1 , array .getInt (1 , -1 ));
70+ assertEquals (-1 , array .getInt (2 , -1 ));
71+ }
72+
73+ // Verify getInt method with invalid type throws exception
74+ @ Test (expected = RuntimeException .class )
75+ public void testGetIntWithInvalidType () {
76+ JSONArray array = JSONArray .parse ("['test']" );
77+ array .getInt (0 );
78+ }
79+
80+ // Verify list creation from int list works as intended
81+ @ Test
82+ public void testJSONArrayFromIntList () {
83+ IntList intList = new IntList ();
84+ intList .append (1 );
85+ intList .append (2 );
86+ intList .append (3 );
87+
88+ JSONArray array = new JSONArray (intList );
89+
90+ assertEquals (3 , array .size ());
91+ assertEquals (1 , array .getInt (0 ));
92+ }
93+
94+ // Verify getLong method works as intended
95+ @ Test
96+ public void testGetLong () {
97+ JSONArray array = JSONArray .parse ("[ 9223372036854775807, 72]" );
98+ assertEquals (9223372036854775807L , array .getLong (0 ));
99+ assertEquals (72L , array .getLong (1 ));
100+ }
101+
102+ // Verify getLong method with default return value works as intended
103+ @ Test
104+ public void testGetLongWithDefault () {
105+ JSONArray array = JSONArray .parse ("[9223372036854775807, null]" );
106+ assertEquals (9223372036854775807L , array .getLong (0 , -1 ));
107+ assertEquals (-1 , array .getLong (1 , -1 ));
108+ assertEquals (-1L , array .getLong (2 , -1L ));
109+ }
110+
111+ // Verify getLong method with invalid type throws exception
112+ @ Test (expected = RuntimeException .class )
113+ public void testGetLongWithInvalidType () {
114+ JSONArray array = JSONArray .parse ("['test']" );
115+ array .getLong (0 );
116+ }
117+
118+ // Verify getFloat method works as intended
119+ @ Test
120+ public void testGetFloat () {
121+ JSONArray array = JSONArray .parse ("[3.1, 21.03, 0.0]" );
122+ assertEquals (3.1f , array .getFloat (0 ), 0.0001 );
123+ assertEquals (21.03f , array .getFloat (1 ), 0.0001 );
124+ assertEquals (0.0f , array .getFloat (2 ), 0.0001 );
125+ }
126+
127+ // Verify getFloat method with default return value works as intended
128+ @ Test
129+ public void testGetFloatWithDefault () {
130+ JSONArray array = JSONArray .parse ("[3.14159, null]" );
131+ assertEquals (3.14159f , array .getFloat (0 , -1.0f ), 0.0001 );
132+ assertEquals (-1.0f , array .getFloat (1 , -1.0f ), 0.0001 );
133+ assertEquals (-1.0f , array .getFloat (2 , -1.0f ), 0.0001 );
134+ }
135+
136+ // Verify getFloat method with invalid type throws exception
137+ @ Test (expected = RuntimeException .class )
138+ public void testGetFloatWithInvalidType () {
139+ JSONArray array = JSONArray .parse ("['not a float']" );
140+ array .getFloat (0 );
141+ }
142+
143+ // Verify list creation from float list works as intended
144+ @ Test
145+ public void testJSONArrayFromFloatList () {
146+ FloatList floatList = new FloatList ();
147+ floatList .append (1.1f );
148+ floatList .append (2.2f );
149+
150+ JSONArray array = new JSONArray (floatList );
151+
152+ assertEquals (2 , array .size ());
153+ assertEquals (2.2f , array .getFloat (1 ), 0.0001f );
154+ }
155+
156+ // Verify getDouble method works as intended
157+ @ Test
158+ public void testGetDouble () {
159+ JSONArray array = JSONArray .parse ("[3.141592653589793, 2.718281828459045]" );
160+ assertEquals (3.141592653589793 , array .getDouble (0 ), 0.0000000001 );
161+ assertEquals (2.718281828459045 , array .getDouble (1 ), 0.0000000001 );
162+ }
163+
164+ // Verify getDouble method with default return value works as intended
165+ @ Test
166+ public void testGetDoubleWithDefault () {
167+ JSONArray array = JSONArray .parse ("[3.141592653589793, null]" );
168+ assertEquals (3.141592653589793 , array .getDouble (0 , -1.0 ), 0.0000000001 );
169+ assertEquals (-1.0 , array .getDouble (1 , -1.0 ), 0.0000000001 );
170+ assertEquals (-1.0 , array .getDouble (2 , -1.0 ), 0.0000000001 );
171+ }
172+
173+ // Verify getDouble method with invalid type throws exception
174+ @ Test (expected = RuntimeException .class )
175+ public void testGetDoubleWithInvalidType () {
176+ JSONArray array = JSONArray .parse ("['test']" );
177+ array .getDouble (0 );
178+ }
179+
180+ // Verify getBoolean method works as intended
181+ @ Test
182+ public void testGetBoolean () {
183+ JSONArray array = JSONArray .parse ("[true, false, 'true', 'false']" );
184+
185+ assertTrue (array .getBoolean (0 ));
186+ assertFalse (array .getBoolean (1 ));
187+ assertTrue (array .getBoolean (2 ));
188+ assertFalse (array .getBoolean (3 ));
189+ }
190+
191+ // Verify getBoolean method with default return value works as intended
192+ @ Test
193+ public void testGetBooleanWithDefault () {
194+ JSONArray array = JSONArray .parse ("[true, null]" );
195+ assertTrue (array .getBoolean (0 , false ));
196+ assertFalse (array .getBoolean (1 , false ));
197+ assertFalse (array .getBoolean (2 , false ));
198+ }
199+
200+ // Verify getDouble method with invalid type throws exception
201+ @ Test (expected = RuntimeException .class )
202+ public void testGetBooleanWithInvalidType () {
203+ JSONArray array = JSONArray .parse ("[2]" );
204+ array .getBoolean (0 );
205+ }
206+
207+ // Verify sample array is parsed correctly
208+ @ Test
209+ public void testParseValidJSONArray () {
210+ JSONArray array = JSONArray .parse ("[1, 2, 3, 'test']" );
211+
212+ assertEquals (4 , array .size ());
213+ assertEquals (1 , array .get (0 ));
214+ assertEquals (2 , array .get (1 ));
215+ assertEquals (3 , array .get (2 ));
216+ assertEquals ("test" , array .get (3 ));
217+ }
218+
219+ // Verify sample array is parsed correctly
220+ @ Test (expected = RuntimeException .class )
221+ public void testParseInvalidJSONArray () {
222+ new JSONArray ("not an array" );
223+ }
224+
225+ // Verify sample array with special chars is parsed correctly
226+ @ Test
227+ public void testParseWithSpecialCharacters () {
228+ JSONArray array = JSONArray .parse ("['quote\\ \" quote', 'backslash\\ \\ backslash']" );
229+
230+ assertEquals ("quote\" quote" , array .getString (0 ));
231+ assertEquals ("backslash\\ backslash" , array .getString (1 ));
232+ }
233+
234+ // Verify sample array from reader is parsed correctly
235+ @ Test
236+ public void testParseValidJSONArrayFromReader () {
237+ String jsonStr = "[1, 2, 3, 'test']" ;
238+ StringReader reader = new StringReader (jsonStr );
239+
240+ JSONArray array = new JSONArray (reader );
241+
242+ assertEquals (4 , array .size ());
243+ assertEquals (1 , array .get (0 ));
244+ assertEquals (2 , array .get (1 ));
245+ assertEquals (3 , array .get (2 ));
246+ assertEquals ("test" , array .get (3 ));
247+ }
248+
249+ // Verify nested arrays are parsed correctly
250+ @ Test
251+ public void testGetJSONArray () {
252+ JSONArray array = JSONArray .parse ("[[7, 123], ['test', 'array', 'blah']]" );
253+
254+ JSONArray nested_1 = array .getJSONArray (0 );
255+ JSONArray nested_2 = array .getJSONArray (1 );
256+
257+ assertEquals (2 , nested_1 .size ());
258+ assertEquals (3 , nested_2 .size ());
259+ assertEquals (7 , nested_1 .getInt (0 ));
260+ assertEquals ("blah" , nested_2 .getString (2 ));
261+ }
262+
263+ // Verify getJSONObject method works as intended
264+ @ Test
265+ public void testGetJSONObject () {
266+ JSONArray array = JSONArray .parse ("[{'dict key' : 'some value', 'num' : 123}]" );
267+
268+ JSONObject dict_obj = array .getJSONObject (0 );
269+
270+ assertEquals ("some value" , dict_obj .getString ("dict key" ));
271+ assertEquals (123 , dict_obj .getInt ("num" ));
272+ }
273+
274+ // Verify the set and remove features work as intended
275+ @ Test
276+ public void testSetAndRemove () {
277+ JSONArray array = JSONArray .parse ("[1,2,3]" );
278+
279+ array .setInt (1 , 42 );
280+ assertEquals (42 , array .getInt (1 ));
281+
282+ array .remove (1 );
283+ assertEquals (2 , array .size ());
284+ assertEquals (3 , array .getInt (1 ));
285+ }
286+
287+ }
0 commit comments