public void TestMixMatchExecute()
        {
            var testClass = new TestClass();
            var commands  = TestHelper.GenerateMixedCommands(10, testClass, t => t.IncreaseNumber(), t => t.DecreaseNumber());

            foreach (var command in commands)
            {
                command.Execute();
            }
            Assert.AreEqual(10, testClass.number);
        }
        public void TestMixMatchExecuteUndo()
        {
            var testClass = new TestClass();
            var commands  = TestHelper.GenerateMixedCommands(10, testClass, t => t.IncreaseNumber(), t => t.DecreaseNumber());

            foreach (var command in commands)
            {
                command.Execute();
                if (command is IReversibleCommand)
                {
                    (command as IReversibleCommand).UndoExecute();
                }
            }

            Assert.AreEqual(5, testClass.number);
        }