1   /***************************************************************************************
2    * Copyright (c) Jonas Bonér, Alexandre Vasseur. All rights reserved.                 *
3    * http://aspectwerkz.codehaus.org                                                    *
4    * ---------------------------------------------------------------------------------- *
5    * The software in this package is published under the terms of the LGPL license      *
6    * a copy of which has been included with this distribution in the license.txt file.  *
7    **************************************************************************************/
8   package test;
9   
10  import junit.framework.TestCase;
11  
12  /***
13   * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a>
14   */
15  public class CallerSideAdviceTest extends TestCase {
16      private static String s_logString = "";
17  
18      public CallerSideAdviceTest(String name) {
19          super(name);
20      }
21  
22      public void testAroundAdvicedMemberMethod() {
23          s_logString = "";
24          try {
25              CallerSideTestHelper helper = new CallerSideTestHelper();
26              helper.invokeMemberMethodAround("a", "b");
27              helper.invokeMemberMethodAround("a", "b", "c");
28              assertEquals("before after before after ", s_logString);
29          } catch (Exception e) {
30              e.printStackTrace();
31              fail();
32          }
33  
34          // AW-163: same JIT JP reused
35          s_logString = "";
36          try {
37              CallerSideTestHelper helper = new CallerSideTestHelper();
38              helper.invokeMemberMethodAround("a", "b", "c");
39              assertEquals("before after ", s_logString);
40          } catch (Exception e) {
41              e.printStackTrace();
42              fail();
43          }
44      }
45  
46      public void testAroundAdvicedStaticMethod() {
47          s_logString = "";
48          try {
49              CallerSideTestHelper helper = new CallerSideTestHelper();
50              helper.invokeStaticMethodAround();
51              assertEquals("before after ", s_logString);
52          } catch (Exception e) {
53              fail();
54          }
55      }
56  
57      public void testAroundAdvicedStaticMethodPrimitiveType() {
58          s_logString = "";
59          try {
60              CallerSideTestHelper helper = new CallerSideTestHelper();
61              int res = helper.invokeStaticMethodAroundPrimitiveType();
62              assertEquals("before after ", s_logString);
63              assertEquals(res, 3);
64          } catch (Exception e) {
65              fail();
66          }
67      }
68  
69      public void testAroundAdvicedMemberMethodPrimitiveType() {
70          s_logString = "";
71          try {
72              CallerSideTestHelper helper = new CallerSideTestHelper();
73              int res = helper.invokeMemberMethodAroundPrimitiveType();
74              assertEquals("before after ", s_logString);
75              assertEquals(res, 2);
76          } catch (Exception e) {
77              fail();
78          }
79      }
80  
81      public void testAroundAdvicedMemberMethodVoidType() {
82          s_logString = "";
83          try {
84              CallerSideTestHelper helper = new CallerSideTestHelper();
85              helper.invokeMemberMethodAroundVoidType();
86              assertEquals("before after ", s_logString);
87          } catch (Exception e) {
88              fail();
89          }
90      }
91  
92      public void testPreAdvicedMemberMethod() {
93          s_logString = "";
94          try {
95              CallerSideTestHelper helper = new CallerSideTestHelper();
96              helper.invokeMemberMethodPre();
97              assertEquals("pre1 pre2 ", s_logString);
98          } catch (Exception e) {
99              fail();
100         }
101     }
102 
103     public void testPostAdvicedMemberMethod() {
104         s_logString = "";
105         try {
106             CallerSideTestHelper helper = new CallerSideTestHelper();
107             helper.invokeMemberMethodPost();
108             assertEquals("post2 post1 ", s_logString);
109         } catch (Exception e) {
110             fail();
111         }
112     }
113 
114     public void testPrePostAdvicedMemberMethod() {
115         s_logString = "";
116         try {
117             CallerSideTestHelper helper = new CallerSideTestHelper();
118             helper.invokeMemberMethodPrePost();
119             assertEquals("pre1 pre2 post2 post1 ", s_logString);
120         } catch (Exception e) {
121             fail();
122         }
123     }
124 
125     public void testPreAdvicedStaticMethod() {
126         s_logString = "";
127         try {
128             CallerSideTestHelper.invokeStaticMethodPre();
129             assertEquals("pre1 pre2 ", s_logString);
130         } catch (Exception e) {
131             fail();
132         }
133     }
134 
135     public void testPostAdvicedStaticMethod() {
136         s_logString = "";
137         try {
138             CallerSideTestHelper.invokeStaticMethodPost();
139             assertEquals("post2 post1 ", s_logString);
140         } catch (Exception e) {
141             fail();
142         }
143     }
144 
145     public void testPrePostAdvicedStaticMethod() {
146         s_logString = "";
147         try {
148             CallerSideTestHelper.invokeStaticMethodPrePost();
149             assertEquals("pre1 pre2 post2 post1 ", s_logString);
150         } catch (Exception e) {
151             fail();
152         }
153     }
154 
155     public static void main(String[] args) {
156         junit.textui.TestRunner.run(suite());
157     }
158 
159     public static junit.framework.Test suite() {
160         return new junit.framework.TestSuite(CallerSideAdviceTest.class);
161     }
162 
163     // ==== methods to test ====
164     public static void log(final String wasHere) {
165         s_logString += wasHere;
166     }
167 
168     public void setFieldPreAdviced() {
169     }
170 }