Beispiel #1
0
        public void AllowDictionariesWithNonStringKeys()
        {
            var A = new TestLevelA();
            A.B = new TestLevelB();
            A.B.C = new TestLevelC();
            A.dictOfCs = new Dictionary<int, TestLevelC>();
            A.dictOfCs.Add(5, new TestLevelC());
            A.dictOfCs[5].CStuff = "qwerty";
            A.dictOfCs.Add(6, new TestLevelC());
            A.dictOfCs[6].CStuff = "Bo";

            var sA = ShadowedObject.CopyInto<TestLevelA>(A);

            sA.BaselineOriginals();

            sA.dictOfCs[5].CStuff = "asdf";

            Assert.IsTrue(sA.HasChanges());
            Assert.AreEqual("asdf", sA.dictOfCs[5].CStuff);

            sA.ResetToOriginal(a => a.dictOfCs);

            Assert.AreEqual("qwerty", sA.dictOfCs[5].CStuff);
            Assert.IsTrue(!sA.HasChanges());

            sA.dictOfCs[6] = ShadowedObject.Create<TestLevelC>();

            Assert.IsTrue(sA.HasChanges());
            Assert.AreEqual("start", sA.dictOfCs[6].CStuff);

            sA.BaselineOriginals();

            Assert.IsFalse(sA.HasChanges());
            sA.dictOfCs.Remove(6);
            Assert.IsTrue(sA.HasChanges());
        }
Beispiel #2
0
        public void TrackChangesFromPocoGraphCopiedShadows()
        {
            var A = new TestLevelA();
            A.B = new TestLevelB();
            A.B.C = new TestLevelC();

            var sA = ShadowedObject.CopyInto(A);

            sA.B.Bstuff = 3;

            Assert.IsTrue(sA.B.HasChanges());

            sA.B.ResetToOriginal(b => b.Bstuff);

            Assert.IsTrue(!sA.B.HasChanges());
        }
Beispiel #3
0
        public void TrackChangesFromPocoCollectionCopiedShadows()
        {
            var A = new TestLevelA();
            A.NestedAs = new Collection<TestLevelA>() { new TestLevelA(), new TestLevelA() };

            var sA = ShadowedObject.CopyInto(A);

            sA.BaselineOriginals();
            Assert.IsTrue(!sA.HasChanges());

            sA.NestedAs[0].name = "xyz";

            Assert.IsTrue(sA.HasChanges());

            sA.NestedAs[0].ResetToOriginal(a => a.name);

            Assert.IsTrue(!sA.HasChanges());
        }
Beispiel #4
0
        public void ResetsOnMultipleObjects()
        {
            var A = new TestLevelA();
            A.NestedAs = new Collection<TestLevelA>();
            A.B = new TestLevelB();
            A.B.Bstuff = 2;

            A = ShadowedObject.CopyInto(A);

            A.B.BaselineOriginals();
            A.BaselineOriginals();

            A.NestedAs.Add(new TestLevelA());
            A.NestedAs.Add(new TestLevelA());

            A.B.Bstuff = 3;

            A.ResetToOriginal(a => a.NestedAs);
            A.B.ResetToOriginal(b => b.Bstuff);

            Assert.IsTrue(A.B.Bstuff == 2);
            Assert.IsTrue(A.NestedAs.Count == 0);
        }
Beispiel #5
0
        public void RecursiveTwoLevelCheckingForChangedCollection()
        {
            var A = new TestLevelA();
            A.NestedAs = new Collection<TestLevelA>();

            A.NestedAs.Add(ShadowedObject.Create<TestLevelA>());
            A.NestedAs.Add(ShadowedObject.Create<TestLevelA>());

            A = ShadowedObject.CopyInto(A);

            A.BaselineOriginals();

            Assert.IsTrue(!A.HasChanges());

            A.NestedAs[0].name = "xyz";

            Assert.IsTrue(A.HasChanges());
        }
Beispiel #6
0
        public void NonGenericCollectionResetToOriginalTest()
        {
            var A = new TestLevelA();
            A.UntypedList = new ArrayList();

            A = ShadowedObject.CopyInto(A);

            A.BaselineOriginals();

            A.UntypedList.Add(new TestLevelA());
            A.UntypedList.Add(new TestLevelA());

            A.ResetToOriginal(a => a.UntypedList);

            Assert.IsTrue(A.UntypedList.Count < 1);
        }
Beispiel #7
0
        public void CreateShadowsFromPocoGraph()
        {
            var A = new TestLevelA();
            A.B = new TestLevelB();
            A.B.C = new TestLevelC();

            var sA = ShadowedObject.CopyInto<TestLevelA>(A);

            sA.BaselineOriginals();

            sA.name = "blah";

            Assert.IsTrue(sA.HasChanges());

            sA.ResetToOriginal(a => a.name);

            Assert.IsTrue(sA.name == "initial");
            Assert.IsTrue(!sA.HasChanges());
        }
Beispiel #8
0
        public void CreateDictionaryWithItemShadowsFromPocoGraph()
        {
            var A = new TestLevelA();
            A.B = new TestLevelB();
            A.B.C = new TestLevelC();
            A.dictOfBs = new Dictionary<string, TestLevelB>();
            A.dictOfBs.Add("asdf", new TestLevelB());
            A.dictOfBs["asdf"].Bstuff = 3;

            var sA = ShadowedObject.CopyInto<TestLevelA>(A);

            sA.BaselineOriginals();

            sA.dictOfBs["asdf"].Bstuff = 8;

            Assert.IsTrue(sA.HasChanges());
            Assert.AreEqual(8, sA.dictOfBs["asdf"].Bstuff);

            sA.ResetToOriginal(a => a.dictOfBs);

            Assert.AreEqual(3, sA.dictOfBs["asdf"].Bstuff);
            Assert.IsTrue(!sA.HasChanges());
        }
Beispiel #9
0
        public void CollectionResetToOriginalTest()
        {
            var A = new TestLevelA();
            A.NestedAs = new Collection<TestLevelA>();

            A = ShadowedObject.CopyInto(A);

            A.BaselineOriginals();

            A.NestedAs.Add(new TestLevelA());
            A.NestedAs.Add(new TestLevelA());

            A.ResetToOriginal(a => a.NestedAs[0]);

            Assert.IsTrue(A.NestedAs.Count < 1);
        }