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      intong> 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     // ==== methods to test ====
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     voidong> packagePrivateMethod() {
173         log("invocation ");
174     }
175 }