diff options
author | wisberg <wisberg> | 2002-12-16 18:51:06 +0000 |
---|---|---|
committer | wisberg <wisberg> | 2002-12-16 18:51:06 +0000 |
commit | 144143c2970a1e874d74cdbd0f8c622d4282a3c3 (patch) | |
tree | b12383d3d9e76c7e1f25f7fbec83051ef17f81fb /tests/new/HoldProceed.java | |
parent | fafae443719b26159ab2d7dac1c9b46b5e00b671 (diff) | |
download | aspectj-144143c2970a1e874d74cdbd0f8c622d4282a3c3.tar.gz aspectj-144143c2970a1e874d74cdbd0f8c622d4282a3c3.zip |
initial version
Diffstat (limited to 'tests/new/HoldProceed.java')
-rw-r--r-- | tests/new/HoldProceed.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/new/HoldProceed.java b/tests/new/HoldProceed.java new file mode 100644 index 000000000..1f14060d7 --- /dev/null +++ b/tests/new/HoldProceed.java @@ -0,0 +1,67 @@ +import org.aspectj.testing.Tester; +import java.util.*; + + +public class HoldProceed { + public static void main(String[] args) { + C c = new C(); + c.m1(); c.m2(); c.m1(); + Tester.check("m"); + Tester.checkEqual(A.buf.toString(), ""); + A.runProceeds(); + Tester.checkEqual(A.buf.toString(), "m1:b:m2:m1:"); + A.runProceeds(); + Tester.checkEqual(A.buf.toString(), "m1:b:m2:m1:m1:b:m2:m1:"); + + try { + c.m3(); + } catch (Exception e) { + Tester.check(false, "shouldn't throw anything"); + } + + try { + A.runProceeds(); + } catch (Error err) { //??? this is an odd test for the fact that Exception is wrapped + Tester.note("caught err"); + } + Tester.check("caught err"); + } +} + +class C { + public void m1() {A. buf.append("m1:"); } + public void m2() {A. buf.append("m2:"); } + public void m3() throws Exception { throw new Exception("from m3"); } +} + +aspect A { + static StringBuffer buf = new StringBuffer(); + + static List heldProceeds = new LinkedList(); + + int cnt = 0; + + void around (): call(void C.m*()) { + heldProceeds.add(new Runnable() { public void run() { proceed(); cnt++; } }); + + class MyRun implements Runnable { + public void run() { System.out.println("run"); } + public void m() { Tester.note("m"); } + } + + MyRun mr = new MyRun(); + mr.m(); + } + + before(): call(void C.m2()) { + new Runnable() { + public void run() { buf.append("b:"); } + }.run(); + } + + public static void runProceeds() { + for (Iterator i = heldProceeds.iterator(); i.hasNext(); ) { + ((Runnable)i.next()).run(); + } + } +} |