summaryrefslogtreecommitdiff
path: root/java/test/Ice
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2001-12-12 02:24:24 +0000
committerMark Spruiell <mes@zeroc.com>2001-12-12 02:24:24 +0000
commit83c9ea4b35ab8c80bee8cd23670669a1b7f4bc5c (patch)
tree72c9194c3c75ecf93c7018b49285c562c7421234 /java/test/Ice
parentminor fix (diff)
downloadice-83c9ea4b35ab8c80bee8cd23670669a1b7f4bc5c.tar.bz2
ice-83c9ea4b35ab8c80bee8cd23670669a1b7f4bc5c.tar.xz
ice-83c9ea4b35ab8c80bee8cd23670669a1b7f4bc5c.zip
initial check-in
Diffstat (limited to 'java/test/Ice')
-rw-r--r--java/test/Ice/exceptions/AllTests.java397
-rw-r--r--java/test/Ice/exceptions/Client.java53
-rw-r--r--java/test/Ice/exceptions/Test.ice53
-rw-r--r--java/test/Ice/facets/AllTests.java90
-rw-r--r--java/test/Ice/facets/Client.java53
-rw-r--r--java/test/Ice/facets/Test.ice50
-rw-r--r--java/test/Ice/inheritance/AllTests.java251
-rw-r--r--java/test/Ice/inheritance/Client.java53
-rw-r--r--java/test/Ice/inheritance/Test.ice82
9 files changed, 1082 insertions, 0 deletions
diff --git a/java/test/Ice/exceptions/AllTests.java b/java/test/Ice/exceptions/AllTests.java
new file mode 100644
index 00000000000..fc7059b6672
--- /dev/null
+++ b/java/test/Ice/exceptions/AllTests.java
@@ -0,0 +1,397 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+public class AllTests
+{
+ private static class MyExceptionFactory implements Ice.UserExceptionFactory
+ {
+ public void
+ createAndThrow(String type)
+ throws Ice.UserException
+ {
+ if (type.equals("::A"))
+ {
+ throw new A();
+ }
+ else if (type.equals("::B"))
+ {
+ throw new B();
+ }
+ else if (type.equals("::C"))
+ {
+ throw new C();
+ }
+ else if (type.equals("::D"))
+ {
+ throw new D();
+ }
+ assert(false); // Should never be reached
+ }
+
+ public void
+ destroy()
+ {
+ // Nothing to do
+ }
+ }
+
+ private static void
+ test(boolean b)
+ {
+ if (!b)
+ {
+ throw new RuntimeException();
+ }
+ }
+
+ public static ThrowerPrx
+ allTests(Ice.Communicator communicator, boolean collocated)
+ {
+ System.out.print("testing stringToProxy... ");
+ System.out.flush();
+ String ref;
+
+ Ice.Properties properties = communicator.getProperties();
+
+ String protocol = properties.getProperty("Ice.Protocol");
+ String secure = "";
+
+ if (protocol == null)
+ {
+ protocol = "tcp";
+ }
+
+ if (protocol.equals("ssl"))
+ {
+ secure = " -s ";
+ }
+
+ String endpts = protocol + " -p 12345 -t 2000";
+
+ ref = "thrower" + secure + ":" + endpts;
+
+ Ice.ObjectPrx base = communicator.stringToProxy(ref);
+ test(base != null);
+ System.out.println("ok");
+
+ System.out.print("testing checked cast... ");
+ System.out.flush();
+ ThrowerPrx thrower = ThrowerPrxHelper.checkedCast(base);
+ test(thrower != null);
+ test(thrower.equals(base));
+ System.out.println("ok");
+
+ System.out.print("catching exact types... ");
+ System.out.flush();
+
+ try
+ {
+ thrower.throwAasA(1);
+ test(false);
+ }
+ catch (A ex)
+ {
+ test(ex.a == 1);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwAorDasAorD(1);
+ test(false);
+ }
+ catch (A ex)
+ {
+ test(ex.a == 1);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwAorDasAorD(-1);
+ test(false);
+ }
+ catch (D ex)
+ {
+ test(ex.d == -1);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwBasB(1, 2);
+ test(false);
+ }
+ catch (B ex)
+ {
+ test(ex.a == 1);
+ test(ex.b == 2);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwCasC(1, 2, 3);
+ test(false);
+ }
+ catch (C ex)
+ {
+ test(ex.a == 1);
+ test(ex.b == 2);
+ test(ex.c == 3);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ System.out.println("ok");
+
+ System.out.print("catching base types... ");
+ System.out.flush();
+
+ try
+ {
+ thrower.throwBasB(1, 2);
+ test(false);
+ }
+ catch (A ex)
+ {
+ test(ex.a == 1);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwCasC(1, 2, 3);
+ test(false);
+ }
+ catch (B ex)
+ {
+ test(ex.a == 1);
+ test(ex.b == 2);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ System.out.println("ok");
+
+ if (!collocated) // If the server is collocated, exception factories
+ { // are not needed.
+ System.out.print("catching derived types w/o exception " +
+ "factories... ");
+ System.out.flush();
+
+ try
+ {
+ thrower.throwBasA(1, 2);
+ test(false);
+ }
+ catch (Ice.NoUserExceptionFactoryException ex)
+ {
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwCasA(1, 2, 3);
+ test(false);
+ }
+ catch (Ice.NoUserExceptionFactoryException ex)
+ {
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwCasB(1, 2, 3);
+ test(false);
+ }
+ catch (Ice.NoUserExceptionFactoryException ex)
+ {
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ System.out.println("ok");
+
+ System.out.print("catching derived types w/ exception " +
+ "factories... ");
+ System.out.flush();
+
+ Ice.UserExceptionFactory factory = new MyExceptionFactory();
+ communicator.addUserExceptionFactory(factory, "::A");
+ communicator.addUserExceptionFactory(factory, "::B");
+ communicator.addUserExceptionFactory(factory, "::C");
+ communicator.addUserExceptionFactory(factory, "::D");
+ }
+ else
+ {
+ System.out.print("catching derived types... ");
+ System.out.flush();
+ }
+
+ try
+ {
+ thrower.throwBasA(1, 2);
+ test(false);
+ }
+ catch (B ex)
+ {
+ test(ex.a == 1);
+ test(ex.b == 2);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwCasA(1, 2, 3);
+ test(false);
+ }
+ catch (C ex)
+ {
+ test(ex.a == 1);
+ test(ex.b == 2);
+ test(ex.c == 3);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwCasB(1, 2, 3);
+ test(false);
+ }
+ catch (C ex)
+ {
+ test(ex.a == 1);
+ test(ex.b == 2);
+ test(ex.c == 3);
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ System.out.println("ok");
+
+ System.out.print("catching unknown user exception... ");
+ System.out.flush();
+
+ try
+ {
+ thrower.throwUndeclaredA(1);
+ test(false);
+ }
+ catch (Ice.UnknownUserException ex)
+ {
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwUndeclaredB(1, 2);
+ test(false);
+ }
+ catch (Ice.UnknownUserException ex)
+ {
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ try
+ {
+ thrower.throwUndeclaredC(1, 2, 3);
+ test(false);
+ }
+ catch (Ice.UnknownUserException ex)
+ {
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ System.out.println("ok");
+
+ System.out.print("catching unknown local exception... ");
+ System.out.flush();
+
+ try
+ {
+ thrower.throwLocalException();
+ test(false);
+ }
+ catch (Ice.UnknownLocalException ex)
+ {
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ System.out.println("ok");
+
+ System.out.print("catching unknown non-Ice exception... ");
+ System.out.flush();
+
+ try
+ {
+ thrower.throwNonIceException();
+ test(false);
+ }
+ catch (Ice.UnknownException ex)
+ {
+ }
+ catch (Exception ex)
+ {
+ test(false);
+ }
+
+ System.out.println("ok");
+
+ return thrower;
+ }
+}
diff --git a/java/test/Ice/exceptions/Client.java b/java/test/Ice/exceptions/Client.java
new file mode 100644
index 00000000000..b60db562a10
--- /dev/null
+++ b/java/test/Ice/exceptions/Client.java
@@ -0,0 +1,53 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+public class Client
+{
+ private static int
+ run(String[] args, Ice.Communicator communicator)
+ {
+ ThrowerPrx thrower = AllTests.allTests(communicator, false);
+ thrower.shutdown();
+ return 0;
+ }
+
+ public static void
+ main(String[] args)
+ {
+ int status = 0;
+ Ice.Communicator communicator = null;
+
+ try
+ {
+ communicator = Ice.Util.initialize(args);
+ status = run(args, communicator);
+ }
+ catch (Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ status = 1;
+ }
+
+ if (communicator != null)
+ {
+ try
+ {
+ communicator.destroy();
+ }
+ catch (Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ status = 1;
+ }
+ }
+
+ System.exit(status);
+ }
+}
diff --git a/java/test/Ice/exceptions/Test.ice b/java/test/Ice/exceptions/Test.ice
new file mode 100644
index 00000000000..dc42b49e0f9
--- /dev/null
+++ b/java/test/Ice/exceptions/Test.ice
@@ -0,0 +1,53 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#ifndef TEST_ICE
+#define TEST_ICE
+
+interface Thrower;
+
+exception A
+{
+ int a;
+};
+
+exception B extends A
+{
+ int b;
+};
+
+exception C extends B
+{
+ int c;
+};
+
+exception D
+{
+ int d;
+};
+
+interface Thrower
+{
+ void shutdown();
+ void throwAasA(int a) throws A;
+ void throwAorDasAorD(int a) throws A, D;
+ void throwBasA(int a, int b) throws A;
+ void throwCasA(int a, int b, int c) throws A;
+ void throwBasB(int a, int b) throws B;
+ void throwCasB(int a, int b, int c) throws B;
+ void throwCasC(int a, int b, int c) throws C;
+ void throwUndeclaredA(int a) throws B, D;
+ void throwUndeclaredB(int a, int b);
+ void throwUndeclaredC(int a, int b, int c) throws D;
+ void throwLocalException();
+ void throwNonIceException();
+};
+
+#endif
diff --git a/java/test/Ice/facets/AllTests.java b/java/test/Ice/facets/AllTests.java
new file mode 100644
index 00000000000..0cc6d0876e5
--- /dev/null
+++ b/java/test/Ice/facets/AllTests.java
@@ -0,0 +1,90 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+public class AllTests
+{
+ private static void
+ test(boolean b)
+ {
+ if (!b)
+ {
+ throw new RuntimeException();
+ }
+ }
+
+ public static GPrx
+ allTests(Ice.Communicator communicator)
+ {
+ Ice.Properties properties = communicator.getProperties();
+
+ String protocol = properties.getProperty("Ice.Protocol");
+
+ if (protocol == null)
+ {
+ protocol = "tcp";
+ }
+
+ String secure = "";
+
+ if (protocol.equals("ssl"))
+ {
+ secure = " -s ";
+ }
+
+ System.out.print("testing stringToProxy... ");
+ System.out.flush();
+ String ref = "d" + secure + ":" + protocol + " -p 12345 -t 2000";
+ Ice.ObjectPrx db = communicator.stringToProxy(ref);
+ test(db != null);
+ System.out.println("ok");
+
+ System.out.print("testing checked cast... ");
+ System.out.flush();
+ DPrx d = DPrxHelper.checkedCast(db);
+ test(d != null);
+ test(d.equals(db));
+ System.out.println("ok");
+
+ System.out.print("testing non-facets A, B, C, and D... ");
+ System.out.flush();
+ test(d.callA().equals("A"));
+ test(d.callB().equals("B"));
+ test(d.callC().equals("C"));
+ test(d.callD().equals("D"));
+ System.out.println("ok");
+
+ System.out.print("testing facets A, B, C, and D... ");
+ System.out.flush();
+ DPrx df = DPrxHelper.checkedCast(d, "facetABCD");
+ test(df != null);
+ test(df.callA().equals("A"));
+ test(df.callB().equals("B"));
+ test(df.callC().equals("C"));
+ test(df.callD().equals("D"));
+ System.out.println("ok");
+
+ System.out.print("testing facets E and F... ");
+ System.out.flush();
+ FPrx ff = FPrxHelper.checkedCast(d, "facetEF");
+ test(ff != null);
+ test(ff.callE().equals("E"));
+ test(ff.callF().equals("F"));
+ System.out.println("ok");
+
+ System.out.print("testing facet G... ");
+ System.out.flush();
+ GPrx gf = GPrxHelper.checkedCast(d, "facetG");
+ test(gf != null);
+ test(gf.callG().equals("G"));
+ System.out.println("ok");
+
+ return gf;
+ }
+}
diff --git a/java/test/Ice/facets/Client.java b/java/test/Ice/facets/Client.java
new file mode 100644
index 00000000000..e66d55743f4
--- /dev/null
+++ b/java/test/Ice/facets/Client.java
@@ -0,0 +1,53 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+public class Client
+{
+ private static int
+ run(String[] args, Ice.Communicator communicator)
+ {
+ GPrx g = AllTests.allTests(communicator);
+ g.shutdown();
+ return 0;
+ }
+
+ public static void
+ main(String[] args)
+ {
+ int status = 0;
+ Ice.Communicator communicator = null;
+
+ try
+ {
+ communicator = Ice.Util.initialize(args);
+ status = run(args, communicator);
+ }
+ catch (Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ status = 1;
+ }
+
+ if (communicator != null)
+ {
+ try
+ {
+ communicator.destroy();
+ }
+ catch (Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ status = 1;
+ }
+ }
+
+ System.exit(status);
+ }
+}
diff --git a/java/test/Ice/facets/Test.ice b/java/test/Ice/facets/Test.ice
new file mode 100644
index 00000000000..03075f3713c
--- /dev/null
+++ b/java/test/Ice/facets/Test.ice
@@ -0,0 +1,50 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#ifndef TEST_ICE
+#define TEST_ICE
+
+interface A
+{
+ string callA();
+};
+
+interface B extends A
+{
+ string callB();
+};
+
+interface C extends A
+{
+ string callC();
+};
+
+interface D extends B, C
+{
+ string callD();
+};
+
+interface E
+{
+ string callE();
+};
+
+interface F extends E
+{
+ string callF();
+};
+
+interface G
+{
+ void shutdown();
+ string callG();
+};
+
+#endif
diff --git a/java/test/Ice/inheritance/AllTests.java b/java/test/Ice/inheritance/AllTests.java
new file mode 100644
index 00000000000..78124f2fe77
--- /dev/null
+++ b/java/test/Ice/inheritance/AllTests.java
@@ -0,0 +1,251 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+public class AllTests
+{
+ private static void
+ test(boolean b)
+ {
+ if (!b)
+ {
+ throw new RuntimeException();
+ }
+ }
+
+ public static InitialPrx
+ allTests(Ice.Communicator communicator)
+ {
+ Ice.Properties properties = communicator.getProperties();
+
+ String protocol = properties.getProperty("Ice.Protocol");
+ String secure = "";
+
+ if (protocol == null)
+ {
+ protocol = "tcp";
+ }
+
+ if (protocol.equals("ssl"))
+ {
+ secure = " -s ";
+ }
+
+ String ref = "initial" + secure + ":" + protocol + " -p 12345 -t 2000";
+
+ System.out.print("testing stringToProxy... ");
+ System.out.flush();
+ Ice.ObjectPrx base = communicator.stringToProxy(ref);
+ test(base != null);
+ System.out.println("ok");
+
+ System.out.print("testing checked cast... ");
+ System.out.flush();
+ InitialPrx initial = InitialPrxHelper.checkedCast(base);
+ test(initial != null);
+ test(initial.equals(base));
+ System.out.println("ok");
+
+ System.out.print("getting proxies for class hierarchy... ");
+ System.out.flush();
+ M_A.C_APrx ca = initial.c_a();
+ M_B.C_BPrx cb = initial.c_b();
+ M_A.C_CPrx cc = initial.c_c();
+ M_A.C_DPrx cd = initial.c_d();
+ test(ca != cb);
+ test(ca != cc);
+ test(ca != cd);
+ test(cb != cc);
+ test(cb != cd);
+ test(cc != cd);
+ System.out.println("ok");
+
+ System.out.print("getting proxies for interface hierarchy... ");
+ System.out.flush();
+ M_A.I_APrx ia = initial.i_a();
+ M_B.I_B1Prx ib1 = initial.i_b1();
+ M_B.I_B2Prx ib2 = initial.i_b2();
+ M_A.I_CPrx ic = initial.i_c();
+ test(ia != ib1);
+ test(ia != ib2);
+ test(ia != ic);
+ test(ib1 != ic);
+ test(ib2 != ic);
+ System.out.println("ok");
+
+ System.out.print("invoking proxy operations on class hierarchy... ");
+ System.out.flush();
+ M_A.C_APrx cao;
+ M_B.C_BPrx cbo;
+ M_A.C_CPrx cco;
+
+ cao = ca.ca(ca);
+ test(cao.equals(ca));
+ cao = ca.ca(cb);
+ test(cao.equals(cb));
+ cao = ca.ca(cc);
+ test(cao.equals(cc));
+ cao = cb.ca(ca);
+ test(cao.equals(ca));
+ cao = cb.ca(cb);
+ test(cao.equals(cb));
+ cao = cb.ca(cc);
+ test(cao.equals(cc));
+ cao = cc.ca(ca);
+ test(cao.equals(ca));
+ cao = cc.ca(cb);
+ test(cao.equals(cb));
+ cao = cc.ca(cc);
+ test(cao.equals(cc));
+
+ cao = cb.cb(cb);
+ test(cao.equals(cb));
+ cbo = cb.cb(cb);
+ test(cbo.equals(cb));
+ cao = cb.cb(cc);
+ test(cao.equals(cc));
+ cbo = cb.cb(cc);
+ test(cbo.equals(cc));
+ cao = cc.cb(cb);
+ test(cao.equals(cb));
+ cbo = cc.cb(cb);
+ test(cbo.equals(cb));
+ cao = cc.cb(cc);
+ test(cao.equals(cc));
+ cbo = cc.cb(cc);
+ test(cbo.equals(cc));
+
+ cao = cc.cc(cc);
+ test(cao.equals(cc));
+ cbo = cc.cc(cc);
+ test(cbo.equals(cc));
+ cco = cc.cc(cc);
+ test(cco.equals(cc));
+ System.out.println("ok");
+
+ System.out.print("ditto, but for interface hierarchy... ");
+ System.out.flush();
+ M_A.I_APrx iao;
+ M_B.I_B1Prx ib1o;
+ M_B.I_B2Prx ib2o;
+ M_A.I_CPrx ico;
+
+ iao = ia.ia(ia);
+ test(iao.equals(ia));
+ iao = ia.ia(ib1);
+ test(iao.equals(ib1));
+ iao = ia.ia(ib2);
+ test(iao.equals(ib2));
+ iao = ia.ia(ic);
+ test(iao.equals(ic));
+ iao = ib1.ia(ia);
+ test(iao.equals(ia));
+ iao = ib1.ia(ib1);
+ test(iao.equals(ib1));
+ iao = ib1.ia(ib2);
+ test(iao.equals(ib2));
+ iao = ib1.ia(ic);
+ test(iao.equals(ic));
+ iao = ib2.ia(ia);
+ test(iao.equals(ia));
+ iao = ib2.ia(ib1);
+ test(iao.equals(ib1));
+ iao = ib2.ia(ib2);
+ test(iao.equals(ib2));
+ iao = ib2.ia(ic);
+ test(iao.equals(ic));
+ iao = ic.ia(ia);
+ test(iao.equals(ia));
+ iao = ic.ia(ib1);
+ test(iao.equals(ib1));
+ iao = ic.ia(ib2);
+ test(iao.equals(ib2));
+ iao = ic.ia(ic);
+ test(iao.equals(ic));
+
+ iao = ib1.ib1(ib1);
+ test(iao.equals(ib1));
+ ib1o = ib1.ib1(ib1);
+ test(ib1o.equals(ib1));
+ iao = ib1.ib1(ic);
+ test(iao.equals(ic));
+ ib1o = ib1.ib1(ic);
+ test(ib1o.equals(ic));
+ iao = ic.ib1(ib1);
+ test(iao.equals(ib1));
+ ib1o = ic.ib1(ib1);
+ test(ib1o.equals(ib1));
+ iao = ic.ib1(ic);
+ test(iao.equals(ic));
+ ib1o = ic.ib1(ic);
+ test(ib1o.equals(ic));
+
+ iao = ib2.ib2(ib2);
+ test(iao.equals(ib2));
+ ib2o = ib2.ib2(ib2);
+ test(ib2o.equals(ib2));
+ iao = ib2.ib2(ic);
+ test(iao.equals(ic));
+ ib2o = ib2.ib2(ic);
+ test(ib2o.equals(ic));
+ iao = ic.ib2(ib2);
+ test(iao.equals(ib2));
+ ib2o = ic.ib2(ib2);
+ test(ib2o.equals(ib2));
+ iao = ic.ib2(ic);
+ test(iao.equals(ic));
+ ib2o = ic.ib2(ic);
+ test(ib2o.equals(ic));
+
+ iao = ic.ic(ic);
+ test(iao.equals(ic));
+ ib1o = ic.ic(ic);
+ test(ib1o.equals(ic));
+ ib2o = ic.ic(ic);
+ test(ib2o.equals(ic));
+ ico = ic.ic(ic);
+ test(ico.equals(ic));
+ System.out.println("ok");
+
+ System.out.print("ditto, but for class implementing interfaces... ");
+ System.out.flush();
+ M_A.C_DPrx cdo;
+
+ cao = cd.ca(cd);
+ test(cao.equals(cd));
+ cbo = cd.cb(cd);
+ test(cbo.equals(cd));
+ cco = cd.cc(cd);
+ test(cco.equals(cd));
+
+ iao = cd.ia(cd);
+ test(iao.equals(cd));
+ ib1o = cd.ib1(cd);
+ test(ib1o.equals(cd));
+ ib2o = cd.ib2(cd);
+ test(ib2o.equals(cd));
+
+ cao = cd.cd(cd);
+ test(cao.equals(cd));
+ cbo = cd.cd(cd);
+ test(cbo.equals(cd));
+ cco = cd.cd(cd);
+ test(cco.equals(cd));
+
+ iao = cd.cd(cd);
+ test(iao.equals(cd));
+ ib1o = cd.cd(cd);
+ test(ib1o.equals(cd));
+ ib2o = cd.cd(cd);
+ test(ib2o.equals(cd));
+ System.out.println("ok");
+
+ return initial;
+ }
+}
diff --git a/java/test/Ice/inheritance/Client.java b/java/test/Ice/inheritance/Client.java
new file mode 100644
index 00000000000..87ebf950790
--- /dev/null
+++ b/java/test/Ice/inheritance/Client.java
@@ -0,0 +1,53 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+public class Client
+{
+ private static int
+ run(String[] args, Ice.Communicator communicator)
+ {
+ InitialPrx initial = AllTests.allTests(communicator);
+ initial.shutdown();
+ return 0;
+ }
+
+ public static void
+ main(String[] args)
+ {
+ int status = 0;
+ Ice.Communicator communicator = null;
+
+ try
+ {
+ communicator = Ice.Util.initialize(args);
+ status = run(args, communicator);
+ }
+ catch (Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ status = 1;
+ }
+
+ if (communicator != null)
+ {
+ try
+ {
+ communicator.destroy();
+ }
+ catch (Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ status = 1;
+ }
+ }
+
+ System.exit(status);
+ }
+}
diff --git a/java/test/Ice/inheritance/Test.ice b/java/test/Ice/inheritance/Test.ice
new file mode 100644
index 00000000000..b05492b092e
--- /dev/null
+++ b/java/test/Ice/inheritance/Test.ice
@@ -0,0 +1,82 @@
+// **********************************************************************
+//
+// Copyright (c) 2001
+// MutableRealms, Inc.
+// Huntsville, AL, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+#ifndef TEST_ICE
+#define TEST_ICE
+
+module M_A
+{
+
+interface I_A
+{
+ I_A* ia(I_A* p);
+};
+
+class C_A
+{
+ C_A* ca(C_A* p);
+};
+
+};
+
+module M_B
+{
+
+interface I_B1 extends M_A::I_A
+{
+ I_B1* ib1(I_B1* p);
+};
+
+interface I_B2 extends M_A::I_A
+{
+ I_B2* ib2(I_B2* p);
+};
+
+class C_B extends M_A::C_A
+{
+ C_B* cb(C_B* p);
+};
+
+};
+
+module M_A
+{
+
+interface I_C extends M_B::I_B1, M_B::I_B2
+{
+ I_C* ic(I_C* p);
+};
+
+class C_C extends M_B::C_B
+{
+ C_C* cc(C_C* p);
+};
+
+class C_D extends C_C implements M_B::I_B1, M_B::I_B2
+{
+ C_D* cd(C_D* p);
+};
+
+};
+
+interface Initial
+{
+ void shutdown();
+ M_A::C_A* c_a();
+ M_B::C_B* c_b();
+ M_A::C_C* c_c();
+ M_A::C_D* c_d();
+ M_A::I_A* i_a();
+ M_B::I_B1* i_b1();
+ M_B::I_B2* i_b2();
+ M_A::I_C* i_c();
+};
+
+#endif