private void RunTestAndCheckIfOneItemLogged(Action <ILogger <object>, WindsorContainer> testAction)
        {
            WindsorContainer       container = new WindsorContainer();
            TestLogOutput <object> logOutput = new TestLogOutput <object>();
            ILogger <object>       logger    = LoggerFactory.Create <object>().WriteTo(logOutput);

            logger.BindToWindsor(container.Kernel);

            testAction(logger, container);

            Assert.AreEqual(1, logOutput.LogDataCount);
        }
        public void DecoratorsMethodsShouldBeLoggable()
        {
            WindsorContainer       container = new WindsorContainer();
            TestLogOutput <object> logOutput = new TestLogOutput <object>();
            ILogger <object>       logger    = LoggerFactory.Create <object>().WriteTo(logOutput);

            logger.BindToWindsor(container.Kernel);

            logger.LogInvocationOf <TestClass>(t => t.TestMethod());
            logger.LogInvocationOf <TestClassDecorator>(t => t.TestMethod());

            container.Register(Component.For <ITest>().ImplementedBy <TestClassDecorator>());
            container.Register(Component.For <ITest>().ImplementedBy <TestClass>());

            container.Resolve <ITest>().TestMethod();

            Assert.AreEqual(2, logOutput.LogDataCount);
        }