public void SetUp() #endif { simpleMixin = new SimpleMixin(); otherMixin = new OtherMixin(); complexMixin = new ComplexMixin(); }
public void TestTypeCachingWithMultipleMixins() { ProxyGenerationOptions options = new ProxyGenerationOptions(); SimpleMixin mixin_instance1 = new SimpleMixin(); ComplexMixin mixin_instance2 = new ComplexMixin(); options.AddMixinInstance(mixin_instance1); options.AddMixinInstance(mixin_instance2); AssertInvocationInterceptor interceptor = new AssertInvocationInterceptor(); object proxy1 = generator.CreateClassProxy(typeof (SimpleClass), options, interceptor); options = new ProxyGenerationOptions(); mixin_instance1 = new SimpleMixin(); mixin_instance2 = new ComplexMixin(); options.AddMixinInstance(mixin_instance2); options.AddMixinInstance(mixin_instance1); interceptor = new AssertInvocationInterceptor(); object proxy2 = generator.CreateClassProxy(typeof (SimpleClass), options, interceptor); Assert.IsTrue(proxy1.GetType().Equals(proxy2.GetType())); }
public void MixinImplementingMoreThanOneInterface() { ProxyGenerationOptions proxyGenerationOptions = new ProxyGenerationOptions(); ComplexMixin mixin_instance = new ComplexMixin(); proxyGenerationOptions.AddMixinInstance(mixin_instance); AssertInvocationInterceptor interceptor = new AssertInvocationInterceptor(); object proxy = generator.CreateClassProxy( typeof (SimpleClass), proxyGenerationOptions, interceptor); Assert.IsNotNull(proxy); Assert.IsTrue(typeof (SimpleClass).IsAssignableFrom(proxy.GetType())); Assert.IsFalse(interceptor.Invoked); IThird inter3 = proxy as IThird; Assert.IsNotNull(inter3); inter3.DoThird(); Assert.IsTrue(interceptor.Invoked); Assert.AreSame(proxy, interceptor.proxy); Assert.AreSame(mixin_instance, interceptor.mixin); ISecond inter2 = proxy as ISecond; Assert.IsNotNull(inter2); inter2.DoSecond(); Assert.IsTrue(interceptor.Invoked); Assert.AreSame(proxy, interceptor.proxy); Assert.AreSame(mixin_instance, interceptor.mixin); IFirst inter1 = proxy as IFirst; Assert.IsNotNull(inter1); inter1.DoFirst(); Assert.IsTrue(interceptor.Invoked); Assert.AreSame(proxy, interceptor.proxy); Assert.AreSame(mixin_instance, interceptor.mixin); }