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;
16 import static org.junit.Assert.*;
21 public class JsArrayTest {
23 public JsArrayTest() {
27 public static void setUpClass() throws Exception{
31 public static void tearDownClass() throws Exception{
39 public void tearDown() {
43 * Test of parseArray method, of class JsArray.
46 public void testParseArray() throws Exception{
47 System.out.println("parseArray");
52 source = new JsonSource("[]");
53 array = JsArray.parseArray(source);
54 assertEquals(0, array.size());
56 source = new JsonSource("[true]");
57 array = JsArray.parseArray(source);
58 assertEquals(1, array.size());
59 assertEquals(JsBoolean.TRUE, array.get(0));
61 source = new JsonSource("[true,false]");
62 array = JsArray.parseArray(source);
63 assertEquals(2, array.size());
64 assertEquals(JsBoolean.TRUE, array.get(0));
65 assertEquals(JsBoolean.FALSE, array.get(1));
67 source = new JsonSource("\n[\rtrue\t, false\n]\r");
68 array = JsArray.parseArray(source);
71 source = new JsonSource("[\rtrue\t, false\n]\r");
72 array = JsArray.parseArray(source);
73 assertEquals(2, array.size());
74 assertEquals(JsBoolean.TRUE, array.get(0));
75 assertEquals(JsBoolean.FALSE, array.get(1));
78 source = new JsonSource("[,]");
79 array = JsArray.parseArray(source);
81 }catch(JsParseException e){
86 source = new JsonSource("[true,]");
87 array = JsArray.parseArray(source);
89 }catch(JsParseException e){
94 source = new JsonSource("[true#]");
95 array = JsArray.parseArray(source);
97 }catch(JsParseException e){
102 source = new JsonSource("[true,");
103 array = JsArray.parseArray(source);
105 }catch(JsParseException e){
110 source = new JsonSource("[true");
111 array = JsArray.parseArray(source);
113 }catch(JsParseException e){
117 source = new JsonSource("true]");
118 array = JsArray.parseArray(source);
125 * Test of add method, of class JsArray.
128 public void testAdd(){
129 System.out.println("add");
131 JsArray array = new JsArray();
133 JsNumber number = new JsNumber("1.23");
134 assertEquals(0, array.size());
136 assertEquals(1, array.size());
138 assertEquals(2, array.size());
144 * Test of get method, of class JsArray.
147 public void testGet(){
148 System.out.println("get");
150 JsArray array = new JsArray();
152 JsValue val1 = new JsNumber("1.23");
153 JsValue val2 = new JsString("abc");
158 assertEquals(val1, array.get(0));
159 assertEquals(val2, array.get(1));
164 }catch(IndexOutOfBoundsException e){
172 * Test of clear method, of class JsArray.
175 public void testClear(){
176 System.out.println("clear");
178 JsArray array = new JsArray();
180 JsValue val1 = new JsNumber("1.23");
181 JsValue val2 = new JsString("abc");
185 assertEquals(2, array.size());
188 assertEquals(0, array.size());
193 }catch(IndexOutOfBoundsException e){
197 array = new JsArray();
198 array.add(JsNull.NULL);
199 assertEquals(1, array.size());
200 assertTrue(array.hasChanged());
201 array.setUnchanged();
202 assertFalse(array.hasChanged());
204 assertEquals(0, array.size());
205 assertTrue(array.hasChanged());
206 array.setUnchanged();
208 assertEquals(0, array.size());
209 assertFalse(array.hasChanged());
215 * Test of remove method, of class JsArray.
218 public void testRemove_JsValue(){
219 System.out.println("remove");
221 JsArray array = new JsArray();
223 JsValue val1 = new JsNumber("1.23");
224 JsValue val2 = new JsString("abc");
225 JsValue val3 = JsBoolean.TRUE;
229 assertEquals(2, array.size());
231 assertTrue(array.remove(val1));
232 assertEquals(1, array.size());
233 assertEquals(val2, array.get(0));
235 assertFalse(array.remove(val3));
236 assertEquals(1, array.size());
242 * Test of remove method, of class JsArray.
245 public void testRemove_int(){
246 System.out.println("remove");
248 JsArray array = new JsArray();
250 JsValue val1 = new JsNumber("1.23");
251 JsValue val2 = new JsString("abc");
252 JsValue val3 = JsBoolean.TRUE;
257 assertEquals(3, array.size());
259 assertEquals(val1, array.remove(0));
260 assertEquals(2, array.size());
261 assertEquals(val2, array.get(0));
263 assertEquals(val3, array.remove(1));
264 assertEquals(1, array.size());
265 assertEquals(val2, array.get(0));
271 * Test of size method, of class JsArray.
274 public void testSize(){
275 System.out.println("size");
277 JsArray array = new JsArray();
278 assertEquals(0, array.size());
279 assertTrue(array.isEmpty());
281 JsValue val1 = new JsNumber("1.23");
284 assertEquals(1, array.size());
285 assertFalse(array.isEmpty());
291 * Test of iterator method, of class JsArray.
294 public void testIterator(){
295 System.out.println("iterator");
297 JsArray array = new JsArray();
299 JsValue val1 = new JsNumber("1.23");
300 JsValue val2 = new JsString("abc");
305 Iterator<JsValue> it = array.iterator();
307 assertTrue(it.hasNext());
308 assertEquals(val1, it.next());
310 assertTrue(it.hasNext());
311 assertEquals(val2, it.next());
313 assertFalse(it.hasNext());
319 * Test of hashCode method, of class JsArray.
322 public void testHashCode(){
323 System.out.println("hashCode");
325 JsArray array1 = new JsArray();
326 JsArray array2 = new JsArray();
328 assertEquals(array1.hashCode(), array2.hashCode());
330 array1.add(new JsString("abc"));
331 array2.add(new JsString("abc"));
333 assertEquals(array1.hashCode(), array2.hashCode());
339 * Test of equals method, of class JsArray.
342 public void testEquals(){
343 System.out.println("equals");
345 JsArray array1 = new JsArray();
346 JsArray array2 = new JsArray();
348 assertTrue(array1.equals(array2));
350 array1.add(new JsString("abc"));
351 array2.add(new JsString("abc"));
353 assertTrue(array1.equals(array2));
355 array1.add(new JsString("xyz"));
356 array2.add(new JsString("XYZ"));
358 assertFalse(array1.equals(array2));
360 JsArray nullVal = null;
362 assertFalse(array1.equals(nullVal));
364 assertFalse(array1.equals(""));
370 * Test of toString method, of class JsArray.
373 public void testToString(){
374 System.out.println("toString");
376 JsArray array = new JsArray();
378 assertEquals("[]", array.toString());
380 array.add(JsBoolean.TRUE);
381 assertEquals("[true]", array.toString());
383 array.add(JsBoolean.FALSE);
384 assertEquals("[true,false]", array.toString());
386 array.add(new JsArray());
387 assertEquals("[true,false,[]]", array.toString());
393 * Test of traverse method, of class JsArray.
396 public void testTraverse() throws Exception{
397 System.out.println("traverse");
399 JsArray array = new JsArray();
400 JsValue val1 = new JsNumber("12");
401 JsValue val2 = new JsString("AB");
405 final List<Object> visited = new LinkedList<Object>();
408 array.traverse(new ValueVisitor(){
409 public void visitValue(JsValue value)
410 throws JsVisitException{
415 public void visitPairName(String name)
416 throws JsVisitException{
421 public void visitCompositionClose(JsComposition composite)
422 throws JsVisitException{
423 visited.add(composite);
427 }catch(JsVisitException e){
431 assertEquals(4, visited.size());
432 assertEquals(array, visited.get(0));
433 assertEquals(val1, visited.get(1));
434 assertEquals(val2, visited.get(2));
435 assertEquals(array, visited.get(3));
441 * Test of hasChanged method, of class JsArray.
444 public void testHasChanged(){
445 System.out.println("hasChanged");
447 JsArray array = new JsArray();
448 assertFalse(array.hasChanged());
450 array.add(new JsNumber("0"));
451 assertTrue(array.hasChanged());
453 array.setUnchanged();
454 assertFalse(array.hasChanged());
456 JsArray child = new JsArray();
458 array.setUnchanged();
459 assertFalse(array.hasChanged());
461 child.add(JsNull.NULL);
462 assertTrue(array.hasChanged());
463 array.setUnchanged();
464 assertFalse(array.hasChanged());
470 * Test of setUnchanged method, of class JsArray.
473 public void testSetUnchanged(){
474 System.out.println("setUnchanged");
476 JsArray array = new JsArray();
477 JsArray child = new JsArray();
480 child.add(JsNull.NULL);
481 assertTrue(child.hasChanged());
483 array.setUnchanged();
484 assertFalse(child.hasChanged());
490 * Test of getJsTypes method, of class JsArray.
493 public void testGetJsTypes() {
494 System.out.println("getJsTypes");
496 JsArray instance = new JsArray();
498 assertEquals(JsTypes.ARRAY, instance.getJsTypes());