aboutsummaryrefslogtreecommitdiffstats
path: root/tests/base/test100/Driver.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/base/test100/Driver.java')
-rw-r--r--tests/base/test100/Driver.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/base/test100/Driver.java b/tests/base/test100/Driver.java
new file mode 100644
index 000000000..cc2315377
--- /dev/null
+++ b/tests/base/test100/Driver.java
@@ -0,0 +1,73 @@
+import org.aspectj.testing.Tester;
+
+public class Driver {
+ public static void main(String[] args) { test(); }
+
+ public static void test() {
+
+ Pos p1 = new Pos();
+ Pos p2 = new Pos();
+ Pos p3 = new Pos();
+
+ Foo f1 = Foo.aspectOf(p1);
+ Foo f2 = Foo.aspectOf(p2);
+ Foo f3 = Foo.aspectOf(p3);
+
+ p1.move(1, 2);
+ Tester.checkEqual(p1.getX(), 1, "p1.x");
+ Tester.checkEqual(p1.getY(), 2, "p1.y");
+
+ p2.move(1, 2);
+ Tester.checkEqual(p2.getX(), 1, "p2.x");
+ Tester.checkEqual(p2.getY(), 2, "p2.y");
+
+ p3.move(1, 2);
+ Tester.checkEqual(p3.getX(), 1, "p3.x");
+ Tester.checkEqual(p3.getY(), 2, "p3.y");
+
+ Tester.checkEqual(f1.count, 3, "f1.count");
+ Tester.checkEqual(f2.count, 3, "f2.count");
+ Tester.checkEqual(f3.count, 3, "f3.count");
+ Tester.checkEqual(Bar.countx, 9, "Bar.countx");
+ }
+}
+
+class Pos {
+
+ int x = 0;
+ int y = 0;
+
+ int getX() {
+ return(x);
+ }
+
+ int getY() {
+ return(y);
+ }
+
+ void move(int newX, int newY) {
+ x=newX;
+ y=newY;
+ }
+}
+
+aspect Foo pertarget(target(Pos)) {
+ int count = 0;
+
+ before (): ( call(* getX(..)) ||
+ call(* getY(..)) ||
+ call(* move(..)) ) {
+ count++;
+ }
+}
+
+aspect Bar {
+ static int countx = 0;
+
+ /*static*/ before (): target(Pos) &&
+ ( call(* getX(..)) ||
+ call(* getY(..)) ||
+ call(* move(..)) ) {
+ countx++;
+ }
+}