public void UndoRedo_GroupTest_SingleGroupItemCollapses() { var undoredo = new UndoRedoManager(); var group = new UndoableGroupAction("w/e"); group.Add(new LambdaUndoableAction("Nothing", () => { }, () => { })); undoredo.ExecuteAction(group); Assert.IsTrue(undoredo.AnyUndos); Assert.AreEqual(1, undoredo.UndoStack.Count); Assert.AreEqual("Nothing", undoredo.UndoStack.First().DisplayName); }
public void UndoRedo_GroupTest() { var manager = new UndoRedoManager(); int value = 9; var groupAction = new UndoableGroupAction("Lots of math", "MATH"); groupAction.Add(new LambdaUndoableAction("Add 3", () => value += 3, () => value -= 3)); groupAction.Add(new LambdaUndoableAction("Div 2", () => value /= 2, () => value *= 2)); Assert.IsFalse(manager.AnyUndos); Assert.IsFalse(manager.AnyRedos); Assert.AreEqual(0, manager.UndoStack.Count); Assert.AreEqual(0, manager.RedoStack.Count); manager.ExecuteAction(groupAction); Assert.AreEqual(6, value); Assert.IsTrue(manager.AnyUndos); Assert.IsFalse(manager.AnyRedos); Assert.AreEqual(1, manager.UndoStack.Count); Assert.AreEqual(0, manager.RedoStack.Count); Assert.IsTrue(manager.Undo()); Assert.AreEqual(9, value); Assert.IsFalse(manager.AnyUndos); Assert.IsTrue(manager.AnyRedos); Assert.AreEqual(0, manager.UndoStack.Count); Assert.AreEqual(1, manager.RedoStack.Count); Assert.IsTrue(manager.Redo()); Assert.AreEqual(6, value); Assert.IsTrue(manager.AnyUndos); Assert.IsFalse(manager.AnyRedos); Assert.AreEqual(1, manager.UndoStack.Count); Assert.AreEqual(0, manager.RedoStack.Count); }