OSDN Git Service

remove subversion keyword
[jindolf/Jindolf.git] / src / test / java / jp / sourceforge / jindolf / json / JsArrayTest.java
1 /*\r
2  * To change this template, choose Tools | Templates\r
3  * and open the template in the editor.\r
4  */\r
5 \r
6 package jp.sourceforge.jindolf.json;\r
7 \r
8 import java.io.StringReader;\r
9 import java.util.Iterator;\r
10 import java.util.LinkedList;\r
11 import java.util.List;\r
12 import org.junit.After;\r
13 import org.junit.AfterClass;\r
14 import org.junit.Before;\r
15 import org.junit.BeforeClass;\r
16 import org.junit.Test;\r
17 import static org.junit.Assert.*;\r
18 \r
19 /**\r
20  *\r
21  */\r
22 public class JsArrayTest {\r
23 \r
24     public JsArrayTest() {\r
25     }\r
26 \r
27     @BeforeClass\r
28     public static void setUpClass() throws Exception{\r
29     }\r
30 \r
31     @AfterClass\r
32     public static void tearDownClass() throws Exception{\r
33     }\r
34 \r
35     @Before\r
36     public void setUp() {\r
37     }\r
38 \r
39     @After\r
40     public void tearDown() {\r
41     }\r
42 \r
43     /**\r
44      * Test of parseArray method, of class JsArray.\r
45      */\r
46     @Test\r
47     public void testParseArray() throws Exception{\r
48         System.out.println("parseArray");\r
49 \r
50         JsonReader reader;\r
51         JsArray array;\r
52 \r
53         reader = new JsonReader(new StringReader("[]"));\r
54         array = JsArray.parseArray(reader);\r
55         assertEquals(0, array.size());\r
56 \r
57         reader = new JsonReader(new StringReader("[true]"));\r
58         array = JsArray.parseArray(reader);\r
59         assertEquals(1, array.size());\r
60         assertEquals(JsBoolean.TRUE, array.get(0));\r
61 \r
62         reader = new JsonReader(new StringReader("[true,false]"));\r
63         array = JsArray.parseArray(reader);\r
64         assertEquals(2, array.size());\r
65         assertEquals(JsBoolean.TRUE, array.get(0));\r
66         assertEquals(JsBoolean.FALSE, array.get(1));\r
67 \r
68         reader = new JsonReader(new StringReader("\n[\rtrue\t, false\n]\r"));\r
69         array = JsArray.parseArray(reader);\r
70         assertEquals(2, array.size());\r
71         assertEquals(JsBoolean.TRUE, array.get(0));\r
72         assertEquals(JsBoolean.FALSE, array.get(1));\r
73 \r
74         try{\r
75             reader = new JsonReader(new StringReader("[,]"));\r
76             array = JsArray.parseArray(reader);\r
77             fail();\r
78         }catch(JsParseException e){\r
79             // NOTHING\r
80         }\r
81 \r
82         try{\r
83             reader = new JsonReader(new StringReader("[true,]"));\r
84             array = JsArray.parseArray(reader);\r
85             fail();\r
86         }catch(JsParseException e){\r
87             // NOTHING\r
88         }\r
89 \r
90         try{\r
91             reader = new JsonReader(new StringReader("[true"));\r
92             array = JsArray.parseArray(reader);\r
93             fail();\r
94         }catch(JsParseException e){\r
95             // NOTHING\r
96         }\r
97 \r
98         try{\r
99             reader = new JsonReader(new StringReader("true]"));\r
100             array = JsArray.parseArray(reader);\r
101             fail();\r
102         }catch(JsParseException e){\r
103             // NOTHING\r
104         }\r
105 \r
106         return;\r
107     }\r
108 \r
109     /**\r
110      * Test of add method, of class JsArray.\r
111      */\r
112     @Test\r
113     public void testAdd(){\r
114         System.out.println("add");\r
115 \r
116         JsArray array = new JsArray();\r
117 \r
118         JsNumber number = new JsNumber("1.23");\r
119         assertEquals(0, array.size());\r
120         array.add(number);\r
121         assertEquals(1, array.size());\r
122         array.add(number);\r
123         assertEquals(2, array.size());\r
124 \r
125         return;\r
126     }\r
127 \r
128     /**\r
129      * Test of get method, of class JsArray.\r
130      */\r
131     @Test\r
132     public void testGet(){\r
133         System.out.println("get");\r
134 \r
135         JsArray array = new JsArray();\r
136 \r
137         JsValue val1 = new JsNumber("1.23");\r
138         JsValue val2 = new JsString("abc");\r
139 \r
140         array.add(val1);\r
141         array.add(val2);\r
142 \r
143         assertEquals(val1, array.get(0));\r
144         assertEquals(val2, array.get(1));\r
145 \r
146         try{\r
147             array.get(2);\r
148             fail();\r
149         }catch(IndexOutOfBoundsException e){\r
150             // NOTHING\r
151         }\r
152 \r
153         return;\r
154     }\r
155 \r
156     /**\r
157      * Test of clear method, of class JsArray.\r
158      */\r
159     @Test\r
160     public void testClear(){\r
161         System.out.println("clear");\r
162 \r
163         JsArray array = new JsArray();\r
164 \r
165         JsValue val1 = new JsNumber("1.23");\r
166         JsValue val2 = new JsString("abc");\r
167 \r
168         array.add(val1);\r
169         array.add(val2);\r
170         assertEquals(2, array.size());\r
171 \r
172         array.clear();\r
173         assertEquals(0, array.size());\r
174 \r
175         try{\r
176             array.get(0);\r
177             fail();\r
178         }catch(IndexOutOfBoundsException e){\r
179             // NOTHING\r
180         }\r
181 \r
182         return;\r
183     }\r
184 \r
185     /**\r
186      * Test of remove method, of class JsArray.\r
187      */\r
188     @Test\r
189     public void testRemove(){\r
190         System.out.println("remove");\r
191 \r
192         JsArray array = new JsArray();\r
193 \r
194         JsValue val1 = new JsNumber("1.23");\r
195         JsValue val2 = new JsString("abc");\r
196         JsValue val3 = JsBoolean.TRUE;\r
197 \r
198         array.add(val1);\r
199         array.add(val2);\r
200         assertEquals(2, array.size());\r
201 \r
202         assertTrue(array.remove(val1));\r
203         assertEquals(1, array.size());\r
204         assertEquals(val2, array.get(0));\r
205 \r
206         assertFalse(array.remove(val3));\r
207         assertEquals(1, array.size());\r
208 \r
209         return;\r
210     }\r
211 \r
212     /**\r
213      * Test of size method, of class JsArray.\r
214      */\r
215     @Test\r
216     public void testSize(){\r
217         System.out.println("size");\r
218 \r
219         JsArray array = new JsArray();\r
220         assertEquals(0, array.size());\r
221 \r
222         JsValue val1 = new JsNumber("1.23");\r
223 \r
224         array.add(val1);\r
225         assertEquals(1, array.size());\r
226 \r
227         return;\r
228     }\r
229 \r
230     /**\r
231      * Test of iterator method, of class JsArray.\r
232      */\r
233     @Test\r
234     public void testIterator(){\r
235         System.out.println("iterator");\r
236 \r
237         JsArray array = new JsArray();\r
238 \r
239         JsValue val1 = new JsNumber("1.23");\r
240         JsValue val2 = new JsString("abc");\r
241 \r
242         array.add(val1);\r
243         array.add(val2);\r
244 \r
245         Iterator<JsValue> it = array.iterator();\r
246 \r
247         assertTrue(it.hasNext());\r
248         assertEquals(val1, it.next());\r
249 \r
250         assertTrue(it.hasNext());\r
251         assertEquals(val2, it.next());\r
252 \r
253         assertFalse(it.hasNext());\r
254 \r
255         return;\r
256     }\r
257 \r
258     /**\r
259      * Test of hashCode method, of class JsArray.\r
260      */\r
261     @Test\r
262     public void testHashCode(){\r
263         System.out.println("hashCode");\r
264 \r
265         JsArray array1 = new JsArray();\r
266         JsArray array2 = new JsArray();\r
267 \r
268         assertEquals(array1.hashCode(), array2.hashCode());\r
269 \r
270         array1.add(new JsString("abc"));\r
271         array2.add(new JsString("abc"));\r
272 \r
273         assertEquals(array1.hashCode(), array2.hashCode());\r
274 \r
275         return;\r
276     }\r
277 \r
278     /**\r
279      * Test of equals method, of class JsArray.\r
280      */\r
281     @Test\r
282     public void testEquals(){\r
283         System.out.println("equals");\r
284 \r
285         JsArray array1 = new JsArray();\r
286         JsArray array2 = new JsArray();\r
287 \r
288         assertTrue(array1.equals(array2));\r
289 \r
290         array1.add(new JsString("abc"));\r
291         array2.add(new JsString("abc"));\r
292 \r
293         assertTrue(array1.equals(array2));\r
294 \r
295         array1.add(new JsString("xyz"));\r
296         array2.add(new JsString("XYZ"));\r
297 \r
298         assertFalse(array1.equals(array2));\r
299 \r
300         assertFalse(array1.equals(null));\r
301 \r
302         return;\r
303     }\r
304 \r
305     /**\r
306      * Test of toString method, of class JsArray.\r
307      */\r
308     @Test\r
309     public void testToString(){\r
310         System.out.println("toString");\r
311 \r
312         JsArray array = new JsArray();\r
313 \r
314         assertEquals("[]", array.toString());\r
315 \r
316         array.add(JsBoolean.TRUE);\r
317         assertEquals("[true]", array.toString());\r
318 \r
319         array.add(JsBoolean.FALSE);\r
320         assertEquals("[true,false]", array.toString());\r
321 \r
322         array.add(new JsArray());\r
323         assertEquals("[true,false,[]]", array.toString());\r
324 \r
325         return;\r
326     }\r
327 \r
328     /**\r
329      * Test of traverse method, of class JsArray.\r
330      */\r
331     @Test\r
332     public void testTraverse() throws Exception{\r
333         System.out.println("traverse");\r
334 \r
335         JsArray array = new JsArray();\r
336         JsValue val1 = new JsNumber("12");\r
337         JsValue val2 = new JsString("AB");\r
338         array.add(val1);\r
339         array.add(val2);\r
340 \r
341         final List<Object> visited = new LinkedList<Object>();\r
342 \r
343         try{\r
344             array.traverse(new ValueVisitor(){\r
345                 public void visitValue(JsValue value)\r
346                         throws JsVisitException{\r
347                     visited.add(value);\r
348                     return;\r
349                 }\r
350 \r
351                 public void visitPairName(String name)\r
352                         throws JsVisitException{\r
353                     visited.add(name);\r
354                     return;\r
355                 }\r
356 \r
357                 public void visitCollectionClose(JsValue composite)\r
358                         throws JsVisitException{\r
359                     visited.add(composite);\r
360                     return;\r
361                 }\r
362             });\r
363         }catch(JsVisitException e){\r
364             fail();\r
365         }\r
366 \r
367         assertEquals(4, visited.size());\r
368         assertEquals(array, visited.get(0));\r
369         assertEquals(val1, visited.get(1));\r
370         assertEquals(val2, visited.get(2));\r
371         assertEquals(array, visited.get(3));\r
372 \r
373         return;\r
374     }\r
375 \r
376     /**\r
377      * Test of hasChanged method, of class JsArray.\r
378      */\r
379     @Test\r
380     public void testHasChanged(){\r
381         System.out.println("hasChanged");\r
382 \r
383         JsArray array = new JsArray();\r
384         assertFalse(array.hasChanged());\r
385 \r
386         array.add(new JsNumber("0"));\r
387         assertTrue(array.hasChanged());\r
388 \r
389         array.setUnchanged();\r
390         assertFalse(array.hasChanged());\r
391 \r
392         JsArray child = new JsArray();\r
393         array.add(child);\r
394         array.setUnchanged();\r
395         assertFalse(array.hasChanged());\r
396 \r
397         child.add(JsNull.NULL);\r
398         assertTrue(array.hasChanged());\r
399         array.setUnchanged();\r
400         assertFalse(array.hasChanged());\r
401 \r
402         return;\r
403     }\r
404 \r
405     /**\r
406      * Test of setUnchanged method, of class JsArray.\r
407      */\r
408     @Test\r
409     public void testSetUnchanged(){\r
410         System.out.println("setUnchanged");\r
411 \r
412         JsArray array = new JsArray();\r
413         JsArray child = new JsArray();\r
414         array.add(child);\r
415 \r
416         child.add(JsNull.NULL);\r
417         assertTrue(child.hasChanged());\r
418 \r
419         array.setUnchanged();\r
420         assertFalse(child.hasChanged());\r
421 \r
422         return;\r
423     }\r
424 \r
425 }\r