1   /*
2    * Copyright 2002-2009 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package net.sf.json;
18  
19  import java.util.ArrayList;
20  import java.util.List;
21  
22  import junit.framework.TestCase;
23  import net.sf.json.sample.JsonEventAdpater;
24  
25  /**
26   * @author Andres Almiray <aalmiray@users.sourceforge.net>
27   */
28  public class TestJSONArrayEvents extends TestCase {
29     public static void main( String[] args ) {
30        junit.textui.TestRunner.run( TestJSONArrayEvents.class );
31     }
32  
33     private JsonConfig jsonConfig;
34     private JsonEventAdpater jsonEventAdpater;
35  
36     public TestJSONArrayEvents( String name ) {
37        super( name );
38     }
39  
40     public void testFromObject_array() {
41        JSONArray.fromObject( new Object[] { "1", "2", "3" }, jsonConfig );
42        assertEvents();
43     }
44  
45     public void testFromObject_error() {
46        try{
47           JSONArray.fromObject( "{}", jsonConfig );
48           fail( "A JSONException was expected" );
49        }catch( JSONException expected ){
50           assertEquals( 1, jsonEventAdpater.getError() );
51           assertEquals( 0, jsonEventAdpater.getWarning() );
52           assertEquals( 0, jsonEventAdpater.getArrayStart() );
53           assertEquals( 0, jsonEventAdpater.getArrayEnd() );
54           assertEquals( 0, jsonEventAdpater.getObjectStart() );
55           assertEquals( 0, jsonEventAdpater.getObjectEnd() );
56           assertEquals( 0, jsonEventAdpater.getElementAdded() );
57           assertEquals( 0, jsonEventAdpater.getPropertySet() );
58        }
59     }
60  
61     public void testFromObject_JSONArray() {
62        JSONArray array = new JSONArray().element( "1" )
63              .element( "2" )
64              .element( "3" );
65        JSONArray.fromObject( array, jsonConfig );
66        assertEvents();
67     }
68  
69     public void testFromObject_list() {
70        List list = new ArrayList();
71        list.add( "1" );
72        list.add( "2" );
73        list.add( "3" );
74        JSONArray.fromObject( list, jsonConfig );
75        assertEvents();
76     }
77  
78     public void testFromObject_primitive_boolean() {
79        JSONArray.fromObject( new boolean[] { true, false, true }, jsonConfig );
80        assertEvents();
81     }
82  
83     public void testFromObject_primitive_byte() {
84        JSONArray.fromObject( new byte[] { (byte) 1, (byte) 2, (byte) 3 }, jsonConfig );
85        assertEvents();
86     }
87  
88     public void testFromObject_primitive_double() {
89        JSONArray.fromObject( new double[] { 1d, 2d, 3d }, jsonConfig );
90        assertEvents();
91     }
92  
93     public void testFromObject_primitive_float() {
94        JSONArray.fromObject( new float[] { 1f, 2f, 3f }, jsonConfig );
95        assertEvents();
96     }
97  
98     public void testFromObject_primitive_int() {
99        JSONArray.fromObject( new int[] { 1, 2, 3 }, jsonConfig );
100       assertEvents();
101    }
102 
103    public void testFromObject_primitive_long() {
104       JSONArray.fromObject( new long[] { 1L, 2L, 3L }, jsonConfig );
105       assertEvents();
106    }
107 
108    public void testFromObject_primitive_short() {
109       JSONArray.fromObject( new short[] { (short) 1, (short) 2, (short) 3 }, jsonConfig );
110       assertEvents();
111    }
112 
113    public void testFromObject_string() {
114       JSONArray.fromObject( "[1,2,3]", jsonConfig );
115       assertEvents();
116    }
117 
118    protected void setUp() throws Exception {
119       jsonEventAdpater = new JsonEventAdpater();
120       jsonConfig = new JsonConfig();
121       jsonConfig.addJsonEventListener( jsonEventAdpater );
122       jsonConfig.enableEventTriggering();
123    }
124 
125    private void assertEvents() {
126       assertEquals( 0, jsonEventAdpater.getError() );
127       assertEquals( 0, jsonEventAdpater.getWarning() );
128       assertEquals( 1, jsonEventAdpater.getArrayStart() );
129       assertEquals( 1, jsonEventAdpater.getArrayEnd() );
130       assertEquals( 0, jsonEventAdpater.getObjectStart() );
131       assertEquals( 0, jsonEventAdpater.getObjectEnd() );
132       assertEquals( 3, jsonEventAdpater.getElementAdded() );
133       assertEquals( 0, jsonEventAdpater.getPropertySet() );
134    }
135 }