diff options
Diffstat (limited to 'tests/new/CallsReceptionsCallsto.java')
-rw-r--r-- | tests/new/CallsReceptionsCallsto.java | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/new/CallsReceptionsCallsto.java b/tests/new/CallsReceptionsCallsto.java new file mode 100644 index 000000000..790b8de59 --- /dev/null +++ b/tests/new/CallsReceptionsCallsto.java @@ -0,0 +1,85 @@ +// lifted directly from Mark's email + +import org.aspectj.testing.Tester; + +public class CallsReceptionsCallsto { + + static final String desiredString = + "(calls) (callsto) (receptions) G.foo(A) G.foo(D) (calls) (callsto) (receptions) G.foo(A) G.foo(D) "; + + static StringBuffer buffer; + + public static void main(String[] args) { + buffer = new StringBuffer(); + new C().go(); + String foundString = buffer.toString(); + Tester.checkEqual(foundString, desiredString); + } + + + +} + +class C { + A a = new A(); + D d = new D(); + G g = new G(); + + void go(){ + g.foo(a); + g.foo(d); + bar(g); + bash(g); + } + + void bar(I i){ + i.foo(a); + } + + void bash(J j){ + j.foo(d); + } +} + +aspect Q { + + pointcut pc2(): /*calls*/ within(C) && call(void I.foo(*)); + pointcut pc1(): /*receptions*/ call(void I.foo(*)); + pointcut pc3(): /*callsto*/ call(* I.foo(*)); + + before (): pc2() { + CallsReceptionsCallsto.buffer.append("(calls) "); + } + + before(): pc3(){ + CallsReceptionsCallsto.buffer.append("(callsto) "); + } + + before(): pc1() { + CallsReceptionsCallsto.buffer.append("(receptions) "); + } +} + + +class A {} + + +class D {} + + +interface I { + void foo(A a); +} + +interface J { + void foo(D d); +} + +class G implements I, J { + public void foo(A a){ + CallsReceptionsCallsto.buffer.append("G.foo(A) "); + } + public void foo(D d){ + CallsReceptionsCallsto.buffer.append("G.foo(D) "); + } +} |