예제 #1
0
        public void PrivateAutoProperty()
        {
            var e = new UndoEntity();

            e.SetPrivateAutoProperty("prop");

            var state = e.Savepoint();

            e.SetPrivateAutoProperty("changed");

            state.Rollback();

            e.GetPrivateAutoProperty().ShouldEqual("prop");
        }
예제 #2
0
        public void AutoProperty()
        {
            var e = new UndoEntity {
                AutoProperty = "prop"
            };

            var state = e.Savepoint();

            e.AutoProperty = "changed";

            state.Rollback();

            e.AutoProperty.ShouldEqual("prop");
        }
예제 #3
0
        public void MixedAutoProperty()
        {
            var e = new UndoEntity();

            e.SetMixedAutoProperty("prop");

            var state = e.Savepoint();

            e.SetMixedAutoProperty("changed");
            e.MixedAutoProperty.ShouldEqual("changed");

            state.Rollback();

            e.MixedAutoProperty.ShouldEqual("prop");
        }
예제 #4
0
        public void MultilevelInstance()
        {
            var e      = new UndoEntity();
            var level1 = new UndoEntityLevel1();

            e.Entity = level1;

            var state = e.Savepoint();

            e.Entity = new UndoEntityLevel1();

            state.Rollback();

            e.Entity.ShouldEqual(level1);
        }
예제 #5
0
        public void MultilevelUndo()
        {
            var e = new UndoEntity();

            e.Property = "Joel";
            var state = e.Savepoint();

            e.Property = "Joel2";
            var state2 = e.Savepoint();

            e.Property = "Joel3";
            state2.Rollback();
            e.Property.ShouldEqual("Joel2");
            state.Rollback();
            e.Property.ShouldEqual("Joel");
        }
예제 #6
0
        public void Multilevel()
        {
            var e = new UndoEntity();

            e.Entity = new UndoEntityLevel1()
            {
                Property = 5
            };

            var state = e.Savepoint();

            e.Entity.Property = 4;

            state.Rollback();

            e.Entity.Property.ShouldEqual(5);
        }
예제 #7
0
        public void Undo()
        {
            TestTime.Measure(() =>
            {
                var e      = new UndoEntity();
                var level1 = new UndoEntityLevel1();

                e.Entity = level1;

                var state = e.Savepoint();

                e.Entity = new UndoEntityLevel1();

                state.Rollback();

                e.Entity.ShouldEqual(level1);
            });
        }
예제 #8
0
        public void MultilevelWithIdentity()
        {
            var e      = new UndoEntity();
            var level1 = new UndoEntityLevel1();

            e.Entity = e.Entity2 = level1;

            var state = e.Savepoint();

            e.Entity.Property = 4;
            e.Entity2         = new UndoEntityLevel1();

            state.Rollback();

            e.Entity.Property.ShouldEqual(default(int));
            e.Entity.ShouldEqual(e.Entity2);


            Assert.IsTrue(object.ReferenceEquals(e.Entity, e.Entity2));
        }