public void TestModificationUndoRedo00() { // Ensure the recorder is in its default states. Assert.AreEqual(false, recorder.CanUndo); Assert.AreEqual(false, recorder.CanRedo); // Add a model into workspace, make sure it exists. workspace.AddModel(new DummyModel(1, 10)); DummyModel inserted = workspace.GetModel(1); Assert.AreNotEqual(null, inserted); Assert.AreEqual(10, inserted.Radius); // Make sure we can now undo. Assert.AreEqual(true, recorder.CanUndo); Assert.AreEqual(false, recorder.CanRedo); // Double the radius property... workspace.ModifyModel(1); DummyModel modified = workspace.GetModel(1); Assert.AreNotEqual(null, modified); Assert.AreEqual(20, modified.Radius); // Make sure we can still undo. Assert.AreEqual(true, recorder.CanUndo); Assert.AreEqual(false, recorder.CanRedo); recorder.Undo(); // Undo the modification (undo's still possible). Assert.AreEqual(true, recorder.CanUndo); Assert.AreEqual(true, recorder.CanRedo); // Make sure the modification has been undone DummyModel undone = workspace.GetModel(1); Assert.AreNotEqual(null, undone); Assert.AreEqual(10, undone.Radius); recorder.Redo(); // Redo the modification. Assert.AreEqual(true, recorder.CanUndo); Assert.AreEqual(false, recorder.CanRedo); // Make sure the modification has been undone DummyModel redone = workspace.GetModel(1); Assert.AreNotEqual(null, redone); Assert.AreEqual(20, redone.Radius); }