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.annotation;
9
10 import junit.framework.TestCase;
11 import org.codehaus.aspectwerkz.annotation.Annotations;
12
13 import java.lang.reflect.Method;
14
15 /***
16 * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a>
17 */
18 public class AnnotationTest extends TestCase {
19 private static String s_logString = "";
20
21 /***
22 * @AnnotationPrivateField
23 */
24 private int privateField;
25
26 /***
27 * @AnnotationProtectedField
28 */
29 protected int protectedField;
30
31 /***
32 * @AnnotationPublicField
33 */
34 public int publicField;
35
36 /***
37 * @AnnotationPackagePrivateField
38 */
39 int packagePrivateField/package-summary.html">ong> packagePrivateField;
40
41 public AnnotationTest() {
42 }
43
44 public AnnotationTest(String name) {
45 super(name);
46 }
47
48 public void testPrivateMethod() {
49 s_logString = "";
50 privateMethod();
51 assertEquals("call execution invocation execution call ", s_logString);
52 }
53
54 public void testProtectedMethod() {
55 s_logString = "";
56 protectedMethod();
57 assertEquals("call execution invocation execution call ", s_logString);
58 }
59
60 public void testPackagePrivateMethod() {
61 s_logString = "";
62 packagePrivateMethod();
63 assertEquals("call execution invocation execution call ", s_logString);
64 }
65
66 public void testPublicMethod() {
67 s_logString = "";
68 publicMethod();
69 assertEquals("call execution execution2 invocation execution2 execution call ", s_logString);
70 }
71
72 public void testSetPublicField() {
73 s_logString = "";
74 publicField = 0;
75 assertEquals("set set ", s_logString);
76 }
77
78 public void testSetPrivateField() {
79 s_logString = "";
80 privateField = 0;
81 assertEquals("set set ", s_logString);
82 }
83
84 public void testSetProtectedField() {
85 s_logString = "";
86 protectedField = 0;
87 assertEquals("set set ", s_logString);
88 }
89
90 public void testSetPackagePrivateField() {
91 s_logString = "";
92 packagePrivateField = 0;
93 assertEquals("set set ", s_logString);
94 }
95
96 public void testGetPublicField() {
97 s_logString = "";
98 int i = publicField;
99 assertEquals("get get ", s_logString);
100 }
101
102 public void testGetPrivateField() {
103 s_logString = "";
104 int i = privateField;
105 assertEquals("get get ", s_logString);
106 }
107
108 public void testGetProtectedField() {
109 s_logString = "";
110 int i = protectedField;
111 assertEquals("get get ", s_logString);
112 }
113
114 public void testGetPackagePrivateField() {
115 s_logString = "";
116 int</strong> i = packagePrivateField;
117 assertEquals("get get ", s_logString);
118 }
119
120 public void testBootstrapCLClassAnnotation() throws Throwable {
121 Method concat = String.class.getMethod("concat", new Class[]{String.class});
122 try {
123 Annotations.getAnnotation("foo", String.class);
124 Annotations.getAnnotation("foo", concat);
125 } catch (Throwable t) {
126 fail(t.toString());
127 }
128 }
129
130
131
132
133
134 public static void main(String[] args) {
135 junit.textui.TestRunner.run(suite());
136 }
137
138 public static junit.framework.Test suite() {
139 return new junit.framework.TestSuite(AnnotationTest.class);
140 }
141
142
143 public static void log(final String wasHere) {
144 s_logString += wasHere;
145 }
146
147 /***
148 * @AnnotationPrivateMethod
149 */
150 private void privateMethod() {
151 log("invocation ");
152 }
153
154 /***
155 * @AnnotationProtectedMethod
156 */
157 protected void protectedMethod() {
158 log("invocation ");
159 }
160
161 /***
162 * @AnnotationPublicMethod
163 * @AnnotationPublicMethod2
164 */
165 public void publicMethod() {
166 log("invocation ");
167 }
168
169 /***
170 * @AnnotationPackagePrivateMethod
171 */
172 void packagePrivateMethod() {/package-summary.html">ong> packagePrivateMethod() {
173 log("invocation ");
174 }
175 }