* tests/regression/resolving/TestController.java: Better error messages and
authorEdwin Steiner <edwin.steiner@gmx.net>
Mon, 11 Feb 2008 19:52:08 +0000 (20:52 +0100)
committerEdwin Steiner <edwin.steiner@gmx.net>
Mon, 11 Feb 2008 19:52:08 +0000 (20:52 +0100)
more convenience methods (needed for following adaption of tests).

tests/regression/resolving/TestController.java
tests/regression/resolving/test_instance_subtype_violated.java
tests/regression/resolving/test_param_loading_constraint_violated.java
tests/regression/resolving/test_param_loading_constraint_violated_derived.java
tests/regression/resolving/test_param_subtype_violated.java
tests/regression/resolving/test_return_subtype_ok.java
tests/regression/resolving/test_return_subtype_violated.java
tests/regression/resolving/test_retval_loading_constraint_violated.java
tests/regression/resolving/test_simple_lazy_load.java

index 478482c46451d76d5166f6f786cacb7197cdb2b8..8bd181a0472dcdfffb439889e1aaf151ac66409a 100644 (file)
@@ -31,6 +31,10 @@ public class TestController {
                 && ((loader2_ == ld2) || ((loader2_ != null) && (ld2 != null) && loader2_.equals(ld2)))
                 && class_.equals(cls);
         }
+
+        public String toString() {
+            return tag_ + ": " + loader1_ + " " + loader2_ + " class=" + class_;
+        }
     }
 
     public void setReportClassIDs(boolean rep) {
@@ -63,18 +67,24 @@ public class TestController {
         expect("loaded", loader, "<" + classname + ">");
     }
 
-    public void expectDelegationAndDefinition(ClassLoader loader1, ClassLoader loader2, String classname) {
+    public void expectDelegation(ClassLoader loader1, ClassLoader loader2, String classname) {
         expect("requested", loader1, classname);
         expect("delegated", loader1, loader2, classname);
         expect("requested", loader2, classname);
+    }
+
+    public void expectDelegationDefinition(ClassLoader loader1, ClassLoader loader2, String classname) {
         expect("defined", loader2, "<" + classname + ">");
         expect("loaded", loader1, "<" + classname + ">");
     }
 
+    public void expectDelegationAndDefinition(ClassLoader loader1, ClassLoader loader2, String classname) {
+        expectDelegation(loader1, loader2, classname);
+        expectDelegationDefinition(loader1, loader2, classname);
+    }
+
     public void expectDelegationAndFound(ClassLoader loader1, ClassLoader loader2, String classname) {
-        expect("requested", loader1, classname);
-        expect("delegated", loader1, loader2, classname);
-        expect("requested", loader2, classname);
+        expectDelegation(loader1, loader2, classname);
         expect("found", loader2, "<" + classname + ">");
         expect("loaded", loader1, "<" + classname + ">");
     }
@@ -92,6 +102,11 @@ public class TestController {
         fail(message + ": " + tag + " " + ld1 + " " + ld2 + " class=" + cls);
     }
 
+    void fail(String message, String tag, String ld1, String ld2, String cls, Expectation exp) {
+        fail(message + ": " + tag + " " + ld1 + " " + ld2 + " class=" + cls
+             + " (expected " + exp.toString() + ")");
+    }
+
     void ok(String tag, String ld1, String ld2, String cls) {
         ok(tag + " " + ld1 + " " + ld2 + " class=" + cls);
     }
@@ -143,7 +158,7 @@ public class TestController {
                 ok(tag, ld1, ld2, cls);
             }
             else {
-                fail("unexpected", tag, ld1, ld2, cls);
+                fail("unmatched", tag, ld1, ld2, cls, exp);
             }
         }
     }
index 875dd9da090bdec2131a6ba1bb449312aebf7b01..f58cc17fc767f5fd67a4884d682a5b83a9a5dc9e 100644 (file)
@@ -25,29 +25,29 @@ public class test_instance_subtype_violated {
         ld3.addParentDelegation("java.lang.String");
 
 
-        // loading BarPassFoo
+        // loading and linking BarPassFoo
         ct.expect("requested", ld2, "BarPassFoo");
+        ct.expectLoadFromSystem(ld2, "java.lang.Object");
         ct.expect("defined", ld2, "<BarPassFoo>");
         ct.expect("loaded", ld2, "<BarPassFoo>");
 
         Class cls = ct.loadClass(ld2, "BarPassFoo");
 
-        // linking BarPassFoo
-        ct.expectLoadFromSystem(ld2, "java.lang.Object");
-
         // executing BarPassFoo.passDerivedFooInstance: new DerivedFoo
-        ct.expectDelegationAndDefinition(ld2, ld3, "DerivedFoo");
+        ct.expectDelegation(ld2, ld3, "DerivedFoo");
 
         // linking (ld3, DerivedFoo)
         ct.expect("requested", ld3, "Foo");
-        ct.expect("defined", ld3, "<Foo>");
         ct.expectLoadFromSystem(ld3, "java.lang.Object");
+        ct.expect("defined", ld3, "<Foo>");
+        ct.expectDelegationDefinition(ld2, ld3, "DerivedFoo");
 
         // resolving Foo.virtualId
         // the deferred subtype check ((ld2, DerivedFoo) subtypeof (ld2, Foo)) is done
-        ct.expectDelegationAndDefinition(ld2, ld1, "Foo");
+        ct.expectDelegation(ld2, ld1, "Foo");
         // ...linking (ld2, Foo) == (ld1, Foo)
         ct.expectLoadFromSystem(ld1, "java.lang.Object");
+        ct.expectDelegationDefinition(ld2, ld1, "Foo");
 
         // the subtype constraint ((ld2, DerivedFoo) subtypeof (ld2, Foo)) is violated
         ct.expect("exception", "java.lang.LinkageError", "<BarPassFoo>");
index e4c734be4accab7ad379b894a4d42c0822aab95a..7d9c184d3d0d0f8e5998301167b5d5e6ca98ac84 100644 (file)
@@ -18,24 +18,23 @@ public class test_param_loading_constraint_violated {
         ld2.addParentDelegation("java.lang.String");
 
 
-        // loading BarPassFoo
+        // loading & linking BarPassFoo
         ct.expect("requested", ld2, "BarPassFoo");
+        ct.expectLoadFromSystem(ld2, "java.lang.Object");
         ct.expect("defined", ld2, "<BarPassFoo>");
         ct.expect("loaded", ld2, "<BarPassFoo>");
 
         Class cls = ct.loadClass(ld2, "BarPassFoo");
 
-        // linking BarPassFoo
-        ct.expectLoadFromSystem(ld2, "java.lang.Object");
-
         // executing BarPassFoo.passit: new Foo
         ct.expect("requested", ld2, "Foo");
         ct.expect("defined", ld2, "<Foo>");
 
         // executing BarPassFoo.passit: new BarUseFoo
-        ct.expectDelegationAndDefinition(ld2, ld1, "BarUseFoo");
+        ct.expectDelegation(ld2, ld1, "BarUseFoo");
         // ...linking BarUseFoo
         ct.expectLoadFromSystem(ld1, "java.lang.Object");
+        ct.expectDelegationDefinition(ld2, ld1, "BarUseFoo");
 
         // resolving Foo.virtualId() from BarUseFoo
         ct.expect("requested", ld1, "Foo");
index 8ed0ec8967e778ede60d6f9ebbaaa16f940ce7a9..c98066079d58881bb736aadf39c55f204442e264 100644 (file)
@@ -25,29 +25,29 @@ public class test_param_loading_constraint_violated_derived {
         ld3.addParentDelegation("java.lang.String");
 
 
-        // loading BarPassFoo
+        // loading & linking BarPassFoo
         ct.expect("requested", ld2, "BarPassFoo");
+        ct.expectLoadFromSystem(ld2, "java.lang.Object");
         ct.expect("defined", ld2, "<BarPassFoo>");
         ct.expect("loaded", ld2, "<BarPassFoo>");
 
         Class cls = ct.loadClass(ld2, "BarPassFoo");
 
-        // linking BarPassFoo
-        ct.expectLoadFromSystem(ld2, "java.lang.Object");
-
         // executing BarPassFoo.passDerivedFoo: new DerivedFoo
-        ct.expectDelegationAndDefinition(ld2, ld3, "DerivedFoo");
+        ct.expectDelegation(ld2, ld3, "DerivedFoo");
 
         // linking (ld3, DerivedFoo)
         ct.expect("requested", ld3, "Foo");
-        ct.expect("defined", ld3, "<Foo>");
         ct.expectLoadFromSystem(ld3, "java.lang.Object");
+        ct.expect("defined", ld3, "<Foo>");
+        ct.expectDelegationDefinition(ld2, ld3, "DerivedFoo");
 
         // executing BarPassFoo.passit: new BarUseFoo
-        ct.expectDelegationAndDefinition(ld2, ld1, "BarUseFoo");
+        ct.expectDelegation(ld2, ld1, "BarUseFoo");
 
         // linking BarUseFoo
         ct.expectLoadFromSystem(ld1, "java.lang.Object");
+        ct.expectDelegationDefinition(ld2, ld1, "BarUseFoo");
 
         // resolving BarUseFoo.useFoo
         // the deferred subtype check ((ld2, DerivedFoo) subtypeof (ld2, Foo)) is done
index 254feda96d5b9118bda6040df03d74cd403a5659..7118c76d0ffe087bbc50599247fca15e7409e40f 100644 (file)
@@ -25,27 +25,27 @@ public class test_param_subtype_violated {
         ld3.addParentDelegation("java.lang.String");
 
 
-        // loading BarPassFoo
+        // loading & linking BarPassFoo
         ct.expect("requested", ld2, "BarPassFoo");
+        ct.expectLoadFromSystem(ld2, "java.lang.Object");
         ct.expect("defined", ld2, "<BarPassFoo>");
         ct.expect("loaded", ld2, "<BarPassFoo>");
 
         Class cls = ct.loadClass(ld2, "BarPassFoo");
 
-        // linking BarPassFoo
-        ct.expectLoadFromSystem(ld2, "java.lang.Object");
-
         // executing BarPassFoo.passDerivedFoo: new DerivedFoo
-        ct.expectDelegationAndDefinition(ld2, ld3, "DerivedFoo");
+        ct.expectDelegation(ld2, ld3, "DerivedFoo");
         // ...linking (ld3, DerivedFoo)
         ct.expect("requested", ld3, "Foo");
-        ct.expect("defined", ld3, "<Foo>");
         ct.expectLoadFromSystem(ld3, "java.lang.Object");
+        ct.expect("defined", ld3, "<Foo>");
+        ct.expectDelegationDefinition(ld2, ld3, "DerivedFoo");
 
         // executing BarPassFoo.passDerivedFoo: new BarUseFoo
-        ct.expectDelegationAndDefinition(ld2, ld1, "BarUseFoo");
+        ct.expectDelegation(ld2, ld1, "BarUseFoo");
         // ...linking BarUseFoo
         ct.expectLoadFromSystem(ld1, "java.lang.Object");
+        ct.expectDelegationDefinition(ld2, ld1, "BarUseFoo");
 
         // resolving BarUseFoo.useFoo
         // the deferred subtype check ((ld2, DerivedFoo) subtypeof (ld2, Foo)) is done
index cec4f66ec8f1de7c8ae0d114c1d4c3eb7ab60456..ee4660897789a59733f2345c55583a20c321c62a 100644 (file)
@@ -17,22 +17,21 @@ public class test_return_subtype_ok {
         ld2.addParentDelegation("java.lang.Object");
         ld2.addParentDelegation("java.lang.String");
 
-        // loading BarPassFoo
+        // loading & linking BarPassFoo
         ct.expect("requested", ld2, "BarPassFoo");
+        ct.expectLoadFromSystem(ld2, "java.lang.Object");
         ct.expect("defined", ld2, "<BarPassFoo>");
         ct.expect("loaded", ld2, "<BarPassFoo>");
 
         Class cls = ct.loadClass(ld2, "BarPassFoo");
 
-        // linking BarPassFoo
-        ct.expectLoadFromSystem(ld2, "java.lang.Object");
-
         // executing createDerivedFoo
-        ct.expectDelegationAndDefinition(ld2, ld1, "DerivedFoo");
+        ct.expectDelegation(ld2, ld1, "DerivedFoo");
         // ...linking (ld2, DerivedFoo)
         ct.expect("requested", ld1, "Foo");
-        ct.expect("defined", ld1, "<Foo>");
         ct.expectLoadFromSystem(ld1, "java.lang.Object");
+        ct.expect("defined", ld1, "<Foo>");
+        ct.expectDelegationDefinition(ld2, ld1, "DerivedFoo");
 
         ct.checkStringGetter(cls, "getDerivedFoo", "no exception");
         ct.expectEnd();
index f2dfb9c13fa08b8bb5c478219a0d4411f6a1150d..7b0f9a228333ce8cfa882a9a94bda8f47ef5a9d2 100644 (file)
@@ -17,22 +17,21 @@ public class test_return_subtype_violated {
         ld2.addParentDelegation("java.lang.Object");
         ld2.addParentDelegation("java.lang.String");
 
-        // loading BarPassFoo
+        // loading & linking BarPassFoo
         ct.expect("requested", ld2, "BarPassFoo");
+        ct.expectLoadFromSystem(ld2, "java.lang.Object");
         ct.expect("defined", ld2, "<BarPassFoo>");
         ct.expect("loaded", ld2, "<BarPassFoo>");
 
         Class cls = ct.loadClass(ld2, "BarPassFoo");
 
-        // linking BarPassFoo
-        ct.expectLoadFromSystem(ld2, "java.lang.Object");
-
         // executing createDerivedFoo
-        ct.expectDelegationAndDefinition(ld2, ld1, "DerivedFoo");
+        ct.expectDelegation(ld2, ld1, "DerivedFoo");
         // ...linking (ld2, DerivedFoo)
         ct.expect("requested", ld1, "Foo");
-        ct.expect("defined", ld1, "<Foo>");
         ct.expectLoadFromSystem(ld1, "java.lang.Object");
+        ct.expect("defined", ld1, "<Foo>");
+        ct.expectDelegationDefinition(ld2, ld1, "DerivedFoo");
 
         ct.checkStringGetter(cls, "getDerivedFoo", "no exception");
         ct.expectEnd();
index 8893a7f5484a15a5e4d468157d814f1f189a0433..9371090633c09e45f86b8de4a0648c1763da2670 100644 (file)
@@ -18,20 +18,19 @@ public class test_retval_loading_constraint_violated {
         ld2.addParentDelegation("java.lang.String");
 
 
-        // loading BarUseFoo
+        // loading & linking BarUseFoo
         ct.expect("requested", ld1, "BarUseFoo");
+        ct.expectLoadFromSystem(ld1, "java.lang.Object");
         ct.expect("defined", ld1, "<BarUseFoo>");
         ct.expect("loaded", ld1, "<BarUseFoo>");
 
         Class cls = ct.loadClass(ld1, "BarUseFoo");
 
-        // linking BarUseFoo
-        ct.expectLoadFromSystem(ld1, "java.lang.Object");
-
         // executing BarUseFoo.useReturnedFoo: new BarPassFoo
-        ct.expectDelegationAndDefinition(ld1, ld2, "BarPassFoo");
+        ct.expectDelegation(ld1, ld2, "BarPassFoo");
         // ...linking BarPassFoo
         ct.expectLoadFromSystem(ld2, "java.lang.Object");
+        ct.expectDelegationDefinition(ld1, ld2, "BarPassFoo");
 
         // resolving BarPassFoo.createFoo
         ct.expect("requested", ld2, "Foo");
index 30ca610095c69a1f85da41d8aa54f82819584c73..be1e7b3fa83e618a95dca0c6d7523ef4adec4de3 100644 (file)
@@ -6,14 +6,14 @@ public class test_simple_lazy_load {
         TestLoader ld1 = new TestLoader(ClassLoader.getSystemClassLoader(), "ld1", ct);
 
         ld1.addClassfile("BarUseFoo", "classes1/BarUseFoo.class");
+        ld1.addParentDelegation("java.lang.Object");
+
         ct.expect("requested", ld1, "BarUseFoo");
+        ct.expectLoadFromSystem(ld1, "java.lang.Object");
         ct.expect("defined", ld1, "<BarUseFoo>");
         ct.expect("loaded", ld1, "<BarUseFoo>");
-        Class cls = ct.loadClass(ld1, "BarUseFoo");
-        ct.expectEnd();
 
-        ld1.addParentDelegation("java.lang.Object");
-        ct.expectLoadFromSystem(ld1, "java.lang.Object");
+        Class cls = ct.loadClass(ld1, "BarUseFoo");
         ct.checkClassId(cls, "classes1/BarUseFoo");
         ct.expectEnd();