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.thistarget;
9
10 import junit.framework.TestCase;
11
12 /***
13 * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur</a>
14 */
15 public class TargetTest extends TestCase {
16
17 static String s_log = "";
18 static String s_logctorexe = "";
19
20 public void testMethodExecutionTargetThis() {
21
22 ITarget iTarget = new TargetI();
23 s_log = "";
24 iTarget.target();
25
26 assertEquals("before_ITarget before_TargetI pre_ITarget pre_TargetI TargetI post_TargetI post_ITarget after_TargetI after_ITarget ", s_log);
27
28
29 TargetI targetI = new TargetI();
30 s_log = "";
31 targetI.target();
32
33 assertEquals("before_ITarget before_TargetI pre_ITarget pre_TargetI TargetI post_TargetI post_ITarget after_TargetI after_ITarget ", s_log);
34
35
36 SuperTarget superTarget = new TargetSuper();
37 s_log = "";
38 superTarget.target();
39 assertEquals("before_SuperTarget pre_SuperTarget SuperTarget post_SuperTarget after_SuperTarget ", s_log);
40
41
42 s_log = "";
43 superTarget.targetAbstract();
44 assertEquals("before_SuperTargetA pre_SuperTargetA TargetSuperA post_SuperTargetA after_SuperTargetA ", s_log);
45
46
47 Target target = new Target();
48 s_log = "";
49 target.target();
50 assertEquals("Target ", s_log);
51
52
53 s_log = "";
54 TargetI.staticTarget();
55 assertEquals("", s_log);
56 }
57
58 public void testMethodCallTargetThis() {
59
60 ITarget iTarget = new TargetI();
61 s_log = "";
62 iTarget.call();
63
64
65 assertEquals("before_ITarget before_TargetI pre_ITarget pre_TargetI TargetI post_TargetI post_ITarget after_TargetI after_ITarget ", s_log);
66
67
68 TargetI targetI = new TargetI();
69 s_log = "";
70 targetI.call();
71
72 assertEquals("before_ITarget before_TargetI pre_ITarget pre_TargetI TargetI post_TargetI post_ITarget after_TargetI after_ITarget ", s_log);
73
74
75 SuperTarget superTarget = new TargetSuper();
76 s_log = "";
77 superTarget.call();
78 assertEquals("before_SuperTarget pre_SuperTarget SuperTarget post_SuperTarget after_SuperTarget ", s_log);
79
80
81 s_log = "";
82 superTarget.callAbstract();
83 assertEquals("before_SuperTargetA pre_SuperTargetA TargetSuperA post_SuperTargetA after_SuperTargetA ", s_log);
84
85
86 Target target = new Target();
87 s_log = "";
88 target.call();
89 assertEquals("Target ", s_log);
90
91
92 s_log = "";
93 TargetI.staticCall();
94 assertEquals("", s_log);
95 }
96
97
98 public void testConstructorCallTargetThis() {
99
100 s_log = "";
101 ITarget iTarget = new TargetI();
102
103 assertEquals("before_ITarget before_TargetI pre_ITarget pre_TargetI TargetI post_TargetI post_ITarget after_TargetI after_ITarget ", s_log);
104
105
106 s_log = "";
107 TargetI targetI = new TargetI();
108
109 assertEquals("before_ITarget before_TargetI pre_ITarget pre_TargetI TargetI post_TargetI post_ITarget after_TargetI after_ITarget ", s_log);
110
111
112 s_log = "";
113 SuperTarget superTarget = new TargetSuper();
114 assertEquals("before_SuperTarget pre_SuperTarget SuperTarget TargetSuper post_SuperTarget after_SuperTarget ", s_log);
115
116
117 s_log = "";
118 Target target = new Target();
119 assertEquals("Target ", s_log);
120 }
121
122 public void testConstructorExecutionTargetThis() {
123
124 s_logctorexe = "";
125 ITarget iTarget = new TargetI();
126
127 assertEquals("before_ITarget before_TargetI pre_ITarget pre_TargetI TargetI post_TargetI post_ITarget after_TargetI after_ITarget ", s_logctorexe);
128
129
130 s_logctorexe = "";
131 TargetI targetI = new TargetI();
132
133 assertEquals("before_ITarget before_TargetI pre_ITarget pre_TargetI TargetI post_TargetI post_ITarget after_TargetI after_ITarget ", s_logctorexe);
134
135
136 s_logctorexe = "";
137 SuperTarget superTarget = new TargetSuper();
138 assertEquals("before_SuperTarget pre_SuperTarget SuperTarget post_SuperTarget after_SuperTarget before_SuperTarget pre_SuperTarget TargetSuper post_SuperTarget after_SuperTarget ", s_logctorexe);
139
140
141 s_logctorexe = "";
142 Target target = new Target();
143 assertEquals("Target ", s_logctorexe);
144 }
145
146 public void testMethodCallFromSubclassedThis() {
147 ThisI thisI = new ThisI();
148 s_log = "";
149 thisI.callFrom();
150
151 assertEquals("TargetI before_ITarget pre_ITarget TargetI post_ITarget after_ITarget ", s_log);
152
153 ThisSuper thisSuper = new ThisSuper();
154 s_log = "";
155 thisSuper.callFrom();
156 assertEquals("TargetI before_ITarget pre_ITarget TargetI post_ITarget after_ITarget ", s_log);
157 }
158
159
160 public static void main(String[] args) {
161 junit.textui.TestRunner.run(suite());
162 }
163
164 public static junit.framework.Test suite() {
165 return new junit.framework.TestSuite(TargetTest.class);
166 }
167
168 static void log(String s) {
169 s_log += s + " ";
170 }
171
172 static void logCtorExe(String s) {
173 s_logctorexe += s + " ";
174 }
175 }