예제 #1
0
            public void MaximumSupportedOperationsTest()
            {
                var mementoService = new MementoService(5);
                var listUndoOps    = new List <MockUndo>();

                for (var i = 0; i < 10; i++)
                {
                    var memento = new MockUndo()
                    {
                        Value = i
                    };
                    mementoService.Add(memento);
                    listUndoOps.Add(memento);
                }

                var count = 0;

                while (mementoService.CanUndo)
                {
                    mementoService.Undo();
                    count++;
                }

                for (var i = 0; i < 5; i++)
                {
                    Assert.IsFalse(listUndoOps[i].UndoCalled);
                }

                for (var i = 5; i < 10; i++)
                {
                    Assert.IsTrue(listUndoOps[i].UndoCalled);
                }

                Assert.AreEqual(count, mementoService.MaximumSupportedBatches);
            }
예제 #2
0
            public void MaximumSupportedOperationsTest()
            {
                var mementoService = new MementoService(5);
                var listUndoOps = new List<MockUndo>();

                for (var i = 0; i < 10; i++)
                {
                    var memento = new MockUndo() {Value = i};
                    mementoService.Add(memento);
                    listUndoOps.Add(memento);
                }

                var count = 0;
                while (mementoService.CanUndo)
                {
                    mementoService.Undo();
                    count++;
                }

                for (var i = 0; i < 5; i++)
                {
                    Assert.IsFalse(listUndoOps[i].UndoCalled);
                }

                for (var i = 5; i < 10; i++)
                {
                    Assert.IsTrue(listUndoOps[i].UndoCalled);
                }

                Assert.AreEqual(count, mementoService.MaximumSupportedBatches);
            }
예제 #3
0
            public void CanRedoNak()
            {
                var mock1 = new MockUndo(true);
                var mock2 = new MockUndo();

                var operationSet = new OperationSet(this);
                operationSet.Add(mock1);
                operationSet.Add(mock2);

                Assert.IsFalse(operationSet.CanRedo);
            }
예제 #4
0
        public void CanRedoTest_NAK()
        {
            MockUndo m1 = new MockUndo(true);
            MockUndo m2 = new MockUndo(false);

            UndoOperationSet target = new UndoOperationSet();

            target.Add(m1);
            target.Add(m2);

            Assert.IsFalse(target.CanRedo);
        }
예제 #5
0
            public void PreventsAdditionsWhenDisabled()
            {
                var mementoService = new MementoService();

                mementoService.IsEnabled = false;

                var undo1 = new MockUndo(true);

                mementoService.Add(undo1);

                Assert.IsFalse(mementoService.CanRedo);
            }
예제 #6
0
            public void CanRedoNak()
            {
                var mock1 = new MockUndo(true);
                var mock2 = new MockUndo();

                var operationSet = new OperationSet(this);

                operationSet.Add(mock1);
                operationSet.Add(mock2);

                Assert.IsFalse(operationSet.CanRedo);
            }
예제 #7
0
            public void RedoTest()
            {
                var mock1 = new MockUndo(true);
                var mock2 = new MockUndo(true);

                var operationSet = new OperationSet(this);
                operationSet.Add(mock1);
                operationSet.Add(mock2);

                operationSet.Redo();
                Assert.IsTrue(mock1.RedoCalled);
                Assert.IsTrue(mock2.RedoCalled);
            }
예제 #8
0
            public void RedoTest()
            {
                var mock1 = new MockUndo(true);
                var mock2 = new MockUndo(true);

                var operationSet = new OperationSet(this);

                operationSet.Add(mock1);
                operationSet.Add(mock2);

                operationSet.Redo();
                Assert.IsTrue(mock1.RedoCalled);
                Assert.IsTrue(mock2.RedoCalled);
            }
예제 #9
0
        public void RedoTest()
        {
            UndoManager undoManager = new UndoManager();
            MockUndo    undo1       = new MockUndo(true);

            undoManager.Add(undo1);
            undoManager.Undo();
            Assert.IsTrue(undo1.undoCalled);
            Assert.IsFalse(undo1.redoCalled);
            Assert.IsTrue(undoManager.CanRedo);
            undoManager.Redo();
            Assert.IsTrue(undo1.redoCalled);
            Assert.IsFalse(undoManager.CanRedo);
        }
예제 #10
0
            public void UndoTest()
            {
                var mementoService = new MementoService();
                var undo1          = new MockUndo();
                var undo2          = new MockUndo();

                mementoService.Add(undo1);
                mementoService.Add(undo2);

                mementoService.Undo();
                Assert.IsTrue(undo2.UndoCalled);
                Assert.IsFalse(undo1.UndoCalled);
                Assert.IsTrue(mementoService.CanUndo);
            }
예제 #11
0
        public void RedoTest()
        {
            MockUndo m1 = new MockUndo(true);
            MockUndo m2 = new MockUndo(true);

            UndoOperationSet target = new UndoOperationSet();

            target.Add(m1);
            target.Add(m2);

            target.Redo();
            Assert.IsTrue(m1.redoCalled);
            Assert.IsTrue(m2.redoCalled);
        }
예제 #12
0
        public void UndoTest()
        {
            UndoManager undoManager = new UndoManager();
            MockUndo    undo1       = new MockUndo();
            MockUndo    undo2       = new MockUndo();

            undoManager.Add(undo1);
            undoManager.Add(undo2);

            undoManager.Undo();
            Assert.IsTrue(undo2.undoCalled);
            Assert.IsFalse(undo1.undoCalled);
            Assert.IsTrue(undoManager.CanUndo);
        }
예제 #13
0
            public void UndoOrderTest()
            {
                var finalValue = 0;
                var mock1 = new MockUndo(true);

                var operationSet = new OperationSet(this);
                operationSet.Add(mock1);
                operationSet.Add(new ActionUndo(this, () => finalValue = 1));
                operationSet.Add(new ActionUndo(this, () => finalValue = 2));

                operationSet.Undo();

                Assert.IsTrue(mock1.UndoCalled);
                Assert.AreEqual(1, finalValue);
            }
예제 #14
0
            public void UndoOrderTest()
            {
                var finalValue = 0;
                var mock1      = new MockUndo(true);

                var operationSet = new OperationSet(this);

                operationSet.Add(mock1);
                operationSet.Add(new ActionUndo(this, () => finalValue = 1));
                operationSet.Add(new ActionUndo(this, () => finalValue = 2));

                operationSet.Undo();

                Assert.IsTrue(mock1.UndoCalled);
                Assert.AreEqual(1, finalValue);
            }
예제 #15
0
        public void UndoOrderTest()
        {
            int      finalValue = 0;
            MockUndo m1         = new MockUndo(true);

            UndoOperationSet target = new UndoOperationSet();

            target.Add(m1);
            target.Add(new DelegateUndo(() => finalValue = 1));
            target.Add(new DelegateUndo(() => finalValue = 2));

            target.Undo();

            Assert.IsTrue(m1.undoCalled);
            Assert.AreEqual(1, finalValue);
        }
예제 #16
0
            public void RaisesChangeRecordedEvent()
            {
                var mementoService = new MementoService();

                var success = false;

                mementoService.Updated += (sender, e) =>
                {
                    if (e.MementoAction == MementoAction.ChangeRecorded)
                    {
                        success = true;
                    }
                };

                var undo1 = new MockUndo();

                mementoService.Add(undo1);

                Assert.IsTrue(success);
            }
예제 #17
0
        public void MaxSupportedOperationsTest()
        {
            UndoManager target = new UndoManager {
                MaxSupportedOperations = 5
            };
            List <MockUndo> listUndoOps = new List <MockUndo>();

            for (int i = 0; i < 10; i++)
            {
                MockUndo undoObj = new MockUndo()
                {
                    Value = i
                };
                target.Add(undoObj);
                listUndoOps.Add(undoObj);
            }

            int count = 0;

            while (target.CanUndo)
            {
                target.Undo();
                count++;
            }

            // Should have called final 5.. skipped first 5.
            for (int i = 0; i < 5; i++)
            {
                Assert.IsFalse(listUndoOps[i].undoCalled);
            }
            for (int i = 5; i < 10; i++)
            {
                Assert.IsTrue(listUndoOps[i].undoCalled);
            }

            Assert.AreEqual(count, target.MaxSupportedOperations);
        }
예제 #18
0
            public void PreventsAdditionsWhenDisabled()
            {
                var mementoService = new MementoService();
                mementoService.IsEnabled = false;

                var undo1 = new MockUndo(true);
                mementoService.Add(undo1);

                Assert.IsFalse(mementoService.CanRedo);
            }
예제 #19
0
            public void UndoTest()
            {
                var mementoService = new MementoService();
                var undo1 = new MockUndo();
                var undo2 = new MockUndo();

                mementoService.Add(undo1);
                mementoService.Add(undo2);

                mementoService.Undo();
                Assert.IsTrue(undo2.UndoCalled);
                Assert.IsFalse(undo1.UndoCalled);
                Assert.IsTrue(mementoService.CanUndo);
            }