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 FieldAdviceTest extends TestCase {
16 private static String s_logString = "";
17
18 private static int s_setStaticFieldAroundAdviced = 0;
19
20 private static int s_setStaticFieldPreAdviced = 0;
21
22 private static int s_setStaticFieldPostAdviced = 0;
23
24 private static int s_setStaticFieldPrePostAdviced = 0;
25
26 private static int s_getStaticFieldAroundAdviced = 1;
27
28 private static int s_getStaticFieldPreAdviced = 1;
29
30 private static int s_getStaticFieldPostAdviced = 1;
31
32 private static int s_getStaticFieldPrePostAdviced = 1;
33
34 private int m_setFieldAroundAdviced = 0;
35
36 private int m_setFieldAroundAdvicedWithNullAdvice = 0;
37
38 private String m_setFieldAroundAdvicedObjectWithNullAdvice = new String("0");
39
40 private String m_setFieldAroundAdvicedObjectWithAPI = new String("0");
41
42 private int m_setFieldAroundAdvicedWithAPI = 0;
43
44 private int m_setFieldPreAdviced = 0;
45
46 private int m_setFieldPostAdviced = 0;
47
48 private int m_setFieldPrePostAdviced = 0;
49
50 private int m_getFieldAroundAdviced = 1;
51
52 private int m_getFieldAroundAdvicedWithNullAdvice = 1;
53
54 private int m_getFieldPreAdviced = 1;
55
56 private int m_getFieldPostAdviced = 1;
57
58 private int m_getFieldPrePostAdviced = 1;
59
60 public FieldAdviceTest() {
61 }
62
63 public FieldAdviceTest(String name) {
64 super(name);
65 }
66
67 public void testSetMemberFieldAroundAdviced() {
68 s_logString = "";
69 try {
70 setFieldAroundAdviced();
71 assertEquals("before after ", s_logString);
72 assertEquals(187, m_setFieldAroundAdviced);
73 } catch (Exception e) {
74 fail();
75 }
76 }
77
78 public void testSetMemberFieldAroundAdvicedWithNullAdvice() {
79 s_logString = "";
80 try {
81 setFieldAroundAdvicedWithNullAdvice();
82 assertEquals("before after ", s_logString);
83
84
85
86 assertEquals(187, m_setFieldAroundAdvicedWithNullAdvice);
87 } catch (Exception e) {
88 fail();
89 }
90 }
91
92 public void testSetMemberFieldAroundAdvicedObjectWithNullAdvice() {
93 s_logString = "";
94 try {
95 setFieldAroundAdvicedObjectWithNullAdvice();
96 assertEquals("before after ", s_logString);
97
98
99
100 assertEquals("1", m_setFieldAroundAdvicedObjectWithNullAdvice);
101 } catch (Exception e) {
102 fail();
103 }
104 }
105
106 public void testSetMemberFieldAroundAdvicedObjectWithAPI() {
107 s_logString = "";
108 try {
109 setFieldAroundAdvicedObjectWithAPI();
110 assertEquals("before after ", s_logString);
111
112
113 assertEquals("byAdvice", m_setFieldAroundAdvicedObjectWithAPI);
114 } catch (Exception e) {
115 fail();
116 }
117 }
118
119 public void testSetMemberFieldAroundAdvicedWithAPI() {
120 s_logString = "";
121 try {
122 setFieldAroundAdvicedWithAPI();
123 assertEquals("before after ", s_logString);
124
125
126 assertEquals(3, m_setFieldAroundAdvicedWithAPI);
127 } catch (Exception e) {
128 fail();
129 }
130 }
131
132 public void testGetMemberFieldAroundAdviced() {
133 s_logString = "";
134 try {
135 int i = getFieldAroundAdviced();
136 assertEquals("before after ", s_logString);
137 assertEquals(1, i);
138 } catch (Exception e) {
139 fail();
140 }
141 }
142
143 public void testGetMemberFieldAroundAdvicedWithNullAdvice() {
144 s_logString = "";
145 try {
146 int i = getFieldAroundAdvicedWithNullAdvice();
147 assertEquals("before after ", s_logString);
148 assertEquals(0, i);
149 } catch (Exception e) {
150 fail();
151 }
152 }
153
154 public void testSetFieldPreAdviced() {
155 s_logString = "";
156 try {
157 setFieldPreAdviced();
158 assertEquals("pre1 pre2 ", s_logString);
159 } catch (Exception e) {
160 fail();
161 }
162 }
163
164 public void testSetFieldPostAdviced() {
165 s_logString = "";
166 try {
167 setFieldPostAdviced();
168 assertEquals("post2 post1 ", s_logString);
169 } catch (Exception e) {
170 fail();
171 }
172 }
173
174 public void testSetFieldPrePostAdviced() {
175 s_logString = "";
176 try {
177 setFieldPrePostAdviced();
178 assertEquals("pre1 pre2 post2 post1 ", s_logString);
179 } catch (Exception e) {
180 fail();
181 }
182 }
183
184 public void testGetFieldPreAdviced() {
185 s_logString = "";
186 try {
187 getFieldPreAdviced();
188 assertEquals("pre1 pre2 ", s_logString);
189 } catch (Exception e) {
190 e.printStackTrace();
191 fail();
192 }
193 }
194
195 public void testGetFieldPostAdviced() {
196 s_logString = "";
197 try {
198 getFieldPostAdviced();
199 assertEquals("post2 post1 ", s_logString);
200 } catch (Exception e) {
201 fail();
202 }
203 }
204
205 public void testGetFieldPrePostAdviced() {
206 s_logString = "";
207 try {
208 getFieldPrePostAdviced();
209 assertEquals("pre1 pre2 post2 post1 ", s_logString);
210 } catch (Exception e) {
211 fail();
212 }
213 }
214
215 public void testSetStaticFieldAroundAdviced() {
216 s_logString = "";
217 try {
218 setStaticFieldAroundAdviced();
219 assertEquals("before after ", s_logString);
220 assertEquals(3, s_setStaticFieldAroundAdviced);
221 } catch (Exception e) {
222 fail();
223 }
224 }
225
226 public void testGetStaticFieldAroundAdviced() {
227 s_logString = "";
228 try {
229 int i = getStaticFieldAroundAdviced();
230 assertEquals("before after ", s_logString);
231 assertEquals(1, i);
232 } catch (Exception e) {
233 fail();
234 }
235 }
236
237 public void testSetStaticFieldPreAdviced() {
238 s_logString = "";
239 try {
240 setStaticFieldPreAdviced();
241 assertEquals("pre1 pre2 ", s_logString);
242 } catch (Exception e) {
243 fail();
244 }
245 }
246
247 public void testSetStaticFieldPostAdviced() {
248 s_logString = "";
249 try {
250 setStaticFieldPostAdviced();
251 assertEquals("post2 post1 ", s_logString);
252 } catch (Exception e) {
253 fail();
254 }
255 }
256
257 public void testSetStaticFieldPrePostAdviced() {
258 s_logString = "";
259 try {
260 setStaticFieldPrePostAdviced();
261 assertEquals("pre1 pre2 post2 post1 ", s_logString);
262 } catch (Exception e) {
263 fail();
264 }
265 }
266
267 public void testGetStaticFieldPreAdviced() {
268 s_logString = "";
269 try {
270 getStaticFieldPreAdviced();
271 assertEquals("pre1 pre2 ", s_logString);
272 } catch (Exception e) {
273 fail();
274 }
275 }
276
277 public void testGetStaticFieldPostAdviced() {
278 s_logString = "";
279 try {
280 getStaticFieldPostAdviced();
281 assertEquals("post2 post1 ", s_logString);
282 } catch (Exception e) {
283 fail();
284 }
285 }
286
287 public void testStaticGetFieldPrePostAdviced() {
288 s_logString = "";
289 try {
290 getStaticFieldPrePostAdviced();
291 assertEquals("pre1 pre2 post2 post1 ", s_logString);
292 } catch (Exception e) {
293 fail();
294 }
295 }
296
297 public static void main(String[] args) {
298 junit.textui.TestRunner.run(suite());
299 }
300
301 public static junit.framework.Test suite() {
302 return new junit.framework.TestSuite(FieldAdviceTest.class);
303 }
304
305
306 public static void log(final String wasHere) {
307 s_logString += wasHere;
308 }
309
310 public void setFieldAroundAdviced() {
311 m_setFieldAroundAdviced = 3 + (23 * 8);
312 }
313
314 public void setFieldAroundAdvicedWithNullAdvice() {
315 m_setFieldAroundAdvicedWithNullAdvice = 3 + (23 * 8);
316 }
317
318 public void setFieldAroundAdvicedObjectWithNullAdvice() {
319 m_setFieldAroundAdvicedObjectWithNullAdvice = new String("1");
320 }
321
322 public void setFieldAroundAdvicedObjectWithAPI() {
323 m_setFieldAroundAdvicedObjectWithAPI = new String("original");
324 }
325
326 public void setFieldAroundAdvicedWithAPI() {
327 m_setFieldAroundAdvicedWithAPI = 2;
328 }
329
330 public void setFieldPreAdviced() {
331 m_setFieldPreAdviced = 3 + (23 * 8);
332 }
333
334 public void setFieldPostAdviced() {
335 m_setFieldPostAdviced = 3;
336 }
337
338 public void setFieldPrePostAdviced() {
339 m_setFieldPrePostAdviced = 3;
340 }
341
342 public int getFieldAroundAdviced() {
343 return m_getFieldAroundAdviced;
344 }
345
346 public int getFieldAroundAdvicedWithNullAdvice() {
347 return m_getFieldAroundAdvicedWithNullAdvice;
348 }
349
350 public int getFieldPreAdviced() {
351 return m_getFieldPreAdviced;
352 }
353
354 public int getFieldPostAdviced() {
355 return m_getFieldPostAdviced;
356 }
357
358 public int getFieldPrePostAdviced() {
359 return m_getFieldPrePostAdviced;
360 }
361
362 public static void setStaticFieldAroundAdviced() {
363 s_setStaticFieldAroundAdviced = 3;
364 }
365
366 public static void setStaticFieldPreAdviced() {
367 s_setStaticFieldPreAdviced = 3;
368 }
369
370 public static void setStaticFieldPostAdviced() {
371 s_setStaticFieldPostAdviced = 3;
372 }
373
374 public static void setStaticFieldPrePostAdviced() {
375 s_setStaticFieldPrePostAdviced = 3;
376 }
377
378 public static int getStaticFieldAroundAdviced() {
379 return s_getStaticFieldAroundAdviced;
380 }
381
382 public static int getStaticFieldPreAdviced() {
383 return s_getStaticFieldPreAdviced;
384 }
385
386 public static int getStaticFieldPostAdviced() {
387 return s_getStaticFieldPostAdviced;
388 }
389
390 public static int getStaticFieldPrePostAdviced() {
391 return s_getStaticFieldPrePostAdviced;
392 }
393 }