/************************************************************************************** * Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. * * http://aspectwerkz.codehaus.org * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the LGPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package test.mixin.perjvm; import java.lang.reflect.Method; import java.lang.reflect.Field; import java.io.Serializable; import junit.framework.TestCase; import test.SerialVerUidTest; /** * @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a> * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur </a> */ public class IntroductionTest extends TestCase { public void testIntroducedComesFromInterfaces() { Class klass = ToBeIntroduced.class.getClass(); try { Method m = klass.getDeclaredMethod("NOT_IN_MIXIN_INTF", new Class[0]); fail("should not have introduced : " + m); } catch (NoSuchMethodException e) { ;//ok } } public void testSerialVer() { // a field should have been added try { Field f = ToBeIntroduced.class.getDeclaredField("serialVersionUID"); } catch (Throwable t) { fail(t.toString()); } } public void testMixinInterface() { ToBeIntroduced target = new ToBeIntroduced(); assertTrue(target instanceof Introductions); } public void testSome() { ToBeIntroduced target = new ToBeIntroduced(); ((Introductions)target).noArgs(); ToBeIntroduced target2 = new ToBeIntroduced(); assertEquals(2, ((Introductions)target2).intArg(2)); // only one mixin instance assertEquals(1, MyImpl.s_count); } public void testParams() { assertEquals("v1", MyImpl.s_params.get("p1")); assertEquals("v2", MyImpl.s_params.get("p2")); } //-- junit public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static junit.framework.Test suite() { return new junit.framework.TestSuite(IntroductionTest.class); } }