OSDN Git Service

初回インポート
[jovsonz/Jovsonz.git] / src / test / java / jp / sourceforge / jovsonz / JsObjectTest.java
1 /*
2  * License : The MIT License
3  * Copyright(c) 2009 olyutorskii
4  */
5
6 package jp.sourceforge.jovsonz;
7
8 import java.util.Iterator;
9 import java.util.LinkedList;
10 import java.util.List;
11 import java.util.Set;
12 import org.junit.After;
13 import org.junit.AfterClass;
14 import org.junit.Before;
15 import org.junit.BeforeClass;
16 import org.junit.Test;
17 import static org.junit.Assert.*;
18
19 /**
20  *
21  */
22 public class JsObjectTest {
23
24     public JsObjectTest() {
25     }
26
27     @BeforeClass
28     public static void setUpClass() throws Exception{
29     }
30
31     @AfterClass
32     public static void tearDownClass() throws Exception{
33     }
34
35     @Before
36     public void setUp() {
37     }
38
39     @After
40     public void tearDown() {
41     }
42
43     /**
44      * Test of parseObject method, of class JsObject.
45      */
46     @Test
47     public void testParseObject() throws Exception{
48         System.out.println("parseObject");
49
50         JsonSource source;
51         JsObject object;
52
53         source = new JsonSource("{}");
54         object = JsObject.parseObject(source);
55         assertEquals(0, object.size());
56
57         source = new JsonSource("{\"A\":true}");
58         object = JsObject.parseObject(source);
59         assertEquals(1, object.size());
60         assertEquals(JsBoolean.TRUE, object.getPair("A").getValue());
61
62         source = new JsonSource("{\"A\":true,\"B\":false}");
63         object = JsObject.parseObject(source);
64         assertEquals(2, object.size());
65         assertEquals(JsBoolean.TRUE, object.getPair("A").getValue());
66         assertEquals(JsBoolean.FALSE, object.getPair("B").getValue());
67
68         source = new JsonSource("\n{\r\"A\"\t: true,\"B\":false\n}\r");
69         object = JsObject.parseObject(source);
70         assertNull(object);
71
72         source = new JsonSource("{\r\"A\"\t: true,\"B\":false\n}\r");
73         object = JsObject.parseObject(source);
74         assertEquals(2, object.size());
75         assertEquals(JsBoolean.TRUE, object.getPair("A").getValue());
76         assertEquals(JsBoolean.FALSE, object.getPair("B").getValue());
77
78         try{
79             source = new JsonSource("{,}");
80             object = JsObject.parseObject(source);
81             fail();
82         }catch(JsParseException e){
83             // NOTHING
84         }
85
86         try{
87             source = new JsonSource("{true,}");
88             object = JsObject.parseObject(source);
89             fail();
90         }catch(JsParseException e){
91             // NOTHING
92         }
93
94         try{
95             source = new JsonSource("{true");
96             object = JsObject.parseObject(source);
97             fail();
98         }catch(JsParseException e){
99             // NOTHING
100         }
101
102         try{
103             source = new JsonSource("{\"A\",");
104             object = JsObject.parseObject(source);
105             fail();
106         }catch(JsParseException e){
107             // NOTHING
108         }
109
110         try{
111             source = new JsonSource("{\"A\":");
112             object = JsObject.parseObject(source);
113             fail();
114         }catch(JsParseException e){
115             // NOTHING
116         }
117
118         try{
119             source = new JsonSource("{\"A\":#");
120             object = JsObject.parseObject(source);
121             fail();
122         }catch(JsParseException e){
123             // NOTHING
124         }
125
126         try{
127             source = new JsonSource("{\"A\":true#");
128             object = JsObject.parseObject(source);
129             fail();
130         }catch(JsParseException e){
131             // NOTHING
132         }
133
134         try{
135             source = new JsonSource("{\"A\":true,");
136             object = JsObject.parseObject(source);
137             fail();
138         }catch(JsParseException e){
139             // NOTHING
140         }
141
142         try{
143             source = new JsonSource("{\"A\":true,#");
144             object = JsObject.parseObject(source);
145             fail();
146         }catch(JsParseException e){
147             // NOTHING
148         }
149
150         source = new JsonSource("true}");
151         object = JsObject.parseObject(source);
152         assertNull(object);
153
154         return;
155     }
156
157     /**
158      * Test of putValue method, of class JsObject.
159      */
160     @Test
161     public void testPutGetValue(){
162         System.out.println("putValue");
163
164         JsObject object = new JsObject();
165         assertEquals(0, object.size());
166
167         object.putValue("x", JsNull.NULL);
168         assertEquals(1, object.size());
169         assertEquals(JsNull.NULL, object.getValue("x"));
170         assertEquals(null, object.getValue("y"));
171
172         object.putValue("y", JsBoolean.TRUE);
173         assertEquals(2, object.size());
174         assertEquals(JsBoolean.TRUE, object.getValue("y"));
175
176         object.putValue("x", JsBoolean.FALSE);
177         assertEquals(2, object.size());
178         assertEquals(JsBoolean.FALSE, object.getValue("x"));
179
180         try{
181             object.putValue("x", null);
182             fail();
183         }catch(NullPointerException e){
184             //GOOD
185         }
186
187         try{
188             object.putValue(null, JsNull.NULL);
189             fail();
190         }catch(NullPointerException e){
191             //GOOD
192         }
193
194         return;
195     }
196
197     /**
198      * Test of putPair method, of class JsObject.
199      */
200     @Test
201     public void testPutGetPair(){
202         System.out.println("putPair");
203
204         JsObject object = new JsObject();
205         assertEquals(0, object.size());
206
207         JsPair pair = new JsPair("x", JsNull.NULL);
208         object.putPair(pair);
209         assertEquals(1, object.size());
210         assertEquals(JsNull.NULL, object.getValue("x"));
211
212         JsPair pair2 = object.getPair("x");
213         assertNotNull(pair2);
214         assertEquals("x", pair2.getName());
215         assertEquals(JsNull.NULL, pair2.getValue());
216
217         assertNull(object.getPair("y"));
218
219         return;
220     }
221
222     /**
223      * Test of clear method, of class JsObject.
224      */
225     @Test
226     public void testClear(){
227         System.out.println("clear");
228
229         JsObject object = new JsObject();
230         assertEquals(0, object.size());
231
232         object.putValue("x", JsNull.NULL);
233         assertEquals(1, object.size());
234
235         object.clear();
236         assertEquals(0, object.size());
237
238         object = new JsObject();
239         object.putValue("x", JsNull.NULL);
240         assertEquals(1, object.size());
241         assertTrue(object.hasChanged());
242         object.setUnchanged();
243         assertFalse(object.hasChanged());
244         object.clear();
245         assertEquals(0, object.size());
246         assertTrue(object.hasChanged());
247         object.setUnchanged();
248         object.clear();
249         assertEquals(0, object.size());
250         assertFalse(object.hasChanged());
251
252         return;
253     }
254
255     /**
256      * Test of remove method, of class JsObject.
257      */
258     @Test
259     public void testRemove(){
260         System.out.println("remove");
261
262         JsObject object = new JsObject();
263
264         object.putValue("x", JsNull.NULL);
265         assertEquals(1, object.size());
266
267         assertNotNull(object.getValue("x"));
268
269         assertEquals(JsNull.NULL, object.remove("x").getValue());
270         assertEquals(0, object.size());
271         assertNull(object.getValue("x"));
272
273         assertNull(object.remove("y"));
274
275         return;
276     }
277
278     /**
279      * Test of nameSet method, of class JsObject.
280      */
281     @Test
282     public void testNameSet(){
283         System.out.println("nameSet");
284
285         JsObject object = new JsObject();
286         Set<String> set;
287
288         set = object.nameSet();
289         assertEquals(0, set.size());
290
291         object.putValue("y", JsNull.NULL);
292         object.putValue("z", JsNull.NULL);
293         object.putValue("x", JsNull.NULL);
294
295         set = object.nameSet();
296         assertEquals(3, set.size());
297         Object[] names = set.toArray();
298
299         assertEquals("x", names[0]);
300         assertEquals("y", names[1]);
301         assertEquals("z", names[2]);
302
303         return;
304     }
305
306     /**
307      * Test of getPairList method, of class JsObject.
308      */
309     @Test
310     public void testGetPairList(){
311         System.out.println("getPairList");
312
313         JsObject object = new JsObject();
314         List<JsPair> list;
315
316         list = object.getPairList();
317         assertEquals(0, list.size());
318
319         object.putValue("y", JsNull.NULL);
320         object.putValue("z", JsBoolean.TRUE);
321         object.putValue("x", JsBoolean.FALSE);
322
323         list = object.getPairList();
324         assertEquals(3, list.size());
325
326         assertEquals("x", list.get(0).getName());
327         assertEquals("y", list.get(1).getName());
328         assertEquals("z", list.get(2).getName());
329         assertEquals(JsBoolean.FALSE, list.get(0).getValue());
330         assertEquals(JsNull.NULL, list.get(1).getValue());
331         assertEquals(JsBoolean.TRUE, list.get(2).getValue());
332
333         return;
334     }
335
336     /**
337      * Test of iterator method, of class JsObject.
338      */
339     @Test
340     public void testIterator(){
341         System.out.println("iterator");
342
343         JsObject object = new JsObject();
344         object.putValue("y", JsBoolean.FALSE);
345         object.putValue("x", JsBoolean.TRUE);
346
347         Iterator<JsPair> it = object.iterator();
348
349         assertTrue(it.hasNext());
350         assertEquals(JsBoolean.TRUE, it.next().getValue());
351         assertTrue(it.hasNext());
352         assertEquals(JsBoolean.FALSE, it.next().getValue());
353         assertFalse(it.hasNext());
354
355         return;
356     }
357
358     /**
359      * Test of size method, of class JsObject.
360      */
361     @Test
362     public void testSize(){
363         System.out.println("size");
364
365         JsObject object = new JsObject();
366         assertEquals(0, object.size());
367         assertTrue(object.isEmpty());
368
369         object.putValue("x", JsBoolean.TRUE);
370         assertEquals(1, object.size());
371         assertFalse(object.isEmpty());
372
373         object.putValue("y", JsBoolean.FALSE);
374         assertEquals(2, object.size());
375         assertFalse(object.isEmpty());
376
377         return;
378     }
379
380     /**
381      * Test of hashCode method, of class JsObject.
382      */
383     @Test
384     public void testHashCode(){
385         System.out.println("hashCode");
386
387         JsObject obj1 = new JsObject();
388         JsObject obj2 = new JsObject();
389         assertEquals(obj1.hashCode(), obj2.hashCode());
390
391         obj1.putValue("x", new JsNumber("99"));
392         obj2.putValue("x", new JsNumber("99"));
393         assertEquals(obj1.hashCode(), obj2.hashCode());
394
395         return;
396     }
397
398     /**
399      * Test of equals method, of class JsObject.
400      */
401     @Test
402     public void testEquals(){
403         System.out.println("equals");
404
405         JsObject obj1 = new JsObject();
406         JsObject obj2 = new JsObject();
407         assertTrue(obj1.equals(obj2));
408
409         obj1.putValue("x", new JsNumber("99"));
410         obj2.putValue("x", new JsNumber("99"));
411         assertTrue(obj1.equals(obj2));
412
413         obj1.putValue("x", new JsNumber("99"));
414         obj2.putValue("x", new JsNumber("999"));
415         assertFalse(obj1.equals(obj2));
416
417         JsObject nullVal = null;
418         assertFalse(obj1.equals(nullVal));
419         assertFalse(obj1.equals(""));
420
421         return;
422     }
423
424     /**
425      * Test of toString method, of class JsObject.
426      */
427     @Test
428     public void testToString(){
429         System.out.println("toString");
430
431         JsObject object = new JsObject();
432
433         assertEquals("{}", object.toString());
434
435         object.putValue("x", JsBoolean.TRUE);
436         assertEquals("{\"x\":true}", object.toString());
437
438         object.putValue("y", JsBoolean.FALSE);
439         assertEquals("{\"x\":true,\"y\":false}", object.toString());
440
441         object.putValue("z", new JsObject());
442         assertEquals("{\"x\":true,\"y\":false,\"z\":{}}", object.toString());
443
444         return;
445     }
446
447     /**
448      * Test of traverse method, of class JsObject.
449      */
450     @Test
451     public void testTraverse() throws Exception{
452         System.out.println("traverse");
453
454         JsObject obj = new JsObject();
455         JsValue val1 = new JsNumber("12");
456         JsValue val2 = new JsString("AB");
457         obj.putValue("x", val1);
458         obj.putValue("y", val2);
459
460         final List<Object> visited = new LinkedList<Object>();
461
462         try{
463             obj.traverse(new ValueVisitor(){
464                 public void visitValue(JsValue value)
465                         throws JsVisitException{
466                     visited.add(value);
467                     return;
468                 }
469
470                 public void visitPairName(String name)
471                         throws JsVisitException{
472                     visited.add(name);
473                     return;
474                 }
475
476                 public void visitCompositionClose(JsComposition composite)
477                         throws JsVisitException{
478                     visited.add(composite);
479                     return;
480                 }
481             });
482         }catch(JsVisitException e){
483             fail();
484         }
485
486         assertEquals(6, visited.size());
487         assertEquals(obj, visited.get(0));
488         assertEquals("x", visited.get(1));
489         assertEquals(val1, visited.get(2));
490         assertEquals("y", visited.get(3));
491         assertEquals(val2, visited.get(4));
492         assertEquals(obj, visited.get(5));
493
494         return;
495     }
496
497     /**
498      * Test of hasChanged method, of class JsObject.
499      */
500     @Test
501     public void testHasChanged(){
502         System.out.println("hasChanged");
503
504         JsObject obj = new JsObject();
505         assertFalse(obj.hasChanged());
506
507         obj.putValue("x", JsNull.NULL);
508         assertTrue(obj.hasChanged());
509
510         obj.setUnchanged();
511         assertFalse(obj.hasChanged());
512
513         JsObject child = new JsObject();
514         obj.putValue("y", child);
515         obj.setUnchanged();
516         assertFalse(obj.hasChanged());
517
518         child.putValue("z", JsBoolean.TRUE);
519         assertTrue(obj.hasChanged());
520         obj.setUnchanged();
521         assertFalse(obj.hasChanged());
522
523         return;
524     }
525
526     /**
527      * Test of setUnchanged method, of class JsObject.
528      */
529     @Test
530     public void testSetUnchanged(){
531         System.out.println("setUnchanged");
532
533         JsObject obj = new JsObject();
534         JsObject child = new JsObject();
535         obj.putValue("x", child);
536
537         child.putValue("y", JsNull.NULL);
538         assertTrue(child.hasChanged());
539
540         obj.setUnchanged();
541         assertFalse(child.hasChanged());
542
543         return;
544     }
545
546     /**
547      * Test of getJsTypes method, of class JsObject.
548      */
549     @Test
550     public void testGetJsTypes() {
551         System.out.println("getJsTypes");
552
553         JsObject instance = new JsObject();
554
555         assertEquals(JsTypes.OBJECT, instance.getJsTypes());
556
557         return;
558     }
559
560 }