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