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.afterxxx;
9   
10  import junit.framework.TestCase;
11  
12  public class Test extends TestCase {
13      private static String s_log;
14  
15      public static void log(String msg) {
16          s_log += msg;
17      }
18  
19      public void testAll() {
20          s_log = "";
21          all();
22          assertEquals("logAround ", s_log);
23      }
24  
25      public void testAroundFinally() {
26          s_log = "";
27          aroundFinally();
28          assertEquals("logAround logAfterFinally ", s_log);
29      }
30  
31      public void testAroundFinallyReturning() {
32          s_log = "";
33          aroundFinallyReturning();
34          assertEquals("logAround logAfterReturning logAfterFinally ", s_log);
35      }
36  
37      public void testAroundReturning() {
38          s_log = "";
39          aroundReturning();
40          assertEquals("logAround logAfterReturningString logAfterReturning ", s_log);
41      }
42  
43      public void testAroundFinallyReturningThrowing() {
44          s_log = "";
45          try {
46              aroundFinallyReturningThrowing();
47          } catch (UnsupportedOperationException e) {
48          }
49          assertEquals("logAround logAfterThrowingRTE logAfterFinally ", s_log);
50      }
51  
52      public void testAroundReturningThrowing() {
53          s_log = "";
54          try {
55              aroundReturningThrowing();
56          } catch (UnsupportedOperationException e) {
57          }
58          assertEquals("logAround logAfterThrowingRTE ", s_log);
59      }
60  
61      public void testFinally() {
62          s_log = "";
63          _finally();
64          assertEquals("logAfterFinally ", s_log);
65      }
66  
67      public void testFinallyReturning() {
68          s_log = "";
69          finallyReturning();
70          assertEquals("logAfterReturningString logAfterReturning logAfter logAfterFinally ", s_log);
71      }
72  
73      public void testFinallyReturningThrowing() {
74          s_log = "";
75          try {
76              finallyReturningThrowing();
77          } catch (UnsupportedOperationException e) {
78          }
79          assertEquals("logAfterThrowingRTE logAfterFinally ", s_log);
80      }
81  
82      public void testReturning() {
83          s_log = "";
84          returning();
85          assertEquals("logAfterReturningString logAfterReturning ", s_log);
86      }
87  
88      public void testReturningThrowing() {
89          s_log = "";
90          try {
91              returningThrowing();
92          } catch (Exception e) {
93          }
94          assertEquals("", s_log);
95      }
96  
97      public Test(String name) {
98          super(name);
99      }
100 
101     public static void main(String[] args) {
102         junit.textui.TestRunner.run(suite());
103     }
104 
105     public static junit.framework.Test suite() {
106         return new junit.framework.TestSuite(Test.class);
107     }
108 
109     void all() {
110     }
111 
112     void aroundFinally() {
113     }
114 
115     static Object aroundFinallyReturning() {
116         return null;
117     }
118 
119     Object aroundReturning() {
120         return "aroundReturning";
121     }
122 
123     static Object aroundFinallyReturningThrowing() {
124         throw new UnsupportedOperationException();
125     }
126 
127     Object aroundReturningThrowing() {
128         throw new UnsupportedOperationException();
129     }
130 
131     void _finally() {
132     }
133 
134     static Object finallyReturning() {
135         return "finallyReturning";
136     }
137 
138     static Object finallyReturningThrowing() {
139         throw new UnsupportedOperationException();
140     }
141 
142     Object returningThrowing() throws Exception {
143         throw new Exception();
144     }
145 
146     Object returning() {
147         return "returning";
148     }
149 }