public void TestOnExecuteDone()
        {
            bool          myFlag = false;
            IChainCommand cmd    = new BasicChainCommand();

            cmd.OnExecuteDone(delegate() {
                myFlag = true;
            });
            cmd.Execute();
            Assert.IsTrue((myFlag));
        }
        public void TestChainedExecute()
        {
            IChainCommand cmd1   = new BasicChainCommand();
            bool          myFlag = false;

            cmd1.OnExecuteDone(delegate() {
                myFlag = true;
            });

            IChainCommand            cmd2 = new BasicChainCommand();
            Mock <BasicChainCommand> cmd3 = new Mock <BasicChainCommand>()
            {
                CallBase = true
            };

            cmd1.Chain(cmd2).Chain(cmd3.Object);

            cmd1.Execute();

            cmd3.Verify(c => c.Execute(), Times.Once);
            Check.That(myFlag).IsTrue();
        }