From a509cfd2052999117c0f9e05817e4a073907d7ce Mon Sep 17 00:00:00 2001 From: Edwin Steiner Date: Mon, 11 Feb 2008 20:52:08 +0100 Subject: [PATCH] * tests/regression/resolving/TestController.java: Better error messages and more convenience methods (needed for following adaption of tests). --- .../regression/resolving/TestController.java | 25 +++++++++++++++---- .../test_instance_subtype_violated.java | 14 +++++------ ...est_param_loading_constraint_violated.java | 9 +++---- ...m_loading_constraint_violated_derived.java | 14 +++++------ .../test_param_subtype_violated.java | 14 +++++------ .../resolving/test_return_subtype_ok.java | 11 ++++---- .../test_return_subtype_violated.java | 11 ++++---- ...st_retval_loading_constraint_violated.java | 9 +++---- .../resolving/test_simple_lazy_load.java | 8 +++--- 9 files changed, 63 insertions(+), 52 deletions(-) diff --git a/tests/regression/resolving/TestController.java b/tests/regression/resolving/TestController.java index 478482c46..8bd181a04 100644 --- a/tests/regression/resolving/TestController.java +++ b/tests/regression/resolving/TestController.java @@ -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); } } } diff --git a/tests/regression/resolving/test_instance_subtype_violated.java b/tests/regression/resolving/test_instance_subtype_violated.java index 875dd9da0..f58cc17fc 100644 --- a/tests/regression/resolving/test_instance_subtype_violated.java +++ b/tests/regression/resolving/test_instance_subtype_violated.java @@ -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, ""); ct.expect("loaded", ld2, ""); 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, ""); ct.expectLoadFromSystem(ld3, "java.lang.Object"); + ct.expect("defined", ld3, ""); + 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", ""); diff --git a/tests/regression/resolving/test_param_loading_constraint_violated.java b/tests/regression/resolving/test_param_loading_constraint_violated.java index e4c734be4..7d9c184d3 100644 --- a/tests/regression/resolving/test_param_loading_constraint_violated.java +++ b/tests/regression/resolving/test_param_loading_constraint_violated.java @@ -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, ""); ct.expect("loaded", ld2, ""); 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, ""); // 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"); diff --git a/tests/regression/resolving/test_param_loading_constraint_violated_derived.java b/tests/regression/resolving/test_param_loading_constraint_violated_derived.java index 8ed0ec896..c98066079 100644 --- a/tests/regression/resolving/test_param_loading_constraint_violated_derived.java +++ b/tests/regression/resolving/test_param_loading_constraint_violated_derived.java @@ -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, ""); ct.expect("loaded", ld2, ""); 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, ""); ct.expectLoadFromSystem(ld3, "java.lang.Object"); + ct.expect("defined", ld3, ""); + 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 diff --git a/tests/regression/resolving/test_param_subtype_violated.java b/tests/regression/resolving/test_param_subtype_violated.java index 254feda96..7118c76d0 100644 --- a/tests/regression/resolving/test_param_subtype_violated.java +++ b/tests/regression/resolving/test_param_subtype_violated.java @@ -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, ""); ct.expect("loaded", ld2, ""); 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, ""); ct.expectLoadFromSystem(ld3, "java.lang.Object"); + ct.expect("defined", ld3, ""); + 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 diff --git a/tests/regression/resolving/test_return_subtype_ok.java b/tests/regression/resolving/test_return_subtype_ok.java index cec4f66ec..ee4660897 100644 --- a/tests/regression/resolving/test_return_subtype_ok.java +++ b/tests/regression/resolving/test_return_subtype_ok.java @@ -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, ""); ct.expect("loaded", ld2, ""); 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, ""); ct.expectLoadFromSystem(ld1, "java.lang.Object"); + ct.expect("defined", ld1, ""); + ct.expectDelegationDefinition(ld2, ld1, "DerivedFoo"); ct.checkStringGetter(cls, "getDerivedFoo", "no exception"); ct.expectEnd(); diff --git a/tests/regression/resolving/test_return_subtype_violated.java b/tests/regression/resolving/test_return_subtype_violated.java index f2dfb9c13..7b0f9a228 100644 --- a/tests/regression/resolving/test_return_subtype_violated.java +++ b/tests/regression/resolving/test_return_subtype_violated.java @@ -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, ""); ct.expect("loaded", ld2, ""); 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, ""); ct.expectLoadFromSystem(ld1, "java.lang.Object"); + ct.expect("defined", ld1, ""); + ct.expectDelegationDefinition(ld2, ld1, "DerivedFoo"); ct.checkStringGetter(cls, "getDerivedFoo", "no exception"); ct.expectEnd(); diff --git a/tests/regression/resolving/test_retval_loading_constraint_violated.java b/tests/regression/resolving/test_retval_loading_constraint_violated.java index 8893a7f54..937109063 100644 --- a/tests/regression/resolving/test_retval_loading_constraint_violated.java +++ b/tests/regression/resolving/test_retval_loading_constraint_violated.java @@ -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, ""); ct.expect("loaded", ld1, ""); 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"); diff --git a/tests/regression/resolving/test_simple_lazy_load.java b/tests/regression/resolving/test_simple_lazy_load.java index 30ca61009..be1e7b3fa 100644 --- a/tests/regression/resolving/test_simple_lazy_load.java +++ b/tests/regression/resolving/test_simple_lazy_load.java @@ -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, ""); ct.expect("loaded", ld1, ""); - 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(); -- 2.25.1