/************************************************************************************** * 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 junit.framework.TestCase; /** * @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a> */ public class CallerSideAdviceTest extends TestCase { private static String s_logString = ""; public CallerSideAdviceTest(String name) { super(name); } public void testAroundAdvicedMemberMethod() { s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); helper.invokeMemberMethodAround("a", "b"); helper.invokeMemberMethodAround("a", "b", "c"); assertEquals("before after before after ", s_logString); } catch (Exception e) { e.printStackTrace(); fail(); } // AW-163: same JIT JP reused s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); helper.invokeMemberMethodAround("a", "b", "c"); assertEquals("before after ", s_logString); } catch (Exception e) { e.printStackTrace(); fail(); } } public void testAroundAdvicedStaticMethod() { s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); helper.invokeStaticMethodAround(); assertEquals("before after ", s_logString); } catch (Exception e) { fail(); } } public void testAroundAdvicedStaticMethodPrimitiveType() { s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); int res = helper.invokeStaticMethodAroundPrimitiveType(); assertEquals("before after ", s_logString); assertEquals(res, 3); } catch (Exception e) { fail(); } } public void testAroundAdvicedMemberMethodPrimitiveType() { s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); int res = helper.invokeMemberMethodAroundPrimitiveType(); assertEquals("before after ", s_logString); assertEquals(res, 2); } catch (Exception e) { fail(); } } public void testAroundAdvicedMemberMethodVoidType() { s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); helper.invokeMemberMethodAroundVoidType(); assertEquals("before after ", s_logString); } catch (Exception e) { fail(); } } public void testPreAdvicedMemberMethod() { s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); helper.invokeMemberMethodPre(); assertEquals("pre1 pre2 ", s_logString); } catch (Exception e) { fail(); } } public void testPostAdvicedMemberMethod() { s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); helper.invokeMemberMethodPost(); assertEquals("post2 post1 ", s_logString); } catch (Exception e) { fail(); } } public void testPrePostAdvicedMemberMethod() { s_logString = ""; try { CallerSideTestHelper helper = new CallerSideTestHelper(); helper.invokeMemberMethodPrePost(); assertEquals("pre1 pre2 post2 post1 ", s_logString); } catch (Exception e) { fail(); } } public void testPreAdvicedStaticMethod() { s_logString = ""; try { CallerSideTestHelper.invokeStaticMethodPre(); assertEquals("pre1 pre2 ", s_logString); } catch (Exception e) { fail(); } } public void testPostAdvicedStaticMethod() { s_logString = ""; try { CallerSideTestHelper.invokeStaticMethodPost(); assertEquals("post2 post1 ", s_logString); } catch (Exception e) { fail(); } } public void testPrePostAdvicedStaticMethod() { s_logString = ""; try { CallerSideTestHelper.invokeStaticMethodPrePost(); assertEquals("pre1 pre2 post2 post1 ", s_logString); } catch (Exception e) { fail(); } } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static junit.framework.Test suite() { return new junit.framework.TestSuite(CallerSideAdviceTest.class); } // ==== methods to test ==== public static void log(final String wasHere) { s_logString += wasHere; } public void setFieldPreAdviced() { } }