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 RegisterInvocation_WithTransaction_RegistersInvocationWithPublicTransaction() { TransactionFactoryStub factory = new TransactionFactoryStub(); UndoManager target = new UndoManager(factory); factory.Transaction = new TransactionStub(target); Mock <IInvokable> invokableMock = new Mock <IInvokable>(MockBehavior.Strict); using (ITransaction transaction = target.CreateTransaction()) { target.RegisterInvokation(invokableMock.Object); } Assert.True(factory.TransactionCreated); Assert.True(((TransactionStub)factory.Transaction).InvokationRegistered); Assert.True(((TransactionStub)factory.Transaction).Commited); Assert.True(target.CanUndo); Assert.False(target.CanRedo); }