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      intong> 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     // ==== methods to test ====
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     voidong> 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 }