public void TestEnumeration() { Child child = new Child() { Id=1, Name="child2", Parent=null }; child.Add(new Grandchild() { Id=2, Name="granchild" }); Child childCopy = child .Graph() .Add(c => c.Children) .Copy(); Assert.AreNotSame(child, childCopy); Assert.AreEqual(1, childCopy.Id); Assert.AreNotSame(child.Children, childCopy.Children); Assert.AreEqual(1, childCopy.Children.Count()); Assert.AreNotSame(child.Children.First(), childCopy.Children.First()); Assert.AreEqual(2, childCopy.Children.First().Id); Assert.AreEqual("granchild", childCopy.Children.First().Name); }
public void TestSpecifiedSubGraph() { Parent parent = Parent.Create().SetId(1).SetName("parent"); Child child = new Child() { Id=2, Name="child", Parent=parent }; parent.ChildList.Add(child); Parent parentCopy = parent .Graph() .Add(p => p.ChildList, new Graph<Child>() .Add(c => c.Parent)) .Copy(); Assert.AreNotEqual(parent, parentCopy); Assert.AreEqual(1, parentCopy.Id); Child childCopy = parentCopy.ChildList[0]; Assert.AreNotEqual(child, childCopy); Assert.AreEqual(2, childCopy.Id); Assert.AreNotEqual(parentCopy, childCopy.Parent); Assert.AreEqual(1, childCopy.Parent.Id); }
public void TestDeepGraph() { Parent parent = Parent.Create().SetId(1).SetName("parent"); Child child = new Child() { Id=2, Name="child", Parent=parent }; parent.ChildList.Add(child); Grandchild grandchild = new Grandchild() { Id=3, Name="granchild", Parent=child }; child.Add(grandchild); Parent parentCopy = parent .Graph() .Add(p => p.ChildList, new Graph<Child>() .Add(c => c.Children, new Graph<Grandchild>() .Add(g => g.Parent))) .Copy(); Assert.AreNotEqual(parent, parentCopy); Child childCopy = parentCopy.ChildList[0]; Assert.AreNotEqual(child, childCopy); Assert.AreEqual(2, childCopy.Id); Child grandchildParent = childCopy.Children.First().Parent; Assert.AreNotEqual(child, grandchildParent); Assert.AreNotEqual(childCopy, grandchildParent); Assert.AreEqual(2, grandchildParent.Id); }
public void TestCopySingleObjectIgnoreReferenceType() { Parent parent = Parent.Create().SetId(1).SetName("parent1"); Child child = new Child() { Id=2, Name="child2", Parent=parent }; Child childCopy = child.Graph().Copy(); Assert.AreNotSame(child, childCopy); Assert.AreEqual(2, childCopy.Id); Assert.AreEqual("child2", childCopy.Name); Assert.AreEqual(null, childCopy.Parent); }
public void TestCopySingleObjectAddReferenceType() { Parent parent = Parent.Create().SetId(1).SetName("parent1"); Child child = new Child() { Id=2, Name="child2", Parent=parent }; Child childCopy = child .Graph() .Add(c => c.Parent) .Copy(); Assert.AreNotSame(child, childCopy); Assert.AreEqual(2, childCopy.Id); Assert.AreEqual("child2", childCopy.Name); Assert.IsNotNull(childCopy.Parent, "childCopy.Parent not copied"); Assert.AreNotSame(parent, childCopy.Parent); Assert.AreEqual(1, childCopy.Parent.Id); Assert.AreEqual("parent1", childCopy.Parent.Name); Assert.AreEqual(0, childCopy.Parent.ChildList.Count); }
public void TestCopyNullReference() { Child child = new Child() { Id=1, Name="child2", Parent=null }; Child childCopy = child .Graph() .Add(c => c.Parent) .Copy(); Assert.IsNull(child.Parent, "parent is not null"); }
public void TestCopyListAndSubGraph() { Parent parent = Parent.Create().SetId(3).SetName("parent3"); Child child1 = new Child() { Id=1, Name="child1", Parent=parent }; Child child2 = new Child() { Id=2, Name="child2", Parent=parent }; IList<Child> childList = new List<Child>() { child1, child2 }; IList<Child> childListCopy = childList .GraphList() .Add(c => c.Parent) .CopyList(); Assert.AreEqual(2, childListCopy.Count); Assert.AreEqual(3, childListCopy[1].Parent.Id); }