public void ControllerShouldReportUndoRedoStatus() { var testCommand = new AdHocCommand(() => { }, () => { }); var controller = new Controller(); var undoAvailable = false; var redoAvailable = false; controller.UndoAvailabilityChanged += (_, args) => undoAvailable = args.IsAvailable; controller.RedoAvailabilityChanged += (_, args) => redoAvailable = args.IsAvailable; controller.Execute(testCommand); Assert.True(undoAvailable); Assert.False(redoAvailable); controller.Undo(); Assert.False(undoAvailable); Assert.True(redoAvailable); controller.Redo(); Assert.True(undoAvailable); Assert.False(redoAvailable); }
public void ControllerShouldExecuteGivenCommand() { var executed = false; var testCommand = new AdHocCommand(() => executed = true); var controller = new Controller(); controller.Execute(testCommand); Assert.True(executed); }
public void ControllerShouldAllowToUndoCommand() { var executed = false; var undone = false; var testCommand = new AdHocCommand(() => executed = true, () => undone = true); var controller = new Controller(); controller.Execute(testCommand); Assert.True(executed); Assert.False(undone); controller.Undo(); Assert.True(executed); Assert.True(undone); }
public void ControllerShouldAllowToRedoCommand() { var executed = 0; var undone = false; var testCommand = new AdHocCommand(() => ++ executed, () => undone = true); var controller = new Controller(); controller.Execute(testCommand); Assert.AreEqual(1, executed); Assert.False(undone); controller.Undo(); Assert.AreEqual(1, executed); Assert.True(undone); controller.Redo(); Assert.AreEqual(2, executed); }