aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java')
-rw-r--r--tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java992
1 files changed, 992 insertions, 0 deletions
diff --git a/tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java b/tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java
new file mode 100644
index 000000000..d692464f5
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/purejava/PureJavaTests.java
@@ -0,0 +1,992 @@
+/* *******************************************************************
+ * Copyright (c) 2004 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Common Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * ******************************************************************/
+package org.aspectj.systemtest.purejava;
+
+import java.io.File;
+import junit.framework.Test;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class PureJavaTests extends org.aspectj.testing.XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(PureJavaTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/pureJava/pureJava.xml");
+ }
+
+
+ public void test001(){
+ runTest("unicodes and literals");
+ }
+
+ public void test002(){
+ runTest("For Statement");
+ }
+
+ public void test003(){
+ runTest("correct super call lookup for method().name()");
+ }
+
+ public void test004(){
+ runTest("combined logic expression (handling coericions vs. parens)");
+ }
+
+ public void test005(){
+ runTest("comment after class closes (with no new line at end)");
+ }
+
+ public void test006(){
+ runTest("multi-dimensional array initializers");
+ }
+
+ public void test007(){
+ runTest("probelm with the generated names of exceptions");
+ }
+
+ public void test008(){
+ runTest("checks if the class field can be used on all of the primitive types");
+ }
+
+ public void test009(){
+ runTest("Doesn't parse an array-returning method that throws an exception");
+ }
+
+ public void test010(){
+ runTest("check that nested constructions of local classes work");
+ }
+
+ public void test011(){
+ runTest("Make sure anonymous classes can have non-nullary constructors");
+ }
+
+ public void test012(){
+ runTest("Full names are dropped from inner interfaces");
+ }
+
+ public void test013(){
+ runTest("Making sure full names stay on static inner classes");
+ }
+
+ public void test014(){
+ runTest("Not binding constructor when using more than one compilation");
+ }
+
+ public void test015(){
+ runTest("return;;; is not really legal");
+ }
+
+ public void test016(){
+ runTest("ajc treating Throwable as checked, issuing error if not found");
+ }
+
+ public void test017(){
+ runTest("package protected classes becoming public");
+ }
+
+ public void test018(){
+ runTest("IOException on windows if nul used as identifier");
+ }
+
+ public void test019(){
+ runTest("NullPointerException (not compiler error) when extending non-static inner class");
+ }
+
+ public void test020(){
+ runTest("compiler flags final static variable as indefinite in member assignment.");
+ }
+
+ public void test021(){
+ runTest("confirm no IOException on windows if nul used as identifier");
+ }
+
+ public void test022(){
+ runTest("final constructor parameter causes incorrect compiler error");
+ }
+
+ public void test023(){
+ runTest("Error expected for field of type void");
+ }
+
+ public void test024(){
+ runTest("Error expected for constructor in interfaces");
+ }
+
+ public void test025(){
+ runTest("class name for identifier as String should provoke error");
+ }
+
+ public void test026(){
+ runTest("cyclic interface inheritance not detected if no classes implement the interfaces");
+ }
+
+ public void test027(){
+ runTest("cyclic class inheritance");
+ }
+
+ public void test028(){
+ runTest("type and package name conflicts are resolved happily (1a)");
+ }
+
+ public void test029(){
+ runTest("(fails in USEJAVAC) type and package name conflicts are resolved happily (1b)");
+ }
+
+ public void test030(){
+ runTest("type and package name conflicts caught as errors (1)");
+ }
+
+ public void test031(){
+ runTest("flow analysis where final variable set in another constructor");
+ }
+
+ public void test032(){
+ runTest("Can construct inner classes using qualified expressions");
+ }
+
+ public void test033(){
+ runTest("subclass unable to access protected static methods using type-qualified references");
+ }
+
+ public void test034(){
+ runTest("Undefined inner class constructor");
+ }
+
+ public void test035(){
+ runTest("classes that are package prefixes are illegal");
+ }
+
+ public void test036(){
+ runTest("valid type expressions for introduced type testing");
+ }
+
+ public void test037(){
+ runTest("PR591 compiler error expected when directly calling unimplemented abstract method using super");
+ }
+
+ public void test038(){
+ runTest("suggested by Jacks 15.28-qualified-namestr tests");
+ }
+
+ public void test039(){
+ runTest("suggested by jacks 3.7-15 all comments must be closed");
+ }
+
+ public void test040(){
+ runTest("package class access not enforced outside of package");
+ }
+
+ public void test041(){
+ runTest("expecting CE for ambiguous reference");
+ }
+
+ public void test042(){
+ runTest("try without catch or finally");
+ }
+
+ public void test043(){
+ runTest("invalid floating-point constant");
+ }
+
+ public void test044(){
+ runTest("concrete aspect unable to access abstract package-private method in parent for overriding");
+ }
+
+ public void test045(){
+ runTest("super reference used to disambiguate names of different but compatible types");
+ }
+
+ public void test046(){
+ runTest("anonymous explicit inner constructors");
+ }
+
+ public void test047(){
+ runTest("Overruning the lineStarts buffer, DO NOT EDIT THIS FILE!!!!");
+ }
+
+ public void test048(){
+ runTest("no CE for unambiguous type reference");
+ }
+
+ public void test049(){
+ runTest("CE for ambiguous type reference (imports)");
+ }
+
+ public void test050(){
+ runTest("CE for ambiguous type reference (two type declarations)");
+ }
+
+ public void test051(){
+ runTest("CE for ambiguous type reference (two inner types)");
+ }
+
+ public void test052(){
+ runTest("final assignment in loop");
+ }
+
+ public void test053(){
+ runTest("private super access in inners");
+ }
+
+ public void test054(){
+ runTest("nested interface does not require new qualifier (8)");
+ }
+
+ public void test055(){
+ runTest("nested interface does not require new qualifier (9)");
+ }
+
+ public void test056(){
+ runTest("nested interface does not require new qualifier (10)");
+ }
+
+ public void test057(){
+ runTest("nested interface does not require new qualifier (14)");
+ }
+
+ public void test058(){
+ runTest("nested interface does not require new qualifier (15)");
+ }
+
+ public void test059(){
+ runTest("nested interface does not require new qualifier (16)");
+ }
+
+ public void test060(){
+ runTest("check that constructor name's match the enclosing type");
+ }
+
+ public void test061(){
+ runTest("errors for not applicable or accessible methods");
+ }
+
+ public void test062(){
+ runTest("import statement within class body crashes compiler");
+ }
+
+ public void test063(){
+ runTest("Accessing instance fields and instance methods statically.");
+ }
+
+ public void test064(){
+ runTest("Crashes when a cast is within another cast");
+ }
+
+ public void test065(){
+ runTest("Crashes when a cast of the form )int) appears");
+ }
+
+ public void test066(){
+ runTest("Crashes when the closing brace is reversed");
+ }
+
+ public void test067(){
+ runTest("Crashes when a method name is missing in a call -- e.g. 'System.out.();'");
+ }
+
+ public void test068(){
+ runTest("Crashes when a bad r-value appears.");
+ }
+
+ public void test069(){
+ runTest("Two underscores as a variables causes a crash");
+ }
+
+ public void test070(){
+ runTest("Crashes when assigning to a final static in an intializer and declaration");
+ }
+
+ public void test071(){
+ runTest("Crashes when two dots appear instead of one");
+ }
+
+ public void test072(){
+ runTest("Crashes when there're stray dots");
+ }
+
+ public void test073(){
+ runTest("Stray characters cause a crash");
+ }
+
+ public void test074(){
+ runTest("Colon instead of a semi-colon causes a crash");
+ }
+
+ public void test075(){
+ runTest("type error in initializer caught by ajc, not javac");
+ }
+
+ public void test076(){
+ runTest("Circular inheritance with classes causes a stack overflow.");
+ }
+
+ public void test077(){
+ runTest("Missing ;");
+ }
+
+ public void test078(){
+ runTest("cast expressions should not allow casts between ifaces and array types");
+ }
+
+ public void test079(){
+ runTest("parsing errors for various bad forms of NewArrayExprs.");
+ }
+
+ public void test080(){
+ runTest("good error for bad field and inner class references");
+ }
+
+ public void test081(){
+ runTest("Implementing a non-interface used to crash the compiler.");
+ }
+
+ public void test082(){
+ runTest("error of no return statement detected not by ajc but by javac (line 4)");
+ }
+
+ public void test083(){
+ runTest("class and interface extension");
+ }
+
+ public void test084(){
+ runTest("types in throws clauses");
+ }
+
+ public void test085(){
+ runTest("bad switch syntax");
+ }
+
+ public void test086(){
+ runTest("Referencing various things from static contexts");
+ }
+
+ public void test087(){
+ runTest("Some expressions are illegal expression statements");
+ }
+
+ public void test088(){
+ runTest("illegal forward reference");
+ }
+
+ public void test089(){
+ runTest("protected accessibility");
+ }
+
+ public void test090(){
+ runTest("parse-time illegal modifiers");
+ }
+
+ public void test091(){
+ runTest("check-time illegal modifiers");
+ }
+
+ public void test092(){
+ runTest("illegal synchronized stmts");
+ }
+
+ public void test093(){
+ runTest("modifiers on interface members");
+ }
+
+ public void test094(){
+ runTest("good errors (and not too many) for missing members");
+ }
+
+ public void test095(){
+ runTest("expecting compile failures with subclass narrowing scope of superclass methods or accessing private superclass variables");
+ }
+
+ public void test096(){
+ runTest("inner classes may not have static non-constant members");
+ }
+
+ public void test097(){
+ runTest("flow analysis with local types");
+ }
+
+ public void test098(){
+ runTest("PR584 Can construct inner classes using qualified expressions");
+ }
+
+ public void test099(){
+ runTest("incrementing objects, arrays - 2");
+ }
+
+ public void test100(){
+ runTest("incrementing objects, arrays CE");
+ }
+
+ public void test101(){
+ runTest("incrementing objects, arrays - 3");
+ }
+
+ public void test102(){
+ runTest("incrementing objects, arrays");
+ }
+
+ public void test103(){
+ runTest("no circularity errors simply because of inners (1)");
+ }
+
+ public void test104(){
+ runTest("no circularity errors simply because of inners (2)");
+ }
+
+ public void test105(){
+ runTest("should have circular inheritance errors (1)");
+ }
+
+ public void test106(){
+ runTest("should have circular inheritance errors (2)");
+ }
+
+ public void test107(){
+ runTest("interface using preceding subinterface in its definition");
+ }
+
+ public void test108(){
+ runTest("Parent interface using public inner interface of child in same file");
+ }
+
+ public void test109(){
+ runTest("a type is not allowed to extend or implement its own innner type");
+ }
+
+ public void test110(){
+ runTest("try requires block JLS 14.19");
+ }
+
+ public void test111(){
+ runTest("loop expressions not declarations");
+ }
+
+ public void test112(){
+ runTest("no error when public class is in file of a different name");
+ }
+
+ public void test113(){
+ runTest("local variables must be final to be accessed from inner class");
+ }
+
+ public void test114(){
+ runTest("final local variables may be accessed from inner class");
+ }
+
+ public void test115(){
+ runTest("missing package identifier");
+ }
+
+ public void test116(){
+ runTest("CE for ambiguous type reference (two files in package)");
+ }
+
+ public void test117(){
+ runTest("initializer can throw so long as all constructors declare so");
+ }
+
+ public void test118(){
+ runTest("interfaces may not contain initializers (bug found by jacks)");
+ }
+
+ public void test119(){
+ runTest("initializers must be able to complete normally (found by jacks)");
+ }
+
+ public void test120(){
+ runTest("more tests of super alone");
+ }
+
+ public void test121(){
+ runTest("subclass access to enclosing super class private members");
+ }
+
+ public void test122(){
+ runTest("various tests of switch bounds");
+ }
+
+ public void test123(){
+ runTest("VerifyError if nested sync returning result");
+ }
+
+ public void test124(){
+ runTest("assert flow");
+ }
+
+ public void test125(){
+ runTest("assert flow - 2");
+ }
+
+ public void test126(){
+ runTest("assert typing");
+ }
+
+ public void test127(){
+ runTest("assert coverage tests [requires 1.4]");
+ }
+
+ public void test128(){
+ runTest("assert coverage tests in one package [requires 1.4]");
+ }
+
+ public void test129(){
+ runTest("compiling asserts in methods");
+ }
+
+ public void test130(){
+ runTest("import of a class in the default package");
+ }
+
+ public void test131(){
+ runTest("Referencing static interfaces with import statements");
+ }
+
+ public void test132(){
+ runTest("Referencing static interfaces with import statements stars");
+ }
+
+ public void test133(){
+ runTest("Referencing static interfaces with import statements stars 2");
+ }
+
+ public void test134(){
+ runTest("Referencing static interfaces with import statements stars 3");
+ }
+
+ public void test135(){
+ runTest("Referencing interfaces with import statements");
+ }
+
+ public void test136(){
+ runTest("Referencing interfaces with import statements stars");
+ }
+
+ public void test137(){
+ runTest("Referencing interfaces with import statements stars 2");
+ }
+
+ public void test138(){
+ runTest("Referencing interfaces with import statements stars 3");
+ }
+
+ public void test139(){
+ runTest("import any inner from interface implementor");
+ }
+
+ public void test140(){
+ runTest("equals method on quoted strings");
+ }
+
+ public void test141(){
+ runTest("anonymous inner class");
+ }
+
+ public void test142(){
+ runTest("parsing of parenthesized 'this' (in returns)");
+ }
+
+ public void test143(){
+ runTest("Strings are folded and interned correctly");
+ }
+
+ public void test144(){
+ runTest("Cast binds tighter than equality tests");
+ }
+
+ public void test145(){
+ runTest("Boundary base values can be parsed");
+ }
+
+ public void test146(){
+ runTest("State is passed correctly across nested annonymous inners");
+ }
+
+ public void test147(){
+ runTest("?: expressions should typecheck in interesting ways");
+ }
+
+ public void test148(){
+ runTest("cast expressions should allow casts to/from interfaces at compile-time.");
+ }
+
+ public void test149(){
+ runTest("various anonymous inner classes plus super types tests");
+ }
+
+ public void test150(){
+ runTest("Various comment syntaxes should be handled.");
+ }
+
+ public void test151(){
+ runTest("Abstract inner classes across package boundaries");
+ }
+
+ public void test152(){
+ runTest("inner classes accessing outers and some more inner class names");
+ }
+
+ public void test153(){
+ runTest("remember to cast folded values down to the proper types.");
+ }
+
+ public void test154(){
+ runTest("inner classes can be built using protected constructors in super");
+ }
+
+ public void test155(){
+ runTest("The current AspectJ compiler cannot parse qualified superclass constructor invocations");
+ }
+
+ public void test156(){
+ runTest("More thourough test of static members using full names");
+ }
+
+ public void test157(){
+ runTest("More thourough test of static members using imports");
+ }
+
+ public void test158(){
+ runTest("Looking in class Java for java.lang.String WITH separate compilation");
+ }
+
+ public void test159(){
+ runTest("Looking in class Java for java.lang.String WITHOUT separate compilation");
+ }
+
+ public void test160(){
+ runTest("Looking in class Java for java.lang.String WITH separate compilation with packages");
+ }
+
+ public void test161(){
+ runTest("Looking in class Java for java.lang.String WITHOUT separate compilation with packages");
+ }
+
+ public void test162(){
+ runTest("Testing ternary operations.");
+ }
+
+ public void test163(){
+ runTest("Lifting locals in switch statements.");
+ }
+
+ public void test164(){
+ runTest("Getting confused when looking up method signatures");
+ }
+
+ public void test165(){
+ runTest("Not recognizing the chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7'");
+ }
+
+ public void test166(){
+ runTest("Test chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7' with a case statement");
+ }
+
+ public void test167(){
+ runTest("Checking character values with all the unicode chars.");
+ }
+
+ public void test168(){
+ runTest("Trouble finding methods with the same name and different parameter types");
+ }
+
+ public void test169(){
+ runTest("Binding non-public static inner classes of interfaces in other packages");
+ }
+
+ public void test170(){
+ runTest("Not recognizing the octal chars '\0', '\1', '\2', '\3', '\4', '\5', '\6', '\7'");
+ }
+
+ public void test171(){
+ runTest("Members with the same name as their package cause confusion with fully-qualified names.");
+ }
+
+ public void test172(){
+ runTest("Fully-qual'ed names with same start as variable names");
+ }
+
+ public void test173(){
+ runTest("Fully qualifying inner classes within annonymous classes causes problems.");
+ }
+
+ public void test174(){
+ runTest("Calls to methods in outer annonymous classes are being qual's incorrectly with 'this'");
+ }
+
+ public void test175(){
+ runTest("Reading inner classes from source and bytecode (1) -- was failing");
+ }
+
+ public void test176(){
+ runTest("Reading inner classes from source and bytecode (2)");
+ }
+
+ public void test177(){
+ runTest("Reading inner classes from source and bytecode (3)");
+ }
+
+ public void test178(){
+ runTest("Not lifting types correctly with bytes and shorts with ternary ops");
+ }
+
+ public void test179(){
+ runTest("Not looking up methods inside of anonymous declarations correctly.");
+ }
+
+ public void test180(){
+ runTest("Resolving extended classes with array parameters");
+ }
+
+ public void test181(){
+ runTest("Assignments as second arguments in ternary operators.");
+ }
+
+ public void test182(){
+ runTest("Conflicting inner classes with interfaces.");
+ }
+
+ public void test183(){
+ runTest("confusions of casts and parens");
+ }
+
+ public void test184(){
+ runTest("default constructors seen by inner classes subtyping outers");
+ }
+
+ public void test185(){
+ runTest("folding fields set to anonymous instances containing self-references");
+ }
+
+ public void test186(){
+ runTest("finally at the end of a method that needs to return");
+ }
+
+ public void test187(){
+ runTest("overriding methods from object in interfaces and multiple-inheritance");
+ }
+
+ public void test188(){
+ runTest("private fields in an outer class accessed by an inner which also extends the outer");
+ }
+
+ public void test189(){
+ runTest("breaking out of a labeled block inside of an if");
+ }
+
+ public void test190(){
+ runTest("abstractifying a method and getting it back through super");
+ }
+
+ public void test191(){
+ runTest("Packages and static classes with the same name produce compile errors.");
+ }
+
+ public void test192(){
+ runTest("Inner types must generate classfiles with only Public/Default access flags.");
+ }
+
+ public void test193(){
+ runTest("Default constructors have same access as their enclosing type");
+ }
+
+ public void test194(){
+ runTest("Returning primitive values matching method return type (minimal)");
+ }
+
+ public void test195(){
+ runTest("Flow analysis and if(true)");
+ }
+
+ public void test196(){
+ runTest("packages and generated inner types (for I.class)");
+ }
+
+ public void test197(){
+ runTest("A.this exprs match by exact type matching");
+ }
+
+ public void test198(){
+ runTest("Implicit this for new inner instance must be avaliable");
+ }
+
+ public void test199(){
+ runTest("Inners can reference protected fields of their outer's super.");
+ }
+
+ public void test200(){
+ runTest("Primitives that special case for a constant arm should work");
+ }
+
+ public void test201(){
+ runTest("Parenthesized true and false don't parse");
+ }
+
+ public void test202(){
+ runTest("Field sets to public fields of private fields of enclosing types");
+ }
+
+ public void test203(){
+ runTest("Constant values should be stored with the correct type of their fields");
+ }
+
+ public void test204(){
+ runTest("Local variables in initializers should not be treated as blank final fields");
+ }
+
+ public void test205(){
+ runTest("Binops aren't allowed as update stmts in for loops");
+ }
+
+ public void test206(){
+ runTest("Can't avoid doing division in case of div by zero");
+ }
+
+ public void test207(){
+ runTest("Testing frames w/greater than FF locals and 7F incs (i.e., WIDE instruction)");
+ }
+
+ public void test208(){
+ runTest("correct numeric literals");
+ }
+
+ public void test209(){
+ runTest("invalid numeric literals");
+ }
+
+ public void test210(){
+ runTest("inner types can't have the same simple name as an enclosing type");
+ }
+
+ public void test211(){
+ runTest("test the unops and binops with various values");
+ }
+
+ public void test212(){
+ runTest("test + and += for strings and variously typed values");
+ }
+
+ public void test213(){
+ runTest("test try/catch/finally statements");
+ }
+
+ public void test214(){
+ runTest("local types can be bound in the signatures of other local types");
+ }
+
+ public void test215(){
+ runTest("type and package name conflicts are resolved happily (2)");
+ }
+
+ public void test216(){
+ runTest("try statements work sorta like scoped items for exception flow control");
+ }
+
+ public void test217(){
+ runTest("qualified this must work exactly, not based on subtypes");
+ }
+
+ public void test218(){
+ runTest("nested finally blocks have interesting frame location problems");
+ }
+
+ public void test219(){
+ runTest("nested synchronized blocks have interesting frame location problems");
+ }
+
+ public void test220(){
+ runTest("anonymous inner classes with inner types");
+ }
+
+ public void test221(){
+ runTest("qualified super call expr");
+ }
+
+ public void test222(){
+ runTest("interfaces with non-explicitly static inner classes");
+ }
+
+ public void test223(){
+ runTest("Operands work correctly");
+ }
+
+ public void test224(){
+ runTest("simple tests of throws and for stmt typing");
+ }
+
+ public void test225(){
+ runTest("test for not folding circular constants");
+ }
+
+ public void test226(){
+ runTest("continue targets must be continuable");
+ }
+
+ public void test227(){
+ runTest("qualified this to non-inner should be caught");
+ }
+
+ public void test228(){
+ runTest("Cannot bind a name.");
+ }
+
+ public void test229(){
+ runTest("interface declaration not permitted in local method scope");
+ }
+
+ public void test230(){
+ runTest("Locals inside other locals, ordering of processing [eh]");
+ }
+
+ public void test231(){
+ runTest("asserts");
+ }
+
+ public void test232(){
+ runTest("non-constant static final fields marked as final in .class");
+ }
+
+ public void test233(){
+ runTest("handle multiple nested inner classes");
+ }
+
+ public void test234(){
+ runTest("advice on a static method");
+ }
+
+ public void test235(){
+ runTest("inner constructor syntax causes compile error");
+ }
+
+ public void test236(){
+ runTest("widening of method parameters to match javac");
+ }
+
+ public void test237(){
+ runTest("parenthesized string literals matching primitive type names");
+ }
+
+ public void test238(){
+ runTest("simple type coercions tests");
+ }
+
+ public void test239(){
+ runTest("order of type declarations shouldn't matter");
+ }
+
+ public void test240(){
+ runTest("Scanner non recognizing strictfp.");
+ }
+
+ public void test241(){
+ runTest("Crashes when a lot of zeros are in front of a double variable [!!! purejava]");
+ }
+
+}
+