|  | /******************************************************************************* | 
|  | * Copyright (c) 2006, 2007 IBM Corporation and others. | 
|  | * All rights reserved. This program and the accompanying materials | 
|  | * are made available under the terms of the Eclipse Public License v1.0 | 
|  | * which accompanies this distribution, and is available at | 
|  | * http://www.eclipse.org/legal/epl-v10.html | 
|  | * | 
|  | * Contributors: | 
|  | *     IBM Corporation - initial API and implementation | 
|  | *******************************************************************************/ | 
|  | package org.eclipse.wst.jsdt.core.tests.compiler.regression; | 
|  |  | 
|  | import junit.framework.Test; | 
|  |  | 
|  | public class SuperTypeTest extends AbstractRegressionTest { | 
|  |  | 
|  | public SuperTypeTest(String name) { | 
|  | super(name); | 
|  | } | 
|  | // Static initializer to specify tests subset using TESTS_* static variables | 
|  | // All specified tests which does not belong to the class are skipped... | 
|  | static { | 
|  | //		TESTS_NAMES = new String[] { "test000" }; | 
|  | //		TESTS_NUMBERS = new int[] { 42, 43, 44 }; | 
|  | //		TESTS_RANGE = new int[] { 11, -1 }; | 
|  | } | 
|  |  | 
|  | public static Test suite() { | 
|  | return buildAllCompliancesTestSuite(testClass()); | 
|  | } | 
|  |  | 
|  | public static Class testClass() { | 
|  | return SuperTypeTest.class; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * http://bugs.eclipse.org/bugs/show_bug.cgi?id=136106 | 
|  | */ | 
|  | public void test001() { | 
|  | this.runConformTest( | 
|  | new String[] { | 
|  | /* org.eclipse.curiosity.A */ | 
|  | "org/eclipse/curiosity/A.java", | 
|  | "package org.eclipse.curiosity;\n" + | 
|  | "public abstract class A implements InterfaceA {\n" + | 
|  | "	private void e() {\n" + | 
|  | "	}\n" + | 
|  | "	public void f() {\n" + | 
|  | "		this.e();\n" + | 
|  | "	}\n" + | 
|  | "}", | 
|  | /* org.eclipse.curiosity.InterfaceA */ | 
|  | "org/eclipse/curiosity/InterfaceA.java", | 
|  | "package org.eclipse.curiosity;\n" + | 
|  | "public interface InterfaceA extends InterfaceBase {}\n", | 
|  | "org/eclipse/curiosity/InterfaceBase.java", | 
|  | /* org.eclipse.curiosity.InterfaceBase */ | 
|  | "package org.eclipse.curiosity;\n" + | 
|  | "public interface InterfaceBase {\n" + | 
|  | "    public void a();\n" + | 
|  | "    public void b();\n" + | 
|  | "    public void c();\n" + | 
|  | "    public void d();\n" + | 
|  | "}" | 
|  | } | 
|  | ); | 
|  | } | 
|  | // was Compliance_1_x#test001 | 
|  | public void test002() { | 
|  | String[] sources = new String[] { | 
|  | "p1/Test.java", | 
|  | "package p1; \n"+ | 
|  | "public class Test { \n"+ | 
|  | "	public static void main(String[] arguments) { \n"+ | 
|  | "		new Test().foo(); \n"+ | 
|  | "	} \n"+ | 
|  | "	class M { \n"+ | 
|  | "	} \n"+ | 
|  | "	void foo(){ \n"+ | 
|  | "		class Y extends Secondary { \n"+ | 
|  | "			M m; \n"+ | 
|  | "		}; \n"+ | 
|  | "		System.out.println(\"SUCCESS\");	\n" + | 
|  | "	} \n"+ | 
|  | "} \n" + | 
|  | "class Secondary { \n" + | 
|  | "	class M {} \n" + | 
|  | "} \n" | 
|  | }; | 
|  | if (this.complianceLevel.equals(COMPLIANCE_1_3)) { | 
|  | runNegativeTest( | 
|  | sources, | 
|  | "----------\n" + | 
|  | "1. ERROR in p1\\Test.java (at line 10)\n" + | 
|  | "	M m; \n" + | 
|  | "	^\n" + | 
|  | "The type M is defined in an inherited type and an enclosing scope\n" + | 
|  | "----------\n"); | 
|  | } else { | 
|  | runConformTest( | 
|  | sources, | 
|  | "SUCCESS"); | 
|  | } | 
|  | } | 
|  |  | 
|  | // was Compliance_1_x#test002 | 
|  | public void test003() { | 
|  | String[] sources = new String[] { | 
|  | "p1/Test.java", | 
|  | "package p1; \n"+ | 
|  | "public class Test { \n"+ | 
|  | "	public static void main(String[] arguments) { \n"+ | 
|  | "		new Test().foo(); \n"+ | 
|  | "	} \n"+ | 
|  | "	String bar() { \n"+ | 
|  | "		return \"FAILED\";	\n" + | 
|  | "	} \n"+ | 
|  | "	void foo(){ \n"+ | 
|  | "		class Y extends Secondary { \n"+ | 
|  | "			String z = bar();	\n" + | 
|  | "		}; \n"+ | 
|  | "		System.out.println(new Y().z);	\n" + | 
|  | "	} \n"+ | 
|  | "} \n" + | 
|  | "class Secondary { \n" + | 
|  | "	String bar(){ return \"SUCCESS\"; } \n" + | 
|  | "} \n" | 
|  | }; | 
|  | if (this.complianceLevel.equals(COMPLIANCE_1_3)) { | 
|  | runNegativeTest( | 
|  | sources, | 
|  | "----------\n" + | 
|  | "1. ERROR in p1\\Test.java (at line 11)\n" + | 
|  | "	String z = bar();	\n" + | 
|  | "	           ^^^\n" + | 
|  | "The method bar is defined in an inherited type and an enclosing scope\n" + | 
|  | "----------\n"); | 
|  | } else { | 
|  | runConformTest( | 
|  | sources, | 
|  | "SUCCESS"); | 
|  | } | 
|  | } | 
|  |  | 
|  | // was Compliance_1_x#test003 | 
|  | public void test004() { | 
|  | String[] sources = new String[] { | 
|  | "p1/Test.java", | 
|  | "package p1; \n"+ | 
|  | "public class Test { \n"+ | 
|  | "	public static void main(String[] arguments) { \n"+ | 
|  | "		new Test().foo(); \n"+ | 
|  | "	} \n"+ | 
|  | "	String bar = \"FAILED\";"+ | 
|  | "	void foo(){ \n"+ | 
|  | "		class Y extends Secondary { \n"+ | 
|  | "			String z = bar; \n"+ | 
|  | "		}; \n"+ | 
|  | "		System.out.println(new Y().z);	\n" + | 
|  | "	} \n"+ | 
|  | "} \n" + | 
|  | "class Secondary { \n" + | 
|  | "	String bar = \"SUCCESS\"; \n" + | 
|  | "} \n" | 
|  | }; | 
|  | if (this.complianceLevel.equals(COMPLIANCE_1_3)) { | 
|  | runNegativeTest( | 
|  | sources, | 
|  | "----------\n" + | 
|  | "1. ERROR in p1\\Test.java (at line 8)\n" + | 
|  | "	String z = bar; \n" + | 
|  | "	           ^^^\n" + | 
|  | "The field bar is defined in an inherited type and an enclosing scope \n" + | 
|  | "----------\n"); | 
|  | } else { | 
|  | runConformTest( | 
|  | sources, | 
|  | "SUCCESS"); | 
|  | } | 
|  | } | 
|  |  | 
|  | // was Compliance_1_x#test004 | 
|  | public void test005() { | 
|  | this.runConformTest( | 
|  | new String[] { | 
|  | "p1/Test.java", | 
|  | "package p1; \n"+ | 
|  | "public class Test { \n"+ | 
|  | "	public static void main(String[] arguments) { \n"+ | 
|  | "		new Test().foo(); \n"+ | 
|  | "	} \n"+ | 
|  | "	String bar() { \n"+ | 
|  | "		return \"SUCCESS\";	\n" + | 
|  | "	} \n"+ | 
|  | "	void foo(){ \n"+ | 
|  | "		class Y extends Secondary { \n"+ | 
|  | "			String z = bar();	\n" + | 
|  | "		}; \n"+ | 
|  | "		System.out.println(new Y().z);	\n" + | 
|  | "	} \n"+ | 
|  | "} \n" + | 
|  | "class Secondary { \n" + | 
|  | "	private String bar(){ return \"FAILED\"; } \n" + | 
|  | "} \n" | 
|  | }, | 
|  | "SUCCESS"); | 
|  | } | 
|  |  | 
|  | // was Compliance_1_x#test005 | 
|  | public void test006() { | 
|  | this.runConformTest( | 
|  | new String[] { | 
|  | "p1/Test.java", | 
|  | "package p1; \n"+ | 
|  | "public class Test { \n"+ | 
|  | "	public static void main(String[] arguments) { \n"+ | 
|  | "		new Test().foo(); \n"+ | 
|  | "	} \n"+ | 
|  | "	String bar = \"SUCCESS\";"+ | 
|  | "	void foo(){ \n"+ | 
|  | "		class Y extends Secondary { \n"+ | 
|  | "			String z = bar; \n"+ | 
|  | "		}; \n"+ | 
|  | "		System.out.println(new Y().z);	\n" + | 
|  | "	} \n"+ | 
|  | "} \n" + | 
|  | "class Secondary { \n" + | 
|  | "	private String bar = \"FAILED\"; \n" + | 
|  | "} \n" | 
|  | }, | 
|  | "SUCCESS"); | 
|  | } | 
|  |  | 
|  | // was Compliance_1_x#test006 | 
|  | public void test007() { | 
|  | this.runNegativeTest( | 
|  | new String[] { | 
|  | "p1/Test.java", | 
|  | "package p1; \n"+ | 
|  | "public class Test { \n"+ | 
|  | "	public static void main(String[] arguments) { \n"+ | 
|  | "		new Test().foo(); \n"+ | 
|  | "	} \n"+ | 
|  | "	String bar() { \n"+ | 
|  | "		return \"FAILED\";	\n" + | 
|  | "	} \n"+ | 
|  | "	void foo(){ \n"+ | 
|  | "		class Y extends Secondary { \n"+ | 
|  | "			String z = bar();	\n" + | 
|  | "		}; \n"+ | 
|  | "		System.out.println(new Y().z);	\n" + | 
|  | "	} \n"+ | 
|  | "} \n" + | 
|  | "class Secondary { \n" + | 
|  | "	String bar(int i){ return \"SUCCESS\"; } \n" + | 
|  | "} \n" | 
|  | }, | 
|  | "----------\n" + | 
|  | "1. ERROR in p1\\Test.java (at line 11)\n" + | 
|  | "	String z = bar();	\n" + | 
|  | "	           ^^^\n" + | 
|  | "The method bar(int) in the type Secondary is not applicable for the arguments ()\n" + | 
|  | "----------\n" | 
|  | ); | 
|  | } | 
|  | } |