blob: fefd00c33f840dafbd210e2cf03837c1c8e9c24d [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 */
23
24/*
25 * @test
26 * @bug 5015663
27 * @summary Test ObjectInstance(name,null).hashCode() and .equals()
28 * @author Daniel Fuchs
29 * @run clean ObjectInstanceNullTest
30 * @run build ObjectInstanceNullTest
31 * @run main ObjectInstanceNullTest
32 */
33
34import javax.management.*;
35
36public class ObjectInstanceNullTest {
37
38 public static void testEquals(ObjectInstance n1, ObjectInstance n2) {
39 try {
40 if (!n1.equals(n2) || !n2.equals(n1)) {
41 System.err.println("Equals yields false for: "+
42 "["+n1.getObjectName()+" , "+
43 n1.getClassName()+"] ["+
44 n2.getObjectName()+" , "+
45 n2.getClassName()+"]");
46 System.exit(1);
47 }
48 } catch (Exception x) {
49 System.err.println("Equals failed for: "+
50 "["+n1.getObjectName()+" , "+
51 n1.getClassName()+"] ["+
52 n2.getObjectName()+" , "+
53 n2.getClassName()+"]: " + x);
54 x.printStackTrace();
55 System.exit(2);
56 }
57 try {
58 if (n1.hashCode() != n2.hashCode()) {
59 System.err.println("Different hashCode() for: "+
60 "["+n1.getObjectName()+" , "+
61 n1.getClassName()+"] ["+
62 n2.getObjectName()+" , "+
63 n2.getClassName()+"]");
64 System.exit(3);
65 }
66 } catch (Exception x) {
67 System.err.println("Hashcode failed for: "+
68 "["+n1.getObjectName()+" , "+
69 n1.getClassName()+"] ["+
70 n2.getObjectName()+" , "+
71 n2.getClassName()+"]: " + x);
72 x.printStackTrace();
73 System.exit(4);
74 }
75 }
76
77 public static void testNotEquals(ObjectInstance n1, ObjectInstance n2) {
78 try {
79 if (n1.equals(n2) || n2.equals(n1)) {
80 System.err.println("Equals yields true for: "+
81 "["+n1.getObjectName()+" , "+
82 n1.getClassName()+"] ["+
83 n2.getObjectName()+" , "+
84 n2.getClassName()+"]");
85 System.exit(5);
86 }
87 } catch (Exception x) {
88 System.err.println("!Equals failed for: "+
89 "["+n1.getObjectName()+" , "+
90 n1.getClassName()+"] ["+
91 n2.getObjectName()+" , "+
92 n2.getClassName()+"]: " + x);
93 x.printStackTrace();
94 System.exit(6);
95 }
96 try {
97 if (n1.hashCode() == n2.hashCode()) {
98 System.out.println("Warning: Same hashCode() for: "+
99 "["+n1.getObjectName()+" , "+
100 n1.getClassName()+"] ["+
101 n2.getObjectName()+" , "+
102 n2.getClassName()+"]");
103 }
104 } catch (Exception x) {
105 System.err.println("Hashcode failed for: "+
106 "["+n1.getObjectName()+" , "+
107 n1.getClassName()+"] ["+
108 n2.getObjectName()+" , "+
109 n2.getClassName()+"]: " + x);
110 x.printStackTrace();
111 System.exit(7);
112 }
113 }
114
115 public static void main(String[] args) throws Exception {
116 System.out.println("Test ObjectInstance(name,null).equals() and " +
117 "ObjectInstance(name,null).hashCode()");
118 try {
119 ObjectName toto1 = new ObjectName("Toto:foo=bar");
120 ObjectName toto2 = new ObjectName("Toto:bar=foo");
121 ObjectName clone1 = new ObjectName("Toto:bar=foo,cloned=yes");
122 ObjectName clone2 = new ObjectName("Toto:cloned=yes,bar=foo");
123 ObjectInstance n1 = new ObjectInstance(toto1,null);
124 ObjectInstance n2 = new ObjectInstance(toto1,null);
125 testEquals(n1,n1);
126 testEquals(n1,n2);
127 ObjectInstance n3 = new ObjectInstance(toto1,"Object");
128 ObjectInstance n4 = new ObjectInstance(toto1,"Object");
129 testEquals(n3,n3);
130 testEquals(n3,n4);
131 testNotEquals(n1,n3);
132 ObjectInstance n5 = new ObjectInstance(toto2,null);
133 ObjectInstance n6 = new ObjectInstance(toto2,"Object");
134 testEquals(n5,n5);
135 testEquals(n6,n6);
136 testNotEquals(n5,n1);
137 testNotEquals(n5,n3);
138 testNotEquals(n6,n1);
139 testNotEquals(n6,n3);
140 testNotEquals(n5,n6);
141 ObjectInstance n7 = new ObjectInstance(clone1,null);
142 ObjectInstance n8 = new ObjectInstance(clone2,null);
143 testEquals(n7,n8);
144 testNotEquals(n7,n1);
145 testNotEquals(n7,n5);
146 ObjectInstance n9 = new ObjectInstance(clone1,"Object");
147 ObjectInstance n10 = new ObjectInstance(clone2,"Object");
148 testEquals(n9,n10);
149 testNotEquals(n9,n1);
150 testNotEquals(n9,n5);
151 testNotEquals(n9,n7);
152 testNotEquals(n9,n8);
153 testNotEquals(n10,n1);
154 testNotEquals(n10,n5);
155 testNotEquals(n10,n7);
156 testNotEquals(n10,n8);
157 } catch( Exception x) {
158 System.err.println("Unexpected exception: " + x);
159 x.printStackTrace();
160 System.exit(8);
161 }
162 }
163
164}