/************************************************************************************** * Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. * * http://aspectwerkz.codehaus.org * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the LGPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package test.reflection; import junit.framework.TestCase; /** * The advice used here reverse the sign of the integer returned by the incr(..) methods. Each * incr(..) method return the argument incremented of 1 (or -1 if arg is negative). Child is * overriding a method defined in Super but still does call it. Child is used with a dual pointcut, * defined both in super method and overrided method. Child2 is used in the case of a single * pointcut defined in super method. <p/>For AW-90 same tests are done for static methods */ public class ReflectionTest extends TestCase { public void testSinglePointcutOnSuperClassWithOverridedMethodNonDelegating() { OtherChild2 c = new OtherChild2(); assertEquals(2, c.incr(1)); // advice non applied since method is overrided and poincut is NOT hierarchical Super2 s = new Super2(); assertEquals(-2, s.incr(1)); // advice bounded } public void testStaticSinglePointcutOnSuperClassWithOverridedMethodNonDelegating() { assertEquals(2, OtherChild2.incrStatic(1)); // advice non applied since method is overrided and poincut is NOT hierarchical assertEquals(-2, Super2.incrStatic(1)); // advice bounded } public void testSinglePointcutOnSuperClassWithOverridedMethodDelegating() { Child2 c = new Child2(); assertEquals(-3, c.incr(1)); } public void testStaticSinglePointcutOnSuperClassWithOverridedMethodDelegating() { assertEquals(-3, Child2.incrStatic(1)); } public void testDualPointcutWithOverridedMethodNonDelegating() { OtherChild c = new OtherChild(); assertEquals(-2, c.incr(1)); } public void testStaticDualPointcutWithOverridedMethodNonDelegating() { assertEquals(-2, OtherChild.incrStatic(1)); } public void testDualPointcutWithOverridedMethodDelegating() { Child c = new Child(); assertEquals(+3, c.incr(1)); } public void testStaticDualPointcutWithOverridedMethodDelegating() { assertEquals(+3, Child.incrStatic(1)); } public void testDollar() { Child c = new Child(); assertEquals(-1, c.do$2(1)); } public void testReflectionCall() { Child c = new Child(); assertEquals(+3, c.reflectionCallIncr(1)); } // -- JUnit public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static junit.framework.Test suite() { return new junit.framework.TestSuite(ReflectionTest.class); } }