public void SetUp()
#endif
        {
            simpleMixin  = new SimpleMixin();
            otherMixin   = new OtherMixin();
            complexMixin = new ComplexMixin();
        }
Esempio n. 2
0
        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()));
        }
Esempio n. 3
0
        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);
        }