Merge from mainline (gomp-merge-2005-02-26).
[official-gcc.git] / libjava / testsuite / libjava.lang / InterfaceDispatch.java
blob17f5c46946fe032c34432c6fd9485c5ad1eef957
1 /* Test interface dispatch, type checking (instanceof), and casting. */
3 interface IA
5 String a();
8 interface IB extends IA
10 String b();
13 interface IC extends IB
15 void c();
16 int d();
17 IB e(int i);
20 interface ID
22 String z();
23 String a();
26 class CA
28 String a()
30 return "CA a()";
34 class CB implements IB
36 public String a()
38 return "CB a()";
41 public String b()
43 return "CB b()";
47 class CC extends CB
49 public int d()
51 return 99;
55 class CD extends CC implements IC
57 public String a()
59 return "CD a()";
62 public void c()
64 System.out.println("CD c()");
67 public int d()
69 return 6;
72 public IB e(int i)
74 if (i == 1)
75 return new CB();
76 else
77 return new CD();
81 class CE extends CB implements IB, ID
83 public String a()
85 return ("CE a()");
88 public String b()
90 return ("CE b()");
93 public String z()
95 return("CE z()");
100 public class InterfaceDispatch
102 public static void main(String args[])
104 new InterfaceDispatch();
107 public InterfaceDispatch()
109 /* _Jv_InstanceOf */
111 /* Object instanceof CLASS */
112 Object obj = new CA();
114 if (obj instanceof CA)
116 System.out.println ("ok 1");
118 else
120 System.out.println ("FAIL 1");
123 obj = new CD();
125 if (!(obj instanceof CA))
127 System.out.println ("ok 2a");
129 else
131 System.out.println ("FAIL 2a");
134 if (obj instanceof CB)
136 System.out.println ("ok 2b");
138 else
140 System.out.println ("FAIL 2b");
144 /* Object instanceof INTERFACE */
145 obj = new CB();
147 if (!(obj instanceof IC))
149 System.out.println("ok 3");
151 else
153 System.out.println ("FAIL 3");
156 if (obj instanceof IB)
158 System.out.println("ok 4");
160 else
162 System.out.println ("FAIL 4");
165 /* InterfaceRef instanceof INTERFACE */
167 IA ia = new CB();
169 if (ia instanceof IB)
171 System.out.println("ok 5");
173 else
175 System.out.println ("FAIL 5");
179 if (!(ia instanceof IC))
181 System.out.println("ok 6");
183 else
185 System.out.println ("FAIL 6");
188 /* InterfaceRef instanceof CLASS */
190 if (ia instanceof CB)
192 System.out.println("ok 7");
194 else
196 System.out.println ("FAIL 7");
200 if (!(ia instanceof CD))
202 System.out.println("ok 8");
204 else
206 System.out.println ("FAIL 8");
210 /* _Jv_CheckCast */
211 Object obj_ca = new CA();
212 Object obj_cc = new CC();
214 IA ia2;
218 ia2 = (IA) obj_cc;
219 System.out.println("ok 9");
221 catch (ClassCastException x)
223 System.out.println("FAIL 9");
226 CD cd;
230 cd = (CD) obj_ca;
231 System.out.println("FAIL 10");
233 catch (ClassCastException x)
235 System.out.println("ok 10");
238 IA ia3;
242 ia3 = (IB) obj_ca;
243 System.out.println("FAIL 11");
245 catch (ClassCastException x)
247 System.out.println("ok 11");
250 /* _Jv_LookupInterfaceMethod */
251 Object obj_cb = new CB();
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");
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");
266 if (ic.d() == 6)
267 System.out.println("ok 14");
268 else
269 System.out.println("FAIL 14");
271 Object ce = new CE();
273 ib = (IB) ce;
274 ID id = (ID) ce;
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");
281 String t = ((ID)ce).z();
283 if (t.equalsIgnoreCase("CE z()"))
284 System.out.println("ok 16");
285 else
286 System.out.println("FAIL 16");
288 /* Array types */
290 Object[] obj_a = new CC[10];
293 CB[] ca_a = (CB[]) obj_a;
294 System.out.println("ok 17");
296 catch (ClassCastException x)
298 System.out.println("FAIL 17");
301 if (obj_a instanceof IB[])
303 System.out.println("ok 18");
305 else
307 System.out.println("FAIL 18");
310 IB[] ib_a = new CD[5];
311 try
313 CD[] cd_a = (CD[]) ib_a;
314 System.out.println("ok 19");
316 catch (ClassCastException x)
318 System.out.println("FAIL 19");
321 CA[] ca_a;
323 try
325 ca_a = (CA[]) ib_a;
326 System.out.println("FAIL 20");
328 catch (ClassCastException x)
330 System.out.println("ok 20");
334 /* Primitive types */
336 short[] short_a = new short[100];
340 obj = short_a;
341 System.out.println("ok 21");
343 catch (ClassCastException x)
345 System.out.println("FAIL 21");
350 short[] short_b = (short[]) obj;
351 System.out.println("ok 22");
353 catch (ClassCastException x)
355 System.out.println("FAIL 22");
358 int[] short_b;
362 short_b = (int[]) obj;
363 System.out.println("FAIL 23");
365 catch (ClassCastException x)
367 System.out.println("ok 23");
370 Object obj1 = new int[25];
372 if (obj1 instanceof short[])
374 System.out.println("FAIL 24");
376 else
378 System.out.println("ok 24");
381 if (obj1 instanceof int[])
383 System.out.println("ok 25");
385 else
387 System.out.println("FAIL 25");
390 /* null assignment */
392 CA obj_ca2 = null;
394 if (obj_ca2 instanceof CA)
396 System.out.println("FAIL 26");
398 else
400 System.out.println("ok 26");