2 * License : The MIT License
3 * Copyright(c) 2009 olyutorskii
6 package jp.sourceforge.jovsonz;
8 import java.util.Iterator;
9 import java.util.LinkedList;
10 import java.util.List;
11 import org.junit.After;
12 import org.junit.AfterClass;
13 import org.junit.Before;
14 import org.junit.BeforeClass;
15 import org.junit.Test;
17 import static org.junit.Assert.*;
22 public class JsArrayTest {
24 public JsArrayTest() {
28 public static void setUpClass() throws Exception{
32 public static void tearDownClass() throws Exception{
40 public void tearDown() {
44 * Test of parseArray method, of class JsArray.
47 public void testParseArray() throws Exception{
48 System.out.println("parseArray");
53 source = new JsonSource("[]");
54 array = JsArray.parseArray(source);
55 assertEquals(0, array.size());
57 source = new JsonSource("[true]");
58 array = JsArray.parseArray(source);
59 assertEquals(1, array.size());
60 assertEquals(JsBoolean.TRUE, array.get(0));
62 source = new JsonSource("[true,false]");
63 array = JsArray.parseArray(source);
64 assertEquals(2, array.size());
65 assertEquals(JsBoolean.TRUE, array.get(0));
66 assertEquals(JsBoolean.FALSE, array.get(1));
68 source = new JsonSource("\n[\rtrue\t, false\n]\r");
69 array = JsArray.parseArray(source);
72 source = new JsonSource("[\rtrue\t, false\n]\r");
73 array = JsArray.parseArray(source);
74 assertEquals(2, array.size());
75 assertEquals(JsBoolean.TRUE, array.get(0));
76 assertEquals(JsBoolean.FALSE, array.get(1));
79 source = new JsonSource("[,]");
80 array = JsArray.parseArray(source);
82 }catch(JsParseException e){
87 source = new JsonSource("[true,]");
88 array = JsArray.parseArray(source);
90 }catch(JsParseException e){
95 source = new JsonSource("[true#]");
96 array = JsArray.parseArray(source);
98 }catch(JsParseException e){
103 source = new JsonSource("[true,");
104 array = JsArray.parseArray(source);
106 }catch(JsParseException e){
111 source = new JsonSource("[true");
112 array = JsArray.parseArray(source);
114 }catch(JsParseException e){
118 source = new JsonSource("true]");
119 array = JsArray.parseArray(source);
126 * Test of add method, of class JsArray.
129 public void testAdd(){
130 System.out.println("add");
132 JsArray array = new JsArray();
134 JsNumber number = new JsNumber("1.23");
135 assertEquals(0, array.size());
137 assertEquals(1, array.size());
139 assertEquals(2, array.size());
145 * Test of get method, of class JsArray.
148 public void testGet(){
149 System.out.println("get");
151 JsArray array = new JsArray();
153 JsValue val1 = new JsNumber("1.23");
154 JsValue val2 = new JsString("abc");
159 assertEquals(val1, array.get(0));
160 assertEquals(val2, array.get(1));
165 }catch(IndexOutOfBoundsException e){
173 * Test of clear method, of class JsArray.
176 public void testClear(){
177 System.out.println("clear");
179 JsArray array = new JsArray();
181 JsValue val1 = new JsNumber("1.23");
182 JsValue val2 = new JsString("abc");
186 assertEquals(2, array.size());
189 assertEquals(0, array.size());
194 }catch(IndexOutOfBoundsException e){
198 array = new JsArray();
199 array.add(JsNull.NULL);
200 assertEquals(1, array.size());
201 assertTrue(array.hasChanged());
202 array.setUnchanged();
203 assertFalse(array.hasChanged());
205 assertEquals(0, array.size());
206 assertTrue(array.hasChanged());
207 array.setUnchanged();
209 assertEquals(0, array.size());
210 assertFalse(array.hasChanged());
216 * Test of remove method, of class JsArray.
219 public void testRemove_JsValue(){
220 System.out.println("remove");
222 JsArray array = new JsArray();
224 JsValue val1 = new JsNumber("1.23");
225 JsValue val2 = new JsString("abc");
226 JsValue val3 = JsBoolean.TRUE;
230 assertEquals(2, array.size());
232 assertTrue(array.remove(val1));
233 assertEquals(1, array.size());
234 assertEquals(val2, array.get(0));
236 assertFalse(array.remove(val3));
237 assertEquals(1, array.size());
243 * Test of remove method, of class JsArray.
246 public void testRemove_int(){
247 System.out.println("remove");
249 JsArray array = new JsArray();
251 JsValue val1 = new JsNumber("1.23");
252 JsValue val2 = new JsString("abc");
253 JsValue val3 = JsBoolean.TRUE;
258 assertEquals(3, array.size());
260 assertEquals(val1, array.remove(0));
261 assertEquals(2, array.size());
262 assertEquals(val2, array.get(0));
264 assertEquals(val3, array.remove(1));
265 assertEquals(1, array.size());
266 assertEquals(val2, array.get(0));
272 * Test of size method, of class JsArray.
275 public void testSize(){
276 System.out.println("size");
278 JsArray array = new JsArray();
279 assertEquals(0, array.size());
280 assertTrue(array.isEmpty());
282 JsValue val1 = new JsNumber("1.23");
285 assertEquals(1, array.size());
286 assertFalse(array.isEmpty());
292 * Test of iterator method, of class JsArray.
295 public void testIterator(){
296 System.out.println("iterator");
298 JsArray array = new JsArray();
300 JsValue val1 = new JsNumber("1.23");
301 JsValue val2 = new JsString("abc");
306 Iterator<JsValue> it = array.iterator();
308 assertTrue(it.hasNext());
309 assertEquals(val1, it.next());
311 assertTrue(it.hasNext());
312 assertEquals(val2, it.next());
314 assertFalse(it.hasNext());
320 * Test of hashCode method, of class JsArray.
323 public void testHashCode(){
324 System.out.println("hashCode");
326 JsArray array1 = new JsArray();
327 JsArray array2 = new JsArray();
329 assertEquals(array1.hashCode(), array2.hashCode());
331 array1.add(new JsString("abc"));
332 array2.add(new JsString("abc"));
334 assertEquals(array1.hashCode(), array2.hashCode());
340 * Test of equals method, of class JsArray.
343 public void testEquals(){
344 System.out.println("equals");
346 JsArray array1 = new JsArray();
347 JsArray array2 = new JsArray();
349 assertTrue(array1.equals(array2));
351 array1.add(new JsString("abc"));
352 array2.add(new JsString("abc"));
354 assertTrue(array1.equals(array2));
356 array1.add(new JsString("xyz"));
357 array2.add(new JsString("XYZ"));
359 assertFalse(array1.equals(array2));
361 JsArray nullVal = null;
363 assertFalse(array1.equals(nullVal));
365 assertFalse(array1.equals(""));
371 * Test of toString method, of class JsArray.
374 public void testToString(){
375 System.out.println("toString");
377 JsArray array = new JsArray();
379 assertEquals("[]", array.toString());
381 array.add(JsBoolean.TRUE);
382 assertEquals("[true]", array.toString());
384 array.add(JsBoolean.FALSE);
385 assertEquals("[true,false]", array.toString());
387 array.add(new JsArray());
388 assertEquals("[true,false,[]]", array.toString());
394 * Test of traverse method, of class JsArray.
397 public void testTraverse() throws Exception{
398 System.out.println("traverse");
400 JsArray array = new JsArray();
401 JsValue val1 = new JsNumber("12");
402 JsValue val2 = new JsString("AB");
406 final List<Object> visited = new LinkedList<Object>();
409 array.traverse(new ValueVisitor(){
410 public void visitValue(JsValue value)
411 throws JsVisitException{
416 public void visitPairName(String name)
417 throws JsVisitException{
422 public void visitCompositionClose(JsComposition<?> composite)
423 throws JsVisitException{
424 visited.add(composite);
428 }catch(JsVisitException e){
432 assertEquals(4, visited.size());
433 assertEquals(array, visited.get(0));
434 assertEquals(val1, visited.get(1));
435 assertEquals(val2, visited.get(2));
436 assertEquals(array, visited.get(3));
442 * Test of hasChanged method, of class JsArray.
445 public void testHasChanged(){
446 System.out.println("hasChanged");
448 JsArray array = new JsArray();
449 assertFalse(array.hasChanged());
451 array.add(new JsNumber("0"));
452 assertTrue(array.hasChanged());
454 array.setUnchanged();
455 assertFalse(array.hasChanged());
457 JsArray child = new JsArray();
459 array.setUnchanged();
460 assertFalse(array.hasChanged());
462 child.add(JsNull.NULL);
463 assertTrue(array.hasChanged());
464 array.setUnchanged();
465 assertFalse(array.hasChanged());
471 * Test of setUnchanged method, of class JsArray.
474 public void testSetUnchanged(){
475 System.out.println("setUnchanged");
477 JsArray array = new JsArray();
478 JsArray child = new JsArray();
481 child.add(JsNull.NULL);
482 assertTrue(child.hasChanged());
484 array.setUnchanged();
485 assertFalse(child.hasChanged());
491 * Test of getJsTypes method, of class JsArray.
494 public void testGetJsTypes() {
495 System.out.println("getJsTypes");
497 JsArray instance = new JsArray();
499 assertEquals(JsTypes.ARRAY, instance.getJsTypes());