public void TestSaveUndoSaveRedo() { var stack = new TransactionStack(5); using (var manager = new DirtiableManager(stack)) { var dirtiable = new SimpleDirtiable(); var operation = new SimpleDirtyingOperation(dirtiable.Yield()); using (stack.CreateTransaction()) { stack.PushOperation(operation); } Assert.True(dirtiable.IsDirty); manager.CreateSnapshot(); Assert.False(dirtiable.IsDirty); stack.Rollback(); Assert.True(dirtiable.IsDirty); manager.CreateSnapshot(); Assert.False(dirtiable.IsDirty); stack.Rollforward(); Assert.True(dirtiable.IsDirty); manager.CreateSnapshot(); Assert.False(dirtiable.IsDirty); } }
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 TestDoAndSave() { 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); } }
public void TestDoAndSave() { var stack = new TransactionStack(5); using (var manager = new DirtiableManager(stack)) { var dirtiable = new SimpleDirtiable(); var operation = new SimpleDirtyingOperation(dirtiable.Yield()); using (stack.CreateTransaction()) { stack.PushOperation(operation); } Assert.Equal(true, dirtiable.IsDirty); manager.CreateSnapshot(); Assert.Equal(false, dirtiable.IsDirty); } }
public UndoRedoService(int stackCapacity) { stack = TransactionStackFactory.Create(stackCapacity); stack.TransactionCompleted += TransactionCompleted; dirtiableManager = new DirtiableManager(stack); }