Exemple #1
0
        public void Undo_InvocationRegistered_InvokesUndoOperation()
        {
            var target = new UndoManager();

            var invokableMock = new Mock <IInvokable>(MockBehavior.Loose);

            target.RegisterInvokation(invokableMock.Object);

            target.Undo();

            invokableMock.Verify(i => i.Invoke(), Times.Once());
            Assert.False(target.CanUndo);
            Assert.False(target.CanRedo);
        }
        public void Undo_TransactionNotCommited_CommitsTransactionAndInvokesUndoOperation()
        {
            UndoManager target = new UndoManager();

            Mock <IInvokable> invokableMock = new Mock <IInvokable>(MockBehavior.Loose);

            ITransaction transaction = target.CreateTransaction();

            target.RegisterInvokation(invokableMock.Object);

            target.Undo();

            invokableMock.Verify(i => i.Invoke(), Times.Once());
            Assert.False(target.CanUndo);
            Assert.False(target.CanRedo);
        }
        public void Undo_InvocationRegisteredWithTransaction_InvokesUndoOperation()
        {
            UndoManager target = new UndoManager();

            Mock <IInvokable> invokableMock = new Mock <IInvokable>(MockBehavior.Loose);

            using (ITransaction transaction = target.CreateTransaction())
            {
                target.RegisterInvokation(invokableMock.Object);
            }

            target.Undo();

            invokableMock.Verify(i => i.Invoke(), Times.Once());
            Assert.False(target.CanUndo);
            Assert.False(target.CanRedo);
        }
Exemple #4
0
        public void Undo_UndoOperationRegistersInvocations_InvocationsAreRegisteredInRedoStack()
        {
            var target = new UndoManager();

            var invokableMock = new Mock <ITarget>(MockBehavior.Strict);

            invokableMock.Setup(i => i.UndoOperation())
            .Callback(() => target.RegisterInvokation(invokableMock.Object, i => i.RedoOperation()));

            target.RegisterInvokation(invokableMock.Object, i => i.UndoOperation());

            target.Undo();

            invokableMock.Verify(i => i.UndoOperation(), Times.Once());
            invokableMock.Verify(i => i.RedoOperation(), Times.Never());
            Assert.False(target.CanUndo);
            Assert.True(target.CanRedo);
        }
Exemple #5
0
        public void Redo_RedoOperationAvailable_InvokesRedoOperation()
        {
            var target = new UndoManager();

            var invokableMock = new Mock <ITarget>(MockBehavior.Strict);

            invokableMock.Setup(i => i.UndoOperation())
            .Callback(() => target.RegisterInvokation(invokableMock.Object, i => i.RedoOperation()));
            invokableMock.Setup(i => i.RedoOperation());

            target.RegisterInvokation(invokableMock.Object, i => i.UndoOperation());

            target.Undo();
            target.Redo();

            invokableMock.Verify(i => i.UndoOperation(), Times.Once());
            invokableMock.Verify(i => i.RedoOperation(), Times.Once());
            Assert.False(target.CanUndo);
            Assert.False(target.CanRedo);
        }
Exemple #6
0
        public void Undo_NoInvocationsRegistered_ThrowsException()
        {
            var target = new UndoManager();

            Assert.Throws <InvalidOperationException>(() => target.Undo());
        }