InterfaceDispatch.java: New file.
authorBryce McKinlay <bryce@albatross.co.nz>
Wed, 16 Feb 2000 05:13:46 +0000 (05:13 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Wed, 16 Feb 2000 05:13:46 +0000 (05:13 +0000)
2000-02-16  Bryce McKinlay  <bryce@albatross.co.nz>

        * libjava.lang/InterfaceDispatch.java: New file.
        * libjava.lang/InterfaceDispatch.out: New file.

From-SVN: r32001

libjava/testsuite/ChangeLog
libjava/testsuite/libjava.lang/InterfaceDispatch.java [new file with mode: 0644]
libjava/testsuite/libjava.lang/InterfaceDispatch.out [new file with mode: 0644]

index c162f7c00a1913b8298639bc9bdaff4b9958652e..4d8e534ac14c16c3eadc3ca11cc4f4cd41c9befd 100644 (file)
@@ -1,3 +1,8 @@
+2000-02-16  Bryce McKinlay  <bryce@albatross.co.nz>
+
+       * libjava.lang/InterfaceDispatch.java: New file.
+       * libjava.lang/InterfaceDispatch.out: New file.
+
 2000-02-15  Tom Tromey  <tromey@cygnus.com>
 
        * libjava.jni/virtual.java: New file.
diff --git a/libjava/testsuite/libjava.lang/InterfaceDispatch.java b/libjava/testsuite/libjava.lang/InterfaceDispatch.java
new file mode 100644 (file)
index 0000000..17f5c46
--- /dev/null
@@ -0,0 +1,403 @@
+/* Test interface dispatch, type checking (instanceof), and casting. */
+
+interface IA
+{
+  String a();
+}
+
+interface IB extends IA
+{
+  String b();
+}
+
+interface IC extends IB
+{
+  void c();
+  int d();
+  IB e(int i);
+}
+
+interface ID
+{
+  String z();
+  String a();  
+}
+
+class CA
+{
+  String a()
+  {
+    return "CA a()";
+  }
+}
+
+class CB implements IB
+{
+  public String a()
+  {
+    return "CB a()";
+  }
+  
+  public String b()
+  {
+    return "CB b()";  
+  }
+}
+
+class CC extends CB
+{
+  public int d()
+  {
+    return 99;
+  }
+}
+
+class CD extends CC implements IC
+{
+  public String a()
+  {
+    return "CD a()";
+  }
+  
+  public void c()
+  {
+    System.out.println("CD c()");
+  }
+  
+  public int d()
+  {
+    return 6;
+  }
+  
+  public IB e(int i)
+  {
+    if (i == 1)
+      return new CB();
+    else
+      return new CD();
+  }
+}
+
+class CE extends CB implements IB, ID
+{
+  public String a()
+  {
+    return ("CE a()");
+  }
+  
+  public String b()
+  {
+    return ("CE b()");
+  }
+    
+  public String z()
+  {
+    return("CE z()");  
+  }
+}
+
+
+public class InterfaceDispatch
+{
+  public static void main(String args[])
+  {
+    new InterfaceDispatch();
+  }
+  
+  public InterfaceDispatch()
+  {
+    /* _Jv_InstanceOf */
+    
+    /* Object instanceof CLASS */
+    Object obj = new CA();
+    
+    if (obj instanceof CA)
+      {
+        System.out.println ("ok 1");
+      }
+    else
+      {
+        System.out.println ("FAIL 1");
+      }
+
+    obj = new CD();
+    
+    if (!(obj instanceof CA))
+      {
+        System.out.println ("ok 2a");
+      }
+    else
+      {
+        System.out.println ("FAIL 2a");
+      }
+
+    if (obj instanceof CB)
+      {
+        System.out.println ("ok 2b");
+      }
+    else
+      {
+        System.out.println ("FAIL 2b");
+      }
+
+    
+    /* Object instanceof INTERFACE */
+    obj = new CB();
+    
+    if (!(obj instanceof IC))
+      {
+        System.out.println("ok 3");
+      }
+    else
+      {
+        System.out.println ("FAIL 3");
+      }
+    
+    if (obj instanceof IB)
+      {
+        System.out.println("ok 4");
+      }
+    else
+      {
+        System.out.println ("FAIL 4");
+      }
+    
+    /* InterfaceRef instanceof INTERFACE */
+    
+    IA ia = new CB();
+    
+    if (ia instanceof IB)
+      {
+        System.out.println("ok 5");
+      }
+    else
+      {
+        System.out.println ("FAIL 5");
+      }
+    
+    
+    if (!(ia instanceof IC))
+      {
+        System.out.println("ok 6");
+      }
+    else
+      {
+        System.out.println ("FAIL 6");
+      }
+      
+    /* InterfaceRef instanceof CLASS */
+    
+    if (ia instanceof CB)
+      {
+        System.out.println("ok 7");
+      }
+    else
+      {
+        System.out.println ("FAIL 7");
+      }
+      
+    
+    if (!(ia instanceof CD))
+      {
+        System.out.println("ok 8");
+      }
+    else
+      {
+        System.out.println ("FAIL 8");
+      }    
+    
+    
+    /* _Jv_CheckCast */
+    Object obj_ca = new CA();
+    Object obj_cc = new CC();    
+    
+    IA ia2;
+    
+    try
+      {
+        ia2 = (IA) obj_cc;
+        System.out.println("ok 9");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("FAIL 9");
+      }
+    
+    CD cd;
+    
+    try
+      {
+        cd = (CD) obj_ca;
+        System.out.println("FAIL 10");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("ok 10");
+      }
+    
+    IA ia3;
+    
+    try
+      {
+        ia3 = (IB) obj_ca;
+        System.out.println("FAIL 11");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("ok 11");
+      }
+      
+    /* _Jv_LookupInterfaceMethod */
+    Object obj_cb = new CB();
+    
+    IB ib = (IB) obj_cb;
+    ib.b();
+    if (ib.a().equalsIgnoreCase("CB a()"))
+      System.out.println("ok 12");
+    else
+      System.out.println("FAIL 12");
+      
+    IC ic = new CD();
+    if (ic.a().equalsIgnoreCase("CD a()"))
+      System.out.println("ok 13");
+    else
+      System.out.println("FAIL 13");
+          
+    if (ic.d() == 6)
+      System.out.println("ok 14");
+    else
+      System.out.println("FAIL 14");
+      
+    Object ce = new CE();
+    
+    ib = (IB) ce;
+    ID id = (ID) ce;
+    
+    if (ib.b().equals("CE b()") && id.a().equals("CE a()"))
+      System.out.println("ok 15");
+    else
+      System.out.println("FAIL 15");
+    
+    String t = ((ID)ce).z();
+    
+    if (t.equalsIgnoreCase("CE z()"))
+      System.out.println("ok 16");
+    else
+      System.out.println("FAIL 16");
+      
+    /* Array types */
+    
+    Object[] obj_a = new CC[10];
+    try
+      {
+        CB[] ca_a = (CB[]) obj_a;
+        System.out.println("ok 17");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("FAIL 17");
+      }
+    
+    if (obj_a instanceof IB[])
+      {
+        System.out.println("ok 18");      
+      }
+    else
+      {
+        System.out.println("FAIL 18");      
+      }
+    
+    IB[] ib_a = new CD[5];
+    try 
+      {
+        CD[] cd_a = (CD[]) ib_a;
+        System.out.println("ok 19");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("FAIL 19");
+      }
+      
+    CA[] ca_a;
+
+    try 
+      {
+        ca_a = (CA[]) ib_a;
+        System.out.println("FAIL 20");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("ok 20");
+      }
+
+    
+    /* Primitive types */
+    
+    short[] short_a = new short[100];
+    
+    try
+      {
+        obj = short_a;
+        System.out.println("ok 21");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("FAIL 21");      
+      }
+
+    try
+      {
+        short[] short_b = (short[]) obj;
+        System.out.println("ok 22");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("FAIL 22");      
+      }
+
+    int[] short_b;
+
+    try
+      {
+        short_b = (int[]) obj;
+        System.out.println("FAIL 23");
+      }
+    catch (ClassCastException x)
+      {
+        System.out.println("ok 23");      
+      }
+
+    Object obj1 = new int[25];
+    
+    if (obj1 instanceof short[])
+      {
+        System.out.println("FAIL 24");      
+      }
+    else
+      {
+        System.out.println("ok 24");
+      }
+    
+    if (obj1 instanceof int[])
+      {
+        System.out.println("ok 25");
+      }
+    else
+      {
+        System.out.println("FAIL 25");
+      }
+      
+    /* null assignment */
+    
+    CA obj_ca2 = null;
+    
+    if (obj_ca2 instanceof CA)
+      {
+        System.out.println("FAIL 26");        
+      }
+    else
+      {
+        System.out.println("ok 26");
+      }
+  }  
+}
diff --git a/libjava/testsuite/libjava.lang/InterfaceDispatch.out b/libjava/testsuite/libjava.lang/InterfaceDispatch.out
new file mode 100644 (file)
index 0000000..1582e3a
--- /dev/null
@@ -0,0 +1,27 @@
+ok 1
+ok 2a
+ok 2b
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 8
+ok 9
+ok 10
+ok 11
+ok 12
+ok 13
+ok 14
+ok 15
+ok 16
+ok 17
+ok 18
+ok 19
+ok 20
+ok 21
+ok 22
+ok 23
+ok 24
+ok 25
+ok 26