/* ******************************************************************* * 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"); } }