2 * To change this template, choose Tools | Templates
\r
3 * and open the template in the editor.
\r
6 package jp.sourceforge.jindolf.json;
\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
22 public class JsArrayTest {
\r
24 public JsArrayTest() {
\r
28 public static void setUpClass() throws Exception{
\r
32 public static void tearDownClass() throws Exception{
\r
36 public void setUp() {
\r
40 public void tearDown() {
\r
44 * Test of parseArray method, of class JsArray.
\r
47 public void testParseArray() throws Exception{
\r
48 System.out.println("parseArray");
\r
53 reader = new JsonReader(new StringReader("[]"));
\r
54 array = JsArray.parseArray(reader);
\r
55 assertEquals(0, array.size());
\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
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
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
75 reader = new JsonReader(new StringReader("[,]"));
\r
76 array = JsArray.parseArray(reader);
\r
78 }catch(JsParseException e){
\r
83 reader = new JsonReader(new StringReader("[true,]"));
\r
84 array = JsArray.parseArray(reader);
\r
86 }catch(JsParseException e){
\r
91 reader = new JsonReader(new StringReader("[true"));
\r
92 array = JsArray.parseArray(reader);
\r
94 }catch(JsParseException e){
\r
99 reader = new JsonReader(new StringReader("true]"));
\r
100 array = JsArray.parseArray(reader);
\r
102 }catch(JsParseException e){
\r
110 * Test of add method, of class JsArray.
\r
113 public void testAdd(){
\r
114 System.out.println("add");
\r
116 JsArray array = new JsArray();
\r
118 JsNumber number = new JsNumber("1.23");
\r
119 assertEquals(0, array.size());
\r
121 assertEquals(1, array.size());
\r
123 assertEquals(2, array.size());
\r
129 * Test of get method, of class JsArray.
\r
132 public void testGet(){
\r
133 System.out.println("get");
\r
135 JsArray array = new JsArray();
\r
137 JsValue val1 = new JsNumber("1.23");
\r
138 JsValue val2 = new JsString("abc");
\r
143 assertEquals(val1, array.get(0));
\r
144 assertEquals(val2, array.get(1));
\r
149 }catch(IndexOutOfBoundsException e){
\r
157 * Test of clear method, of class JsArray.
\r
160 public void testClear(){
\r
161 System.out.println("clear");
\r
163 JsArray array = new JsArray();
\r
165 JsValue val1 = new JsNumber("1.23");
\r
166 JsValue val2 = new JsString("abc");
\r
170 assertEquals(2, array.size());
\r
173 assertEquals(0, array.size());
\r
178 }catch(IndexOutOfBoundsException e){
\r
186 * Test of remove method, of class JsArray.
\r
189 public void testRemove(){
\r
190 System.out.println("remove");
\r
192 JsArray array = new JsArray();
\r
194 JsValue val1 = new JsNumber("1.23");
\r
195 JsValue val2 = new JsString("abc");
\r
196 JsValue val3 = JsBoolean.TRUE;
\r
200 assertEquals(2, array.size());
\r
202 assertTrue(array.remove(val1));
\r
203 assertEquals(1, array.size());
\r
204 assertEquals(val2, array.get(0));
\r
206 assertFalse(array.remove(val3));
\r
207 assertEquals(1, array.size());
\r
213 * Test of size method, of class JsArray.
\r
216 public void testSize(){
\r
217 System.out.println("size");
\r
219 JsArray array = new JsArray();
\r
220 assertEquals(0, array.size());
\r
222 JsValue val1 = new JsNumber("1.23");
\r
225 assertEquals(1, array.size());
\r
231 * Test of iterator method, of class JsArray.
\r
234 public void testIterator(){
\r
235 System.out.println("iterator");
\r
237 JsArray array = new JsArray();
\r
239 JsValue val1 = new JsNumber("1.23");
\r
240 JsValue val2 = new JsString("abc");
\r
245 Iterator<JsValue> it = array.iterator();
\r
247 assertTrue(it.hasNext());
\r
248 assertEquals(val1, it.next());
\r
250 assertTrue(it.hasNext());
\r
251 assertEquals(val2, it.next());
\r
253 assertFalse(it.hasNext());
\r
259 * Test of hashCode method, of class JsArray.
\r
262 public void testHashCode(){
\r
263 System.out.println("hashCode");
\r
265 JsArray array1 = new JsArray();
\r
266 JsArray array2 = new JsArray();
\r
268 assertEquals(array1.hashCode(), array2.hashCode());
\r
270 array1.add(new JsString("abc"));
\r
271 array2.add(new JsString("abc"));
\r
273 assertEquals(array1.hashCode(), array2.hashCode());
\r
279 * Test of equals method, of class JsArray.
\r
282 public void testEquals(){
\r
283 System.out.println("equals");
\r
285 JsArray array1 = new JsArray();
\r
286 JsArray array2 = new JsArray();
\r
288 assertTrue(array1.equals(array2));
\r
290 array1.add(new JsString("abc"));
\r
291 array2.add(new JsString("abc"));
\r
293 assertTrue(array1.equals(array2));
\r
295 array1.add(new JsString("xyz"));
\r
296 array2.add(new JsString("XYZ"));
\r
298 assertFalse(array1.equals(array2));
\r
300 assertFalse(array1.equals(null));
\r
306 * Test of toString method, of class JsArray.
\r
309 public void testToString(){
\r
310 System.out.println("toString");
\r
312 JsArray array = new JsArray();
\r
314 assertEquals("[]", array.toString());
\r
316 array.add(JsBoolean.TRUE);
\r
317 assertEquals("[true]", array.toString());
\r
319 array.add(JsBoolean.FALSE);
\r
320 assertEquals("[true,false]", array.toString());
\r
322 array.add(new JsArray());
\r
323 assertEquals("[true,false,[]]", array.toString());
\r
329 * Test of traverse method, of class JsArray.
\r
332 public void testTraverse() throws Exception{
\r
333 System.out.println("traverse");
\r
335 JsArray array = new JsArray();
\r
336 JsValue val1 = new JsNumber("12");
\r
337 JsValue val2 = new JsString("AB");
\r
341 final List<Object> visited = new LinkedList<Object>();
\r
344 array.traverse(new ValueVisitor(){
\r
345 public void visitValue(JsValue value)
\r
346 throws JsVisitException{
\r
347 visited.add(value);
\r
351 public void visitPairName(String name)
\r
352 throws JsVisitException{
\r
357 public void visitCollectionClose(JsValue composite)
\r
358 throws JsVisitException{
\r
359 visited.add(composite);
\r
363 }catch(JsVisitException e){
\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
377 * Test of hasChanged method, of class JsArray.
\r
380 public void testHasChanged(){
\r
381 System.out.println("hasChanged");
\r
383 JsArray array = new JsArray();
\r
384 assertFalse(array.hasChanged());
\r
386 array.add(new JsNumber("0"));
\r
387 assertTrue(array.hasChanged());
\r
389 array.setUnchanged();
\r
390 assertFalse(array.hasChanged());
\r
392 JsArray child = new JsArray();
\r
394 array.setUnchanged();
\r
395 assertFalse(array.hasChanged());
\r
397 child.add(JsNull.NULL);
\r
398 assertTrue(array.hasChanged());
\r
399 array.setUnchanged();
\r
400 assertFalse(array.hasChanged());
\r
406 * Test of setUnchanged method, of class JsArray.
\r
409 public void testSetUnchanged(){
\r
410 System.out.println("setUnchanged");
\r
412 JsArray array = new JsArray();
\r
413 JsArray child = new JsArray();
\r
416 child.add(JsNull.NULL);
\r
417 assertTrue(child.hasChanged());
\r
419 array.setUnchanged();
\r
420 assertFalse(child.hasChanged());
\r