public void MemoryBoundary_CreateAndCommit_NoGraph() { var test = new { Obj = new Obj(1, "the obj", 2.3d), Sub = new Sub(2, "the sub.base", 6.4d, 3, "the sub", null), Sub2 = new Sub(4, "the sub.base 2", 9.4d, 5, "the sub 2", null), }; Obj obj = test.Obj.Clone(); using (MemoryBoundary mem = new MemoryBoundary()) { mem.Capture(obj); obj.F = test.Sub2.F; obj.F1 = test.Sub2.F1; obj.F2 = test.Sub2.F2; mem.MarkComplete(); } Assert.AreEqual(test.Sub2.F, obj.F); Assert.AreEqual(test.Sub2.F1, obj.F1); Assert.AreEqual(test.Sub2.F2, obj.F2); }
public void MemoryBoundary_CreateAndCommit_WithShallowGraph() { var test = new { Obj = new Obj(1, "the obj", 2.3d), Sub = new Sub(2, "the sub.base", 6.4d, 3, "the sub", null), Sub2 = new Sub(4, "the sub2.base", 9.4d, 5, "the sub2", null), }; Obj obj = test.Obj.Clone(); Sub sub = (Sub)test.Sub.Clone(); Sub sub2 = (Sub)test.Sub2.Clone(); sub2.Owner = test.Obj; using (MemoryBoundary mem = new MemoryBoundary()) { mem.Capture(sub2); sub2.F = sub.F; sub2.F1 = sub.F1; sub2.F2 = sub.F2; sub2.S = sub.S; sub2.S1 = sub.S1; // Assert the object changed... Assert.AreEqual(test.Sub.F, sub2.F); Assert.AreEqual(test.Sub.F1, sub2.F1); Assert.AreEqual(test.Sub.F2, sub2.F2); Assert.AreEqual(test.Sub.S, sub2.S); Assert.AreEqual(test.Sub.S1, sub2.S1); Assert.AreNotEqual(test.Sub.Owner, sub2.Owner); mem.MarkComplete(); } // Assert the change survived the memory boundary. Assert.AreEqual(test.Sub.F, sub2.F); Assert.AreEqual(test.Sub.F1, sub2.F1); Assert.AreEqual(test.Sub.F2, sub2.F2); Assert.AreEqual(test.Sub.S, sub2.S); Assert.AreEqual(test.Sub.S1, sub2.S1); Assert.AreNotEqual(test.Sub.Owner, sub2.Owner); }
public void MemoryBoundary_CreateAndCommitEmpty() { using (MemoryBoundary mem = new MemoryBoundary()) { mem.MarkComplete(); } }