diff options
Diffstat (limited to 'Examples/test-suite/java/multiple_inheritance_interfaces_runme.java')
-rw-r--r-- | Examples/test-suite/java/multiple_inheritance_interfaces_runme.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Examples/test-suite/java/multiple_inheritance_interfaces_runme.java b/Examples/test-suite/java/multiple_inheritance_interfaces_runme.java new file mode 100644 index 000000000..3f2b00000 --- /dev/null +++ b/Examples/test-suite/java/multiple_inheritance_interfaces_runme.java @@ -0,0 +1,78 @@ +import multiple_inheritance_interfaces.*; +import java.util.Arrays; + +public class multiple_inheritance_interfaces_runme { + + static { + try { + System.loadLibrary("multiple_inheritance_interfaces"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); + System.exit(1); + } + } + + private static void checkBaseAndInterfaces(Class cls, boolean interfaceExpected, String base, String[] interfaces) { + String[] expectedInterfaces = new String[interfaces.length]; + for (int i=0; i<interfaces.length; ++i) + expectedInterfaces[i] = "interface multiple_inheritance_interfaces." + interfaces[i]; + Class[] actualInterfaces = cls.getInterfaces(); + String expectedInterfacesString = Arrays.toString(expectedInterfaces); + String actualInterfacesString = Arrays.toString(actualInterfaces); + if (!expectedInterfacesString.equals(actualInterfacesString)) + throw new RuntimeException("Expected interfaces for " + cls.getName() + ": \n" + expectedInterfacesString + "\n" + "Actual interfaces: \n" + actualInterfacesString); + + String expectedBaseString = null; + if (interfaceExpected) { + // expecting an interface + if (!cls.isInterface()) + throw new RuntimeException(cls.getName() + " should be an interface but is not"); + expectedBaseString = base.isEmpty() ? "" : "multiple_inheritance_interfaces." + base; + } else { + // expecting a class + if (cls.isInterface()) + throw new RuntimeException(cls.getName() + " is an interface but it should not be"); + expectedBaseString = base.isEmpty() ? "java.lang.Object" : "multiple_inheritance_interfaces." + base; + } + + String actualBaseString = cls.getSuperclass() == null ? "" : cls.getSuperclass().getName(); + if (!expectedBaseString.equals(actualBaseString)) + throw new RuntimeException("Expected base for " + cls.getName() + ": [" + expectedBaseString + "]" + " Actual base: [" + actualBaseString + "]"); + } + + public static void main(String argv[]) { + checkBaseAndInterfaces(IA.class, true, "", new String[] {}); + checkBaseAndInterfaces(IB.class, true, "", new String[] {}); + checkBaseAndInterfaces(IC.class, true, "", new String[] {"IA", "IB"}); + checkBaseAndInterfaces(A.class, false, "", new String[] {"IA"}); + checkBaseAndInterfaces(B.class, false, "", new String[] {"IB"}); + checkBaseAndInterfaces(C.class, false, "", new String[] {"IA", "IB", "IC"}); + checkBaseAndInterfaces(D.class, false, "", new String[] {"IA", "IB", "IC"}); + checkBaseAndInterfaces(E.class, false, "D", new String[] {}); + + checkBaseAndInterfaces(IJ.class, true, "", new String[] {}); + checkBaseAndInterfaces(IK.class, true, "", new String[] {"IJ"}); + checkBaseAndInterfaces(IL.class, true, "", new String[] {"IK"}); + checkBaseAndInterfaces(J.class, false, "", new String[] {"IJ"}); + checkBaseAndInterfaces(K.class, false, "", new String[] {"IJ", "IK"}); + checkBaseAndInterfaces(L.class, false, "", new String[] {"IJ", "IK", "IL"}); + checkBaseAndInterfaces(M.class, false, "", new String[] {"IJ", "IK", "IL"}); + + checkBaseAndInterfaces(P.class, false, "", new String[] {}); + checkBaseAndInterfaces(IQ.class, true, "", new String[] {}); + checkBaseAndInterfaces(Q.class, false, "", new String[] {"IQ"}); + checkBaseAndInterfaces(R.class, false, "P", new String[] {"IQ"}); + checkBaseAndInterfaces(S.class, false, "P", new String[] {"IQ"}); + checkBaseAndInterfaces(T.class, false, "", new String[] {"IQ"}); + checkBaseAndInterfaces(U.class, false, "R", new String[] {}); + checkBaseAndInterfaces(V.class, false, "S", new String[] {}); + checkBaseAndInterfaces(W.class, false, "T", new String[] {}); + + // overloaded methods check + D d = new D(); + d.ia(); + d.ia(10); + d.ia("bye"); + d.ia("bye", false); + } +} |