public void ExplicitInterfaceMethods_AreIgnored_OnClassProxy()
        {
            LogInvocationInterceptor   interceptor = new LogInvocationInterceptor();
            ClassWithExplicitInterface instance    = generator.CreateClassProxy <ClassWithExplicitInterface>(interceptor);

            instance.DoVirtual();
            int result = ((ISimpleInterface)instance).Do();

            instance.DoVirtual();

            Assert.AreEqual(2, interceptor.Invocations.Count);
            Assert.AreEqual("DoVirtual", interceptor.Invocations[0]);
            Assert.AreEqual("DoVirtual", interceptor.Invocations[1]);

            Assert.AreEqual(5, result);
        }
        public void ExplicitInterface_AsAdditionalInterfaceToProxy_OnClassProxy_WithoutBaseCalls()
        {
            LogInvocationInterceptor interceptor = new LogInvocationInterceptor();

            interceptor.Proceed = false;

            ClassWithExplicitInterface instance = (ClassWithExplicitInterface)generator.CreateClassProxy(typeof(ClassWithExplicitInterface),
                                                                                                         new[] { typeof(ISimpleInterface) }, interceptor);

            instance.DoVirtual();
            int result = ((ISimpleInterface)instance).Do();

            instance.DoVirtual();

            Assert.AreEqual(3, interceptor.Invocations.Count);
            Assert.AreEqual("DoVirtual", interceptor.Invocations[0]);
            Assert.AreEqual("Do", interceptor.Invocations[1]);
            Assert.AreEqual("DoVirtual", interceptor.Invocations[2]);

            Assert.AreEqual(0, result);              // indicates that original method was not called
        }