diff options
Diffstat (limited to 'tests/src/test/java/org/aspectj/systemtest/ajc170/Ajc170Tests.java')
-rw-r--r-- | tests/src/test/java/org/aspectj/systemtest/ajc170/Ajc170Tests.java | 309 |
1 files changed, 309 insertions, 0 deletions
diff --git a/tests/src/test/java/org/aspectj/systemtest/ajc170/Ajc170Tests.java b/tests/src/test/java/org/aspectj/systemtest/ajc170/Ajc170Tests.java new file mode 100644 index 000000000..1f1017328 --- /dev/null +++ b/tests/src/test/java/org/aspectj/systemtest/ajc170/Ajc170Tests.java @@ -0,0 +1,309 @@ +/******************************************************************************* + * Copyright (c) 2008-2012 Contributors + * 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: + * Andy Clement - initial API and implementation + *******************************************************************************/ +package org.aspectj.systemtest.ajc170; + +import java.io.File; + +import junit.framework.Test; + +import org.aspectj.apache.bcel.classfile.Field; +import org.aspectj.apache.bcel.classfile.JavaClass; +import org.aspectj.testing.XMLBasedAjcTestCase; +import org.aspectj.weaver.TypeFactory; +import org.aspectj.weaver.UnresolvedType; +import org.aspectj.weaver.World; +import org.aspectj.weaver.internal.tools.StandardPointcutExpressionImpl; +import org.aspectj.weaver.patterns.Pointcut; +import org.aspectj.weaver.patterns.PointcutRewriter; +import org.aspectj.weaver.reflect.ReflectionWorld; +import org.aspectj.weaver.tools.StandardPointcutParser; + +/** + * @author Andy Clement + */ +public class Ajc170Tests extends org.aspectj.testing.XMLBasedAjcTestCase { + +// public void testLostAnnos_377130() { +// runTest("missing annos on priv aspects"); +// } +// +// public void testLostAnnos_377130_2() { +// runTest("missing annos on priv aspects - 2"); +// } + + public void testCovariantGenerics382435_1() { + runTest("covariant generic itds 1"); + } + + public void testCovariantGenerics382435_2() { + runTest("covariant generic itds 2"); + } + + public void testCovariantGenericsItd382189_1() { + runTest("covariant generics 1"); + } + + public void testCovariantGenericsItd382189_2() { + runTest("covariant generics 2"); + } + + public void testCovariantGenericsItd382189_3() { + runTest("covariant generics 3"); + } + + public void testCovariantGenericsItd382189() { + runTest("covariant generics"); + } + + public void testGenericAspectAround382723() { + runTest("generic aspect"); + } + + public void testGenericAspectAround382723_2() { + runTest("generic aspect 2"); + } + + public void testGenericAspectAround382723_3() { + runTest("generic aspect 3"); + } + + public void testGenericAspectAround382723_4() { + runTest("generic aspect 4"); + } + + + public void testAttributeErrorJ7() { + runTest("attribute issue with J7"); + } + + public void testSwitchOnEnum() { + runTest("switch on enum"); + } + + public void testDecAtFieldOrderingLTW1() { + runTest("dec at field ordering ltw 1"); + } + + public void testDecAtFieldOrdering1() { + runTest("dec at field ordering 1"); + } + +// public void testDecAtFieldOrdering2() { +// runTest("dec at field ordering 2"); +// } + + public void testXmlDefsDeclareAnnoType() { + runTest("xml defined dec anno - type"); + } + + public void testXmlDefsDeclareAnnoMethod() { + runTest("xml defined dec at method"); + } + + // anno not runtime vis + public void testXmlDefsDeclareAnnoMethod2() { + runTest("xml defined dec at method 2"); + } + + public void testXmlDefsDeclareAnnoField() { + runTest("xml defined dec at field"); + } + + public void testXmlDefsDeclareAnnoFieldVariants1() { + runTest("xml defined dec anno - variants 1"); + } + + public void testXmlDefsDeclareAnnoFieldVariants2() { + runTest("xml defined dec anno - variants 2"); + } + + public void testXmlDefsDeclareAnnoFieldMultipleValues() { + runTest("xml defined dec anno - multiple values"); + } + + public void testXmlDefsDeclareAnnoFieldMultipleValuesAndSpaces() { + runTest("xml defined dec anno - multiple values and spaces"); + } + + public void testPointcutExpense_374964() { + // check a declaring type being specified causes the call() to be considered cheaper than this() + + World world = new ReflectionWorld(true, getClass().getClassLoader()); + StandardPointcutParser pointcutParser = StandardPointcutParser.getPointcutParserSupportingAllPrimitives(world); + StandardPointcutExpressionImpl pointcutExpression = (StandardPointcutExpressionImpl)pointcutParser.parsePointcutExpression("call(* *(..)) && this(Object)"); + Pointcut pc = pointcutExpression.getUnderlyingPointcut(); + Pointcut newp = new PointcutRewriter().rewrite(pc); + // no declaring type so this() is considered cheaper + assertEquals("(this(java.lang.Object) && call(* *(..)))",newp.toString()); + + pointcutExpression = (StandardPointcutExpressionImpl)pointcutParser.parsePointcutExpression("call(* String.*(..)) && this(Object)"); + pc = pointcutExpression.getUnderlyingPointcut(); + newp = new PointcutRewriter().rewrite(pc); + // declaring type, so call() is cheaper + assertEquals("(call(* java.lang.String.*(..)) && this(java.lang.Object))",newp.toString()); + + pointcutExpression = (StandardPointcutExpressionImpl)pointcutParser.parsePointcutExpression("this(Object) && call(* *(..)) && call(* String.*(..))"); + pc = pointcutExpression.getUnderlyingPointcut(); + newp = new PointcutRewriter().rewrite(pc); + // more complex example, mix of them + assertEquals("((call(* java.lang.String.*(..)) && this(java.lang.Object)) && call(* *(..)))",newp.toString()); + } + + public void testBCExceptionAnnoDecp_371998() { + runTest("BCException anno decp"); + } + + public void testTransientTjpFields()throws Exception { + runTest("transient tjp fields"); + JavaClass jc = getClassFrom(ajc.getSandboxDirectory(), "Code"); + Field[] fs = jc.getFields(); + //private static final org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_0 [Synthetic] + //private static final org.aspectj.lang.JoinPoint$StaticPart ajc$tjp_1 [Synthetic] + for (Field f: fs) { + if (!f.isTransient()) { + fail("Field should be transient: "+f); + } + } + } + + public void testGenericsWithTwoTypeParamsOneWildcard() { + UnresolvedType ut; + + ut = TypeFactory.createTypeFromSignature("LFoo<**>;"); + assertEquals(2,ut.getTypeParameters().length); + + ut = TypeFactory.createTypeFromSignature("LFoo<***>;"); + assertEquals(3,ut.getTypeParameters().length); + + ut = TypeFactory.createTypeFromSignature("LFoo<TP;*+Ljava/lang/String;>;"); + assertEquals(2,ut.getTypeParameters().length); + + ut = TypeFactory.createTypeFromSignature("LFoo<*+Ljava/lang/String;TP;>;"); + assertEquals(2,ut.getTypeParameters().length); + + ut = TypeFactory.createTypeFromSignature("LFoo<*+Ljava/lang/String;TP;>;"); + assertEquals(2,ut.getTypeParameters().length); + + ut = TypeFactory.createTypeFromSignature("LFoo<*TT;>;"); + assertEquals(2,ut.getTypeParameters().length); + + ut = TypeFactory.createTypeFromSignature("LFoo<[I>;"); + assertEquals(1,ut.getTypeParameters().length); + + ut = TypeFactory.createTypeFromSignature("LFoo<[I[Z>;"); + assertEquals(2,ut.getTypeParameters().length); + } + + public void testPerThis() { + runTest("perthis"); + } + + public void testPerTarget() { + runTest("pertarget"); + } + + public void testPerCflow() { + runTest("percflow"); + } + + public void testPerTypeWithin() { + runTest("pertypewithin"); + } + + // not specifying -1.7 + public void testDiamond1() { + runTest("diamond 1"); + } + + public void testDiamond2() { + runTest("diamond 2"); + } + + public void testDiamondItd1() { + runTest("diamond itd 1"); + } + + public void testLiterals1() { + runTest("literals 1"); + } + + public void testLiterals2() { + runTest("literals 2"); + } + + public void testLiteralsItd1() { + runTest("literals itd 1"); + } + + public void testStringSwitch1() { + runTest("string switch 1"); + } + + public void testStringSwitch2() { + runTest("string switch 2"); + } + + public void testMultiCatch1() { + runTest("multi catch 1"); + } + + public void testMultiCatch2() { + runTest("multi catch 2"); + } + + public void testMultiCatchWithHandler1() { + runTest("multi catch with handler 1"); + } + + public void testMultiCatchAspect1() { + runTest("multi catch aspect 1"); + } + + // public void testMultiCatchWithHandler2() { + // runTest("multi catch with handler 2"); + // } + + public void testSanity1() { + runTest("sanity 1"); + } + + public void testMissingImpl_363979() { + runTest("missing impl"); + } + + public void testMissingImpl_363979_2() { + runTest("missing impl 2"); + } + + public void testStackOverflow_364380() { + runTest("stackoverflow"); + } + + // public void testTryResources1() { + // runTest("try resources 1"); + // } + // + // public void testTryResources2() { + // runTest("try resources 2"); + // } + + // --- + + public static Test suite() { + return XMLBasedAjcTestCase.loadSuite(Ajc170Tests.class); + } + + @Override + protected File getSpecFile() { + return new File("../tests/src/org/aspectj/systemtest/ajc170/ajc170.xml"); + } + +} |