1 package test.polymorphic;
2
3 import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
4 import org.codehaus.aspectwerkz.joinpoint.MethodRtti;
5 import org.codehaus.aspectwerkz.joinpoint.ConstructorRtti;
6 import org.codehaus.aspectwerkz.joinpoint.Rtti;
7 import junit.framework.TestCase;
8
9 public class PolymorphicTest extends TestCase {
10
11 public static StringBuffer LOG = new StringBuffer("");
12
13 public void testPolymorphicCallJoinPoint() {
14
15 LOG = new StringBuffer("");
16 SubClass child = new SubClass();
17 child.methodTest();
18 assertEquals("call child parent parent 1 ", LOG.toString());
19
20 LOG = new StringBuffer("");
21 SuperClass parent = new SuperClass();
22 parent.methodTest();
23 assertEquals("call parent ", LOG.toString());
24 }
25
26 public void testCtorCall() {
27 LOG = new StringBuffer("");
28 SubClass child = new SubClass("s");
29 assertEquals("callctor parent s child s ", LOG.toString());
30
31 LOG = new StringBuffer("");
32 SuperClass parent = new SuperClass("ss");
33 assertEquals("callctor parent ss ", LOG.toString());
34 }
35
36 public void testCtorExecution() {
37 LOG = new StringBuffer("");
38 SubClass child = new SubClass(0);
39 assertEquals("exector parent 0 exector child 0 ", LOG.toString());
40
41 LOG = new StringBuffer("");
42 SuperClass parent = new SuperClass(1);
43 assertEquals("exector parent 1 ", LOG.toString());
44 }
45
46 public static void main(String[] args) {
47 junit.textui.TestRunner.run(suite());
48 }
49
50 public static junit.framework.Test suite() {
51 return new junit.framework.TestSuite(PolymorphicTest.class);
52 }
53
54
55
56
57 public static class TestAspect {
58
59 public void method1Advise(JoinPoint joinPoint) {
60 MethodRtti mrtti = (MethodRtti) joinPoint.getRtti();
61 LOG.append("call ");
62 }
63
64 public void ctor1Advise(JoinPoint joinPoint) {
65 ConstructorRtti crtti = (ConstructorRtti) joinPoint.getRtti();
66 LOG.append("exector ");
67 }
68
69 public void ctor2Advise(JoinPoint joinPoint) {
70 ConstructorRtti crtti = (ConstructorRtti) joinPoint.getRtti();
71 LOG.append("callctor ");
72 }
73 }
74 }