public void IsChangedTest() { var trackedObject = new StatefulClass { TheString = "One", TheInt = 1 }; var undoService = new UndoService <StatefulClassDto>(trackedObject.GetData, trackedObject.SetData, null); Assert.IsTrue(!undoService.IsStateChanged); trackedObject.TheString = "Two"; undoService.RecordState(); Assert.IsTrue(undoService.IsStateChanged); undoService.Undo(); Assert.IsTrue(!undoService.IsStateChanged); undoService.Redo(); Assert.IsTrue(undoService.IsStateChanged); undoService.ClearIsStateChangedFlag(); Assert.IsTrue(!undoService.IsStateChanged); undoService.Undo(); Assert.IsTrue(undoService.IsStateChanged); undoService.Redo(); Assert.IsTrue(!undoService.IsStateChanged); }