public void TestExecuteAndUndo() { var testClass = new TestClass(); var command = new SerializableReversibleCommand <TestClass>(testClass, t => t.IncreaseNumber(), t => t.DecreaseNumber()); command.Execute(); command.UndoExecute(); Assert.AreEqual(0, testClass.number); }
public void TestExecuteAndUndoAdvanced() { var testClass = new TestClass(); testClass.number = 10; // Please note that we copy the old number, otherwise if we would set the undo action as following: // t => t.SetNumber(t.number) will actually call SetNumber with a reference to the t class! int oldNumber = testClass.number; var command = new SerializableReversibleCommand <TestClass>(testClass, t => t.SetNumber(77), t => t.SetNumber(oldNumber)); Assert.AreEqual(10, testClass.number); command.Execute(); Assert.AreEqual(77, testClass.number); command.UndoExecute(); Assert.AreEqual(10, testClass.number); }