public void ExecuteShouldInvokeCommand()
        {
            // arrange
            var pre = new Mock<Action<object>>();
            var post = new Mock<Action<object>>();

            pre.Setup( f => f( It.IsAny<object>() ) );
            post.Setup( f => f( It.IsAny<object>() ) );

            var command = new Mock<INotifyCommandChanged>();

            command.Setup( c => c.Execute( It.IsAny<object>() ) ).Raises( c => c.Executed += null, EventArgs.Empty );

            var interceptor = new CommandInterceptor<object>( pre.Object, post.Object, command.Object );
            var raised = false;

            interceptor.Executed += ( s, e ) => raised = true;

            // act
            interceptor.Execute();

            // assert
            pre.Verify( f => f( null ), Times.Once() );
            command.Verify( c => c.Execute( null ), Times.Once() );
            post.Verify( f => f( null ), Times.Once() );
            Assert.True( raised );
        }