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()); }
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()); }
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()); }
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); }
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()); }
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); }
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()); }
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()); }
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); }