public void WhenDoThreeCommands() { var stack = new UndoRedoStack(); var command1 = MockRepository.GenerateMock<ICommand>(); var command2 = MockRepository.GenerateMock<ICommand>(); var command3 = MockRepository.GenerateMock<ICommand>(); stack.Do(command1); stack.Do(command2); stack.Do(command3); Assert.IsTrue(stack.CanUndo(command3)); Assert.IsFalse(stack.CanUndo(command2)); Assert.IsFalse(stack.CanUndo(command1)); stack.Undo(command3); Assert.IsTrue(stack.CanRedo(command3)); Assert.IsTrue(stack.CanUndo(command2)); Assert.IsFalse(stack.CanUndo(command1)); stack.Undo(command2); Assert.IsFalse(stack.CanRedo(command3)); Assert.IsFalse(stack.CanUndo(command2)); Assert.IsTrue(stack.CanRedo(command2)); Assert.IsTrue(stack.CanUndo(command1)); stack.Undo(command1); Assert.IsTrue(stack.CanRedo(command1)); Assert.IsFalse(stack.CanRedo(command2)); }
public void ShouldTrackUndoAndRedos() { var stack = new UndoRedoStack(); var command = MockRepository.GenerateMock<ICommand>(); stack.Do(command); Assert.IsTrue(stack.CanUndo(command)); stack.Undo(command); Assert.IsFalse(stack.CanUndo(command)); Assert.IsTrue(stack.CanRedo(command)); }