Beispiel #1
0
        public void Test()
        {
            var originator = new Originator();

            originator.SaveCheckpoint();

            originator.IncreaseY();
            originator.DecreaseX();
            originator.SaveCheckpoint();

            originator.UpdateX(2);
            originator.SaveCheckpoint();

            originator.UpdateX(3);
            originator.IncreaseY();

            Assert.AreEqual <int>(3, originator.Current.X);
            Assert.AreEqual <int>(2, originator.Current.Y);

            originator.Undo();
            Assert.AreEqual <int>(2, originator.Current.X);
            Assert.AreEqual <int>(1, originator.Current.Y);

            originator.Undo();
            Assert.AreEqual <int>(-1, originator.Current.X);
            Assert.AreEqual <int>(1, originator.Current.Y);
        }
        public void Test1()
        {
            Originator ori = new Originator();

            ori.SaveCheckpoint(); // x = 0, y = 0

            ori.IncreaseY();
            ori.DecreaseX();
            ori.SaveCheckpoint(); // x = -1, y = 1

            ori.UpdateX(2);
            ori.SaveCheckpoint(); // x = 2, y = 1

            ori.UpdateX(3);
            ori.IncreaseY(); // x = 3, y = 1

            Assert.AreEqual(3, ori.Current.X);
            Assert.AreEqual(2, ori.Current.Y);

            ori.Undo();
            Assert.AreEqual(2, ori.Current.X);
            Assert.AreEqual(1, ori.Current.Y);

            ori.Undo();
            Assert.AreEqual(-1, ori.Current.X);
            Assert.AreEqual(1, ori.Current.Y);
        }
        public void Main()
        {
            var o1 = new Originator();

            o1.IncreaseY();
            o1.SaveCheckpoint(1);
            o1.IncreaseY();
            o1.SaveCheckpoint(2);
            var o2 = new Originator();

            o2.UpdateX(3);
            o2.SaveCheckpoint(2);

            o1.Undo(1);
            Assert.AreEqual <int>(0, o1.Current.X);
            Assert.AreEqual <int>(1, o1.Current.Y);
            o2.Undo(2);
            Assert.AreEqual <int>(3, o2.Current.X);
            Assert.AreEqual <int>(0, o2.Current.Y);
        }
        public void Main()
        {
            // 定义两个独立的发起者实例,他们分别修改状态
            var o1 = new Originator();

            o1.IncreaseY(); // x = 0; y = 1;
            o1.SaveCheckpoint(1);
            o1.IncreaseY(); // x = 0; y = 2
            o1.SaveCheckpoint(2);
            var o2 = new Originator();

            o2.UpdateX(3);  // x = 3; y = 0
            o2.SaveCheckpoint(2);

            // 验证发起者类型可以借助外部持久机制保存多分
            // 备案,而且不同实例可以独立使用持久机制
            o1.Undo(1);
            Assert.AreEqual <int>(0, o1.Current.X);
            Assert.AreEqual <int>(1, o1.Current.Y);
            o2.Undo(2);
            Assert.AreEqual <int>(3, o2.Current.X);
            Assert.AreEqual <int>(0, o2.Current.Y);
        }
Beispiel #5
0
        public void Test()
        {
            Originator originator = new Originator();

            // 保存原发器刚初始化后的状态
            originator.SaveCheckpoint();    // x = 0, y = 0

            // 对原发器进行修改 1
            originator.IncreaseY();
            originator.DecreaseX();
            originator.SaveCheckpoint();    // x = -1, y = 1

            // 对原发器进行修改 2
            originator.UpdateX(2);
            originator.SaveCheckpoint();    // x = 2, y = 1

            // 对原发器进行修改 3
            originator.UpdateX(3);
            originator.IncreaseY();         // x = 3, y = 2


            // 确认Undo前的状态
            Assert.AreEqual <int>(3, originator.Current.X);
            Assert.AreEqual <int>(2, originator.Current.Y);


            // 确认备忘录的栈式恢复作用——恢复到修改
            originator.Undo();
            Assert.AreEqual <int>(2, originator.Current.X);
            Assert.AreEqual <int>(1, originator.Current.Y);

            // 确认备忘录的栈式恢复作用——恢复到修改1
            originator.Undo();
            Assert.AreEqual <int>(-1, originator.Current.X);
            Assert.AreEqual <int>(1, originator.Current.Y);
        }
Beispiel #6
0
        public void Test()
        {
            Originator originator = new Originator();

            // 保存原发器刚初始化后的状态
            originator.SaveCheckpoint();

            // 对原发器进行操作,验证状态的修改
            originator.IncreaseY();
            originator.DecreaseX();

            // 确认备忘录的恢复作用
            originator.Undo();
            Assert.AreEqual <int>(0, originator.Current.Y);
            Assert.AreEqual <int>(0, originator.Current.X);
        }
Beispiel #7
0
        public void Test1()
        {
            Originator ori = new Originator();

            Assert.AreEqual(0, ori.Current.Y);
            Assert.AreEqual(0, ori.Current.X);

            IMemento <Position> m1 = ori.Memento;

            ori.IncreaseY();
            ori.DecreaseX();
            Assert.AreEqual(1, ori.Current.Y);
            Assert.AreEqual(-1, ori.Current.X);

            ori.Memento = m1;
            Assert.AreEqual(0, ori.Current.Y);
            Assert.AreEqual(0, ori.Current.X);
        }
Beispiel #8
0
        public void Test()
        {
            var originator = new Originator();

            Assert.AreEqual <int>(0, originator.Current.Y);
            Assert.AreEqual <int>(0, originator.Current.X);
            // 保存发起者刚初始化的状态
            var m1 = originator.Memento;

            // 对发起者进行操作,验证状态的修改
            originator.IncreaseY();
            originator.DecreaseX();
            Assert.AreEqual <int>(1, originator.Current.Y);
            Assert.AreEqual <int>(-1, originator.Current.X);

            // 确认备忘录的恢复作用
            originator.Memento = m1;
            Assert.AreEqual <int>(0, originator.Current.Y);
            Assert.AreEqual <int>(0, originator.Current.X);
        }
        public void Test()
        {
            Originator originator = new Originator();

            Assert.AreEqual <int>(0, originator.Current.Y);
            Assert.AreEqual <int>(0, originator.Current.X);
            // 保存原发器刚初始化后的状态
            IMemento <Position> m1 = originator.Memento;

            // 对原发器进行操作,验证状态的修改
            originator.IncreaseY();
            originator.DecreaseX();
            Assert.AreEqual <int>(1, originator.Current.Y);
            Assert.AreEqual <int>(-1, originator.Current.X);

            // 确认备忘录的恢复作用
            originator.Memento = m1;
            Assert.AreEqual <int>(0, originator.Current.Y);
            Assert.AreEqual <int>(0, originator.Current.X);
        }