public void TestSaveUndoSaveRedo() { var actionStack = new TransactionalActionStack(5); using (var manager = new DirtiableManager(actionStack)) { var dirtiable = new SimpleDirtiable(); var action = new SimpleDirtiableActionItem(dirtiable.Yield()); actionStack.Add(action); Assert.AreEqual(true, dirtiable.IsDirty); actionStack.CreateSavePoint(true); manager.NotifySave(); Assert.AreEqual(false, dirtiable.IsDirty); actionStack.Undo(); Assert.AreEqual(true, dirtiable.IsDirty); actionStack.CreateSavePoint(true); manager.NotifySave(); Assert.AreEqual(false, dirtiable.IsDirty); actionStack.Redo(); Assert.AreEqual(true, dirtiable.IsDirty); actionStack.CreateSavePoint(true); manager.NotifySave(); Assert.AreEqual(false, dirtiable.IsDirty); } }
public void TestDoAction() { var actionStack = new TransactionalActionStack(5); using (new DirtiableManager(actionStack)) { var dirtiable = new SimpleDirtiable(); var action = new SimpleDirtiableActionItem(dirtiable.Yield()); actionStack.Add(action); Assert.AreEqual(true, dirtiable.IsDirty); } }
public void TestEvent() { var actionStack = new TransactionalActionStack(5); int eventCount = 0; using (new DirtiableManager(actionStack)) { var dirtiable = new SimpleDirtiable(); dirtiable.DirtinessUpdated += (sender, e) => { Assert.AreEqual(eventCount != 0, e.OldValue); Assert.AreEqual(true, e.NewValue); eventCount++; }; Assert.AreEqual(false, dirtiable.IsDirty); actionStack.Add(new SimpleDirtiableActionItem(dirtiable.Yield())); Assert.AreEqual(true, dirtiable.IsDirty); actionStack.Add(new SimpleDirtiableActionItem(dirtiable.Yield())); Assert.AreEqual(true, dirtiable.IsDirty); Assert.AreEqual(2, eventCount); } }