@@ -0,0 +1,1622 @@
+package chameleon.test;%0A%0Aimport org.junit.Before;%0Aimport org.junit.Test;%0A%0Aimport chameleon.core.Config;%0Aimport chameleon.core.namespacepart.NamespacePart;%0Aimport chameleon.core.reference.CrossReference;%0Aimport chameleon.test.provider.BasicDescendantProvider;%0Aimport chameleon.test.provider.BasicNamespaceProvider;%0Aimport chameleon.test.provider.ModelProvider;%0A%0Apublic abstract class CompositeTest %7B%0A%0A%09@Before%0A%09public void setCaching() %7B%0A%09  Config.setCaching(true);%0A%09%7D%0A%0A%09/**%0A%09 * Test clone and children for all elements in the namespaces provided%0A%09 * by the namespace provider.%0A%09 */%0A%09@Test%0A%09public void testCloneAndChildren() throws Exception %7B%0A%09%09new CloneAndChildTest(modelProvider(), namespaceProvider()).testClone();%0A%09%7D%0A%0A%09/**%0A%09 * Test getElement and getDeclarator for all cross-reference in all namespaces%0A%09 * provided by the namespace provider.%0A%09 */%0A%09@Test%0A%09public void testCrossReferences() throws Exception %7B%0A%09%09new CrossReferenceTest(modelProvider(), new BasicDescendantProvider%3CCrossReference%3E(namespaceProvider(), CrossReference.class)).testCrossReferences();%0A%09%7D%0A%0A%09/**%0A%09 * Test the verification by invoking verify() for all namespace parts, and checking if the result is valid.%0A%09 */%0A%09@Test%0A%09public void testVerification() throws Exception %7B%0A%09%09new VerificationTest(modelProvider(), new BasicDescendantProvider%3CNamespacePart%3E(namespaceProvider(), NamespacePart.class)).testVerification();%0A%09%7D%0A%0A%09/**%0A%09 * A provider for the model to be tested.%0A%09 */%0A%09public abstract ModelProvider modelProvider();%0A%0A%09/**%0A%09 * A provider for the namespaces to be tested.%0A%09 */%0A%09public abstract BasicNamespaceProvider namespaceProvider();%0A%0A%7D%0A

extracted superclass