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.HashMap;
20  import java.util.Map;
21  
22  import junit.framework.TestCase;
23  
24  /**
25   * @author Andres Almiray <aalmiray@users.sourceforge.net>
26   */
27  public class TestJSONArrayEqualsHashCodeCompareTo extends TestCase {
28     private static JSONArray strings;
29     private static Map values = new HashMap();
30     private static JSONArray values1;
31     private static JSONArray values2;
32     private static JSONArray values3;
33  
34     static{
35        values.put( "int.1", Integer.valueOf( "1" ) );
36        values.put( "int.2", Integer.valueOf( "2" ) );
37        values.put( "long.1", Long.valueOf( "1" ) );
38        values.put( "long.2", Long.valueOf( "2" ) );
39        values.put( "string.1", "1" );
40        values.put( "string.2", "2" );
41        values.put( "boolean.1", Boolean.TRUE );
42        values.put( "boolean.2", Boolean.FALSE );
43  
44        strings = new JSONArray().element( "1" )
45              .element( "1" )
46              .element( "true" )
47              .element( "string" )
48              .element( "function(){ return this; }" )
49              .element( "[1,2,3]" );
50        values.put( "JSONArray.strings", strings );
51        values1 = new JSONArray().element( Integer.valueOf( "1" ) )
52              .element( Long.valueOf( "1" ) )
53              .element( Boolean.TRUE )
54              .element( "string" )
55              .element( new JSONFunction( "return this;" ) )
56              .element( JSONArray.fromObject( new int[] { 1, 2, 3 } ) );
57        values.put( "JSONArray.values.1", values1 );
58        values2 = new JSONArray().element( Integer.valueOf( "1" ) )
59              .element( Long.valueOf( "1" ) )
60              .element( Boolean.TRUE )
61              .element( "string" );
62        values.put( "JSONObject.values.2", values2 );
63        values3 = new JSONArray().element( Integer.valueOf( "2" ) )
64              .element( Long.valueOf( "2" ) )
65              .element( Boolean.FALSE )
66              .element( "string2" );
67        values.put( "JSONObject.values.3", values3 );
68     }
69  
70     public static void main( String[] args ) {
71        junit.textui.TestRunner.run( TestJSONArrayEqualsHashCodeCompareTo.class );
72     }
73  
74     public TestJSONArrayEqualsHashCodeCompareTo( String name ) {
75        super( name );
76     }
77  
78     public void testCompareTo_different_size() {
79        assertEquals( -1, values2.compareTo( strings ) );
80        assertEquals( 1, strings.compareTo( values2 ) );
81     }
82  
83     public void testCompareTo_null() {
84        assertEquals( -1, strings.compareTo( null ) );
85     }
86  
87     public void testCompareTo_object() {
88        assertEquals( -1, strings.compareTo( new Object() ) );
89     }
90  
91     public void testCompareTo_same_array() {
92        assertEquals( 0, strings.compareTo( strings ) );
93     }
94  
95     public void testCompareTo_same_size_different_values() {
96        assertEquals( -1, values2.compareTo( values3 ) );
97     }
98  
99     public void testCompareTo_same_size_similar_values() {
100       assertEquals( 0, strings.compareTo( values1 ) );
101    }
102 
103    public void testEquals_different_elements_same_size() {
104       assertFalse( values2.equals( values3 ) );
105       assertFalse( values3.equals( values2 ) );
106    }
107 
108    public void testEquals_null() {
109       assertFalse( strings.equals( null ) );
110    }
111 
112    public void testEquals_object() {
113       assertFalse( strings.equals( new Object() ) );
114    }
115 
116    public void testEquals_same_object() {
117       assertTrue( strings.equals( strings ) );
118    }
119 
120    public void testEquals_same_size_similar_values() {
121       assertTrue( strings.equals( values1 ) );
122    }
123 
124    public void testHashCode_different_elements_same_size() {
125       assertFalse( values2.hashCode() == values3.hashCode() );
126    }
127 }