AjcPre10xTests.java
/* *******************************************************************
* Copyright (c) 2004 IBM Corporation
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v 2.0
* which accompanies this distribution and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
*
* ******************************************************************/
package org.aspectj.systemtest.pre10x;
import org.aspectj.testing.XMLBasedAjcTestCase;
import junit.framework.Test;
public class AjcPre10xTests extends org.aspectj.testing.XMLBasedAjcTestCase {
public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(AjcPre10xTests.class);
}
@Override
protected java.net.URL getSpecFile() {
return getClassResource("pre10x.xml");
}
public void test001(){
runTest("Using 'aspect' as identifier is legal TODO");
}
public void test002(){
runTest("Using 'pointcut' as identifier is legal TODO");
}
public void test003(){
runTest("CF expected when enclosing class superclass used as this qualifier in inner class");
}
public void test004(){
runTest("enclosing class may be used as this qualifier in inner class");
}
public void test005(){
runTest("reasonable error for crosscut reference with no formals specified");
}
public void test006(){
runTest("reasonable error for introduction on type whose source isn't found");
}
public void test007(){
runTest("handle errors in crosscut designators, insist that they end with a semicolon");
}
public void test008(){
runTest("try to return from a before, after, after throwing and after returning");
}
public void test009(){
runTest("the designator has a wildcard for method name but no return type specified");
}
public void test010(){
runTest("the designator for the introduction has no type after the | charcter");
}
public void test011(){
runTest("crosscut signature does not match");
}
public void test012(){
runTest("proper exit conditions when errors fall through to javac");
}
public void test013(){
runTest("mismatched parens on advice (wasn't binding Tester)");
}
public void test014(){
runTest("Non-static advice silently ignored");
}
public void test015(){
runTest("extra closing brace");
}
public void test016(){
runTest("decent errors for around return type not matching target point");
}
public void test017(){
runTest("eachobject: can't call new on an aspect of");
}
public void test018(){
runTest("eachobject: only zero-argument constructors allowed in an aspect");
}
public void test019(){
runTest("eachobject: can't extend a concrete aspect");
}
public void test020(){
runTest("instanceof used without a class");
}
public void test021(){
runTest("wildcard used for returns clause");
}
public void test022(){
runTest("no return statement in around advice");
}
public void test023(){
runTest("inner aspects must be static (no longer matches PR#286)");
}
public void test024(){
runTest("Casting class declarations as interfaces");
}
public void test025(){
runTest("omits a variable name and crashes with a null pointer");
}
public void test026(){
runTest("Not generating an error for using new as a method name");
}
public void test027(){
runTest("ClassCastException on the int literal");
}
public void test028(){
runTest("Wrong strictfp keyword usage in interface function prototype [TODO: move to errors]");
}
public void test029(){
runTest("Wrong strictfp keyword usage in field declaration [TODO: move to errors]");
}
public void test030(){
runTest("Wrong strictfp keyword usage in constructor declaration [TODO: move to errors]");
}
public void test031(){
runTest("Incorrect static casts to primitively foldable arguments should not crash the compiler.");
}
public void test032(){
runTest("Dominates with commas should signal an error.");
}
public void test033(){
runTest("stack overflow with recursive crosscut specifier");
}
public void test034(){
runTest("Throwing a NullPointerException when formals can't be bound in named pointcut");
}
public void test035(){
runTest("disallow defining more than one pointcut with the same name");
}
// With intro of record in Java14 the error messages here change
// public void test036(){
// runTest("pre 0.7 introduction form outside aspect body causes an EmptyStackException");
// }
//
// public void test037(){
// runTest("a class can't extend an aspect");
// }
//
// public void test038(){
// runTest("a before() clause at the class-level causes an EmptyStackException");
// }
//
// public void test039(){
// runTest("an after() clause at the class-level causes an EmptyStackException");
// }
//
// public void test040(){
// runTest("an around() clause at the class-level causes an EmptyStackException");
// }
public void test041(){
runTest("Doesn't detect cyclic inheritance of aspects.");
}
public void test042(){
runTest("Binds the pointcut formals to member variables instead of pointcut formals.");
}
public void test043(){
runTest("ambiguous formal in formals pattern");
}
public void test044(){
runTest("good error for field name instead of type name");
}
public void test045(){
runTest("errors in aspect inheritance - 1");
}
public void test046(){
runTest("errors in aspect inheritance - 2");
}
public void test047(){
runTest("errors in aspect inheritance - 3");
}
public void test048(){
runTest("errors in aspect inheritance - 4");
}
public void test049(){
runTest("circular dominates leading to irresolvable advice precedence");
}
public void test050(){
runTest("Should issue an error for using 'class' instead of 'aspect'");
}
public void test051(){
runTest("Should signal an error when we need an exposed value but don't provide it");
}
public void test052(){
runTest("StackOverFlowException with circular +implements's.");
}
public void test053(){
runTest("Introducing protected methods is causing a crash");
}
public void test054(){
runTest("Introducing protected fields is causing a crash");
}
public void test055(){
runTest("two classes with the same fully-qualified names [eachjvm]");
}
public void test056(){
runTest("Undefined pointcuts were throwing exceptions in 07b11 [callsto]");
}
public void test057(){
runTest("advice on abstract pointcuts");
}
public void test058(){
runTest("Whoops, I forgot to put a class in the field access PCD.");
}
public void test059(){
runTest("the arounds return something but there is no returns statement");
}
public void test060(){
runTest("multiple conflicting introductions");
}
public void test061(){
runTest("referencing non-static pointcuts in outer aspects");
}
public void test062(){
runTest("javac correct compiler error if there is no return in around returning result");
}
public void test063(){
runTest("should give an error for introducing two members with the same name");
}
public void test064(){
runTest("wimpy test for undeclared and uncaught exceptions");
}
public void test065(){
runTest("Given non-matching TypePattern, CE flags use of non-introduced method rather than failure to introduce");
}
public void test066(){
runTest("Compiler should suggest using aspect when advice, pointcuts, or introduction is in a class");
}
public void test067(){
runTest("declare error working with pointcut and-not (amp,amp,bang)");
}
public void test068(){
runTest("aspect as member of interface (private and protected)");
}
public void test069(){
runTest("introduced inner interfaces - compile should fail to bind interface name outside of Aspect or if implementing method is not public");
}
public void test070(){
runTest("aspects may not implement Serializable or Cloneable");
}
public void test071(){
runTest("explicit constructor calls can throw exceptions");
}
public void test072(){
runTest("bad proceed args good error messages");
}
}