示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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");
        }
示例#7
0
        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);
        }