KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > ch > ethz > prose > crosscut > StaticMembersTest


1 package ch.ethz.prose.crosscut;
2
3 import junit.framework.TestCase;
4 import ch.ethz.prose.*;
5 import ch.ethz.prose.filter.*;
6
7 /**
8  * Cross-cut static members.
9  *
10  * @author Johann Gyger
11  */

12 public class StaticMembersTest extends TestCase {
13
14       public static int value;
15
16       protected static boolean crosscutted;
17
18       public static int getValue() {
19         return value;
20       }
21
22       public static void setValue(int newValue) {
23         value = newValue;
24       }
25
26       public StaticMembersTest(String JavaDoc name) {
27         super(name);
28       }
29
30       protected void setUp() throws SystemStartupException {
31         ProseSystem.startup();
32         crosscutted = false;
33       }
34
35       protected void tearDown() throws SystemTeardownException {
36         ProseSystem.teardown();
37       }
38
39       public void test_010_static_getcut() {
40         ProseSystem.getAspectManager().insert(new Get());
41         getValue();
42         assertTrue("Static field `value' is crosscutted by a GetCut", crosscutted);
43       }
44
45       public void test_020_static_setcut() {
46         ProseSystem.getAspectManager().insert(new Set());
47         setValue(42);
48         assertTrue("Static field `value' is crosscutted by a SetCut", crosscutted);
49       }
50
51       public void test_030_static_methodcut_entry() {
52         ProseSystem.getAspectManager().insert(new MethodBefore());
53         getValue();
54         assertTrue("Static method `getValue' is crosscutted by a MethodCut (before)", crosscutted);
55       }
56
57       public void test_040_static_methodcut_exit() {
58         ProseSystem.getAspectManager().insert(new MethodAfter());
59         getValue();
60         assertTrue("Static method `getValue' is crosscutted by a MethodCut (after)", crosscutted);
61       }
62
63       public static class Get extends DefaultAspect {
64         public Crosscut c = new GetCut() {
65           public void GET_ARGS(StaticMembersTest c, int v) {
66             crosscutted = true;
67           }
68           protected PointCutter pointCutter() {
69             return Fields.named("value");
70           }
71           protected Class JavaDoc[] potentialCrosscutClasses() {
72             return new Class JavaDoc[] { StaticMembersTest.class };
73           }
74         };
75       };
76
77       public static class Set extends DefaultAspect {
78         public Crosscut c = new SetCut() {
79           public void SET_ARGS(StaticMembersTest c, int v) {
80             crosscutted = true;
81           }
82           protected PointCutter pointCutter() {
83             return Fields.named("value");
84           }
85           protected Class JavaDoc[] potentialCrosscutClasses() {
86             return new Class JavaDoc[] { StaticMembersTest.class };
87           }
88         };
89       };
90
91       public static class MethodBefore extends DefaultAspect {
92         public Crosscut c = new MethodCut() {
93           public void METHOD_ARGS(StaticMembersTest c) {
94             crosscutted = true;
95           }
96           protected PointCutter pointCutter() {
97             return Within.method("getValue").AND(Executions.before());
98           }
99           protected Class JavaDoc[] potentialCrosscutClasses() {
100             return new Class JavaDoc[] { StaticMembersTest.class };
101           }
102         };
103       };
104
105       public static class MethodAfter extends DefaultAspect {
106         public Crosscut c = new MethodCut() {
107           public void METHOD_ARGS(StaticMembersTest c) {
108             crosscutted = true;
109           }
110           protected PointCutter pointCutter() {
111             return Within.method("getValue").AND(Executions.after());
112           }
113           protected Class JavaDoc[] potentialCrosscutClasses() {
114             return new Class JavaDoc[] { StaticMembersTest.class };
115           }
116         };
117       };
118 }
Popular Tags