source: trunk/gcc/libjava/testsuite/libjava.lang/InterfaceDispatch.java

Last change on this file was 2, checked in by bird, 22 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 6.3 KB
Line 
1/* Test interface dispatch, type checking (instanceof), and casting. */
2
3interface IA
4{
5 String a();
6}
7
8interface IB extends IA
9{
10 String b();
11}
12
13interface IC extends IB
14{
15 void c();
16 int d();
17 IB e(int i);
18}
19
20interface ID
21{
22 String z();
23 String a();
24}
25
26class CA
27{
28 String a()
29 {
30 return "CA a()";
31 }
32}
33
34class CB implements IB
35{
36 public String a()
37 {
38 return "CB a()";
39 }
40
41 public String b()
42 {
43 return "CB b()";
44 }
45}
46
47class CC extends CB
48{
49 public int d()
50 {
51 return 99;
52 }
53}
54
55class CD extends CC implements IC
56{
57 public String a()
58 {
59 return "CD a()";
60 }
61
62 public void c()
63 {
64 System.out.println("CD c()");
65 }
66
67 public int d()
68 {
69 return 6;
70 }
71
72 public IB e(int i)
73 {
74 if (i == 1)
75 return new CB();
76 else
77 return new CD();
78 }
79}
80
81class CE extends CB implements IB, ID
82{
83 public String a()
84 {
85 return ("CE a()");
86 }
87
88 public String b()
89 {
90 return ("CE b()");
91 }
92
93 public String z()
94 {
95 return("CE z()");
96 }
97}
98
99
100public class InterfaceDispatch
101{
102 public static void main(String args[])
103 {
104 new InterfaceDispatch();
105 }
106
107 public InterfaceDispatch()
108 {
109 /* _Jv_InstanceOf */
110
111 /* Object instanceof CLASS */
112 Object obj = new CA();
113
114 if (obj instanceof CA)
115 {
116 System.out.println ("ok 1");
117 }
118 else
119 {
120 System.out.println ("FAIL 1");
121 }
122
123 obj = new CD();
124
125 if (!(obj instanceof CA))
126 {
127 System.out.println ("ok 2a");
128 }
129 else
130 {
131 System.out.println ("FAIL 2a");
132 }
133
134 if (obj instanceof CB)
135 {
136 System.out.println ("ok 2b");
137 }
138 else
139 {
140 System.out.println ("FAIL 2b");
141 }
142
143
144 /* Object instanceof INTERFACE */
145 obj = new CB();
146
147 if (!(obj instanceof IC))
148 {
149 System.out.println("ok 3");
150 }
151 else
152 {
153 System.out.println ("FAIL 3");
154 }
155
156 if (obj instanceof IB)
157 {
158 System.out.println("ok 4");
159 }
160 else
161 {
162 System.out.println ("FAIL 4");
163 }
164
165 /* InterfaceRef instanceof INTERFACE */
166
167 IA ia = new CB();
168
169 if (ia instanceof IB)
170 {
171 System.out.println("ok 5");
172 }
173 else
174 {
175 System.out.println ("FAIL 5");
176 }
177
178
179 if (!(ia instanceof IC))
180 {
181 System.out.println("ok 6");
182 }
183 else
184 {
185 System.out.println ("FAIL 6");
186 }
187
188 /* InterfaceRef instanceof CLASS */
189
190 if (ia instanceof CB)
191 {
192 System.out.println("ok 7");
193 }
194 else
195 {
196 System.out.println ("FAIL 7");
197 }
198
199
200 if (!(ia instanceof CD))
201 {
202 System.out.println("ok 8");
203 }
204 else
205 {
206 System.out.println ("FAIL 8");
207 }
208
209
210 /* _Jv_CheckCast */
211 Object obj_ca = new CA();
212 Object obj_cc = new CC();
213
214 IA ia2;
215
216 try
217 {
218 ia2 = (IA) obj_cc;
219 System.out.println("ok 9");
220 }
221 catch (ClassCastException x)
222 {
223 System.out.println("FAIL 9");
224 }
225
226 CD cd;
227
228 try
229 {
230 cd = (CD) obj_ca;
231 System.out.println("FAIL 10");
232 }
233 catch (ClassCastException x)
234 {
235 System.out.println("ok 10");
236 }
237
238 IA ia3;
239
240 try
241 {
242 ia3 = (IB) obj_ca;
243 System.out.println("FAIL 11");
244 }
245 catch (ClassCastException x)
246 {
247 System.out.println("ok 11");
248 }
249
250 /* _Jv_LookupInterfaceMethod */
251 Object obj_cb = new CB();
252
253 IB ib = (IB) obj_cb;
254 ib.b();
255 if (ib.a().equalsIgnoreCase("CB a()"))
256 System.out.println("ok 12");
257 else
258 System.out.println("FAIL 12");
259
260 IC ic = new CD();
261 if (ic.a().equalsIgnoreCase("CD a()"))
262 System.out.println("ok 13");
263 else
264 System.out.println("FAIL 13");
265
266 if (ic.d() == 6)
267 System.out.println("ok 14");
268 else
269 System.out.println("FAIL 14");
270
271 Object ce = new CE();
272
273 ib = (IB) ce;
274 ID id = (ID) ce;
275
276 if (ib.b().equals("CE b()") && id.a().equals("CE a()"))
277 System.out.println("ok 15");
278 else
279 System.out.println("FAIL 15");
280
281 String t = ((ID)ce).z();
282
283 if (t.equalsIgnoreCase("CE z()"))
284 System.out.println("ok 16");
285 else
286 System.out.println("FAIL 16");
287
288 /* Array types */
289
290 Object[] obj_a = new CC[10];
291 try
292 {
293 CB[] ca_a = (CB[]) obj_a;
294 System.out.println("ok 17");
295 }
296 catch (ClassCastException x)
297 {
298 System.out.println("FAIL 17");
299 }
300
301 if (obj_a instanceof IB[])
302 {
303 System.out.println("ok 18");
304 }
305 else
306 {
307 System.out.println("FAIL 18");
308 }
309
310 IB[] ib_a = new CD[5];
311 try
312 {
313 CD[] cd_a = (CD[]) ib_a;
314 System.out.println("ok 19");
315 }
316 catch (ClassCastException x)
317 {
318 System.out.println("FAIL 19");
319 }
320
321 CA[] ca_a;
322
323 try
324 {
325 ca_a = (CA[]) ib_a;
326 System.out.println("FAIL 20");
327 }
328 catch (ClassCastException x)
329 {
330 System.out.println("ok 20");
331 }
332
333
334 /* Primitive types */
335
336 short[] short_a = new short[100];
337
338 try
339 {
340 obj = short_a;
341 System.out.println("ok 21");
342 }
343 catch (ClassCastException x)
344 {
345 System.out.println("FAIL 21");
346 }
347
348 try
349 {
350 short[] short_b = (short[]) obj;
351 System.out.println("ok 22");
352 }
353 catch (ClassCastException x)
354 {
355 System.out.println("FAIL 22");
356 }
357
358 int[] short_b;
359
360 try
361 {
362 short_b = (int[]) obj;
363 System.out.println("FAIL 23");
364 }
365 catch (ClassCastException x)
366 {
367 System.out.println("ok 23");
368 }
369
370 Object obj1 = new int[25];
371
372 if (obj1 instanceof short[])
373 {
374 System.out.println("FAIL 24");
375 }
376 else
377 {
378 System.out.println("ok 24");
379 }
380
381 if (obj1 instanceof int[])
382 {
383 System.out.println("ok 25");
384 }
385 else
386 {
387 System.out.println("FAIL 25");
388 }
389
390 /* null assignment */
391
392 CA obj_ca2 = null;
393
394 if (obj_ca2 instanceof CA)
395 {
396 System.out.println("FAIL 26");
397 }
398 else
399 {
400 System.out.println("ok 26");
401 }
402 }
403}
Note: See TracBrowser for help on using the repository browser.