1 /***************************************************************************************
2 * Copyright (c) Jonas BonŽr, Alexandre Vasseur. All rights reserved. *
3 * http://aspectwerkz.codehaus.org *
4 * ---------------------------------------------------------------------------------- *
5 * The software in this package is published under the terms of the LGPL license *
6 * a copy of which has been included with this distribution in the license.txt file. *
7 **************************************************************************************/
8 package test.mixindeployment;
9
10 import junit.framework.TestCase;
11
12 /***
13 * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur </a>
14 */
15 public class IntroductionDeploymentTest extends TestCase {
16 public IntroductionDeploymentTest(String s) {
17 super(s);
18 }
19
20 public void testPerInstanceMixin() {
21 TargetA a1 = new TargetA();
22 TargetA a2 = new TargetA();
23 TargetB b = new TargetB();
24 Marker m1 = (Marker) a1;
25 Object o1 = m1.getTargetInstance();
26 assertEquals(a1, ((Marker) a1).getTargetInstance());
27 assertNotSame(((Marker) a1).getTargetInstance(), ((Marker) a2).getTargetInstance());
28 assertEquals(((Marker) a1).getTargetClass(), ((Marker) a2).getTargetClass());
29 assertEquals(b, ((Marker) b).getTargetInstance());
30 assertEquals(b.getClass(), ((Marker) b).getTargetClass());
31 }
32
33 public void testPerClassMixin() {
34 TargetC c1 = new TargetC();
35 TargetC c2 = new TargetC();
36 assertNull(((Marker) c1).getTargetInstance());
37 assertEquals(((Marker) c1).getTargetClass(), ((Marker) c2).getTargetClass());
38 }
39
40 public void testHashcodeMixin() {
41 TargetD d = new TargetD();
42 d.doD();
43 assertEquals(2, d.hashCode());
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(IntroductionDeploymentTest.class);
52 }
53
54 public class TargetA {
55 }
56
57 public class TargetB {
58 }
59
60 public class TargetC {
61 }
62
63 public class TargetD {
64 public void doD() {
65 }
66 }
67 }