1 // **********************************************************************
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
8 // **********************************************************************
10 package test
.Slice
.structure
;
12 import test
.Slice
.structure
.Test
.S1
;
13 import test
.Slice
.structure
.Test
.S2
;
14 import test
.Slice
.structure
.Test
.C
;
15 import java
.util
.ArrayList
;
17 import java
.util
.HashMap
;
21 private static void test(boolean b
)
25 throw new RuntimeException();
29 private static void allTests(Ice
.Communicator communicator
)
31 System
.out
.print("testing equals() for Slice structures... ");
35 // Define some default values.
38 S1 def_s
= new S1("name");
39 String
[] def_ss
= new String
[]{ "one", "two", "three" };
40 ArrayList
<Integer
> def_il
= new ArrayList
<Integer
>();
44 Map
<String
, String
> def_sd
= new HashMap
<String
, String
>();
45 def_sd
.put("abc", "def");
46 Ice
.ObjectPrx def_prx
= communicator
.stringToProxy("test");
47 S2 def_s2
= new S2(true, (byte)98, (short)99, 100, 101, (float)1.0, 2.0, "string", def_ss
, def_il
, def_sd
,
48 def_s
, def_cls
, def_prx
);
51 // Compare default-constructed structures.
54 test(new S2().equals(new S2()));
58 // Change one primitive member at a time.
63 v
= (S2
)def_s2
.clone();
64 test(v
.equals(def_s2
));
66 v
= (S2
)def_s2
.clone();
68 test(!v
.equals(def_s2
));
70 v
= (S2
)def_s2
.clone();
72 test(!v
.equals(def_s2
));
74 v
= (S2
)def_s2
.clone();
76 test(!v
.equals(def_s2
));
78 v
= (S2
)def_s2
.clone();
80 test(!v
.equals(def_s2
));
82 v
= (S2
)def_s2
.clone();
84 test(!v
.equals(def_s2
));
86 v
= (S2
)def_s2
.clone();
88 test(!v
.equals(def_s2
));
90 v
= (S2
)def_s2
.clone();
92 test(!v
.equals(def_s2
));
94 v
= (S2
)def_s2
.clone();
96 test(!v
.equals(def_s2
));
105 v1
= (S2
)def_s2
.clone();
106 v1
.str
= new String(def_s2
.str
);
107 test(v1
.equals(def_s2
));
109 v1
= (S2
)def_s2
.clone();
110 v2
= (S2
)def_s2
.clone();
112 test(!v1
.equals(v2
));
114 v1
= (S2
)def_s2
.clone();
115 v2
= (S2
)def_s2
.clone();
117 test(!v1
.equals(v2
));
119 v1
= (S2
)def_s2
.clone();
120 v2
= (S2
)def_s2
.clone();
132 v1
= (S2
)def_s2
.clone();
133 v1
.ss
= (String
[])def_s2
.ss
.clone();
134 test(v1
.equals(def_s2
));
136 v1
= (S2
)def_s2
.clone();
137 v2
= (S2
)def_s2
.clone();
139 test(!v1
.equals(v2
));
141 v1
= (S2
)def_s2
.clone();
142 v2
= (S2
)def_s2
.clone();
144 test(!v1
.equals(v2
));
148 // Custom sequence member
153 v1
= (S2
)def_s2
.clone();
154 v1
.il
= new ArrayList
<Integer
>(def_s2
.il
);
155 test(v1
.equals(def_s2
));
157 v1
= (S2
)def_s2
.clone();
158 v1
.il
= new ArrayList
<Integer
>();
159 test(!v1
.equals(def_s2
));
161 v1
= (S2
)def_s2
.clone();
162 v2
= (S2
)def_s2
.clone();
164 test(!v1
.equals(v2
));
166 v1
= (S2
)def_s2
.clone();
167 v2
= (S2
)def_s2
.clone();
169 test(!v1
.equals(v2
));
178 v1
= (S2
)def_s2
.clone();
179 v1
.sd
= new HashMap
<String
, String
>(def_s2
.sd
);
180 test(v1
.equals(def_s2
));
182 v1
= (S2
)def_s2
.clone();
183 v1
.sd
= new HashMap
<String
, String
>();
184 test(!v1
.equals(def_s2
));
186 v1
= (S2
)def_s2
.clone();
187 v2
= (S2
)def_s2
.clone();
189 test(!v1
.equals(v2
));
191 v1
= (S2
)def_s2
.clone();
192 v2
= (S2
)def_s2
.clone();
194 test(!v1
.equals(v2
));
203 v1
= (S2
)def_s2
.clone();
204 v1
.s
= (S1
)def_s2
.s
.clone();
205 test(v1
.equals(def_s2
));
207 v1
= (S2
)def_s2
.clone();
208 v1
.s
= new S1("name");
209 test(v1
.equals(def_s2
));
211 v1
= (S2
)def_s2
.clone();
212 v1
.s
= new S1("noname");
213 test(!v1
.equals(def_s2
));
215 v1
= (S2
)def_s2
.clone();
216 v2
= (S2
)def_s2
.clone();
218 test(!v1
.equals(v2
));
220 v1
= (S2
)def_s2
.clone();
221 v2
= (S2
)def_s2
.clone();
223 test(!v1
.equals(v2
));
232 v1
= (S2
)def_s2
.clone();
233 v1
.cls
= (C
)def_s2
.cls
.clone();
234 test(!v1
.equals(def_s2
));
236 v1
= (S2
)def_s2
.clone();
237 v2
= (S2
)def_s2
.clone();
239 test(!v1
.equals(v2
));
241 v1
= (S2
)def_s2
.clone();
242 v2
= (S2
)def_s2
.clone();
244 test(!v1
.equals(v2
));
253 v1
= (S2
)def_s2
.clone();
254 v1
.prx
= communicator
.stringToProxy("test");
255 test(v1
.equals(def_s2
));
257 v1
= (S2
)def_s2
.clone();
258 v1
.prx
= communicator
.stringToProxy("test2");
259 test(!v1
.equals(def_s2
));
261 v1
= (S2
)def_s2
.clone();
262 v2
= (S2
)def_s2
.clone();
264 test(!v1
.equals(v2
));
266 v1
= (S2
)def_s2
.clone();
267 v2
= (S2
)def_s2
.clone();
269 test(!v1
.equals(v2
));
272 System
.out
.println("ok");
275 private static int run(String
[] args
, Ice
.Communicator communicator
)
277 allTests(communicator
);
282 public static void main(String
[] args
)
285 Ice
.Communicator communicator
= null;
289 Ice
.StringSeqHolder argsH
= new Ice
.StringSeqHolder(args
);
290 communicator
= Ice
.Util
.initialize(argsH
);
291 status
= run(argsH
.value
, communicator
);
295 ex
.printStackTrace();
299 if(communicator
!= null)
303 communicator
.destroy();
305 catch(Ice
.LocalException ex
)
307 ex
.printStackTrace();