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();
        }