/// <summary>
        /// Adds a new command to the end of this composite command</summary>
        /// <param name="command">Command to add to the end</param>
        public void Add(Command command)
        {
            CompositeCommand compositeCommand = command as CompositeCommand;

            if (compositeCommand != null)
            {
                m_commands.AddRange(compositeCommand.m_commands);
            }
            else
            {
                m_commands.Add(command);
            }
        }
Exemple #2
0
        public void TestCompositeCommand()
        {
            PositiveInt x = new PositiveInt();

            CompositeCommand composite1 = new CompositeCommand("1", new Command[] { new IncCommand(x), new IncCommand(x) });

            composite1.Do();
            Assert.IsTrue(x.Value == 2);
            composite1.Undo();
            Assert.IsTrue(x.Value == 0);

            CompositeCommand composite2 = new CompositeCommand("1", new Command[] { new IncCommand(x), new DecCommand(x), new DecCommand(x) });

            // Try to execute a composite that will cause an exception
            try
            {
                composite2.Do();
                Assert.Fail();
            }
            catch
            {
            }
            Assert.IsTrue(x.Value == 0); // make sure command was backed out
        }