Example #1
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
        }