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); }
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); }
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); }
public void Undo_NoInvocationsRegistered_ThrowsException() { var target = new UndoManager(); Assert.Throws <InvalidOperationException>(() => target.Undo()); }