예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
 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);
     }
 }
예제 #4
0
        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);
            }
        }
예제 #5
0
 public UndoRedoService(int stackCapacity)
 {
     stack = TransactionStackFactory.Create(stackCapacity);
     stack.TransactionCompleted += TransactionCompleted;
     dirtiableManager            = new DirtiableManager(stack);
 }