/************************************************************************************** * 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; import org.codehaus.aspectwerkz.joinpoint.JoinPoint; import junit.framework.TestCase; /** * Test for complex CFLOW * See AW-226 * * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur</a> */ public class ComplexCFlowTest extends TestCase { private static String s_logString = ""; // //FIXME: see the aspect, pc is deactivated - see AW-251 // public void testComplexNotCFlow_1() { // s_logString = ""; // method1(); // assertEquals(s_logString, " method1 4-!2-!3-Advice method4"); // } public void testComplexNotCFlow_2() { s_logString = ""; method2(); assertEquals(s_logString, " method2 method4"); } public void testComplexNotCFlow_3() { s_logString = ""; method3(); assertEquals(s_logString, " method3 method4"); } //--- Aspect public static class Aspect { /** * FIXME: this expression leads to match all at cflow early filtering. * <p/> * XXBefore execution(* test.ComplexCFlowTest.method4(..)) AND within(test.ComplexCFlowTest) * AND !cflow(call(* test.ComplexCFlowTest.method2(..)) AND within(test.ComplexCFlowTest)) * AND !cflow(call(* test.ComplexCFlowTest.method3(..)) AND within(test.ComplexCFlowTest)) */ public void method4NotIn2Or3Advice(JoinPoint joinPoint) { s_logString += " 4-!2-!3-Advice"; } } //--- JUnit public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static junit.framework.Test suite() { return new junit.framework.TestSuite(ComplexCFlowTest.class); } //--- Method to test public static void method1() { s_logString += " method1"; method4(); } public static void method2() { s_logString += " method2"; method4(); } public static void method3() { s_logString += " method3"; method4(); } public static void method4() { s_logString += " method4"; } }