Пример #1
0
        public void MergeSimpleTypes()
        {
            MergableClass[] itemsToMerge = new MergableClass[]
            {
                new MergableClass {
                    Name = "Ryan", IsAuthor = true, ExpectedToBeNull = "foobar"
                },
                new MergableClass {
                    Name = "Ryan", IsAuthor = false, ExpectedToBeNull = "baz"
                }
            };

            var merger = new ObjectGraphMerger <MergableClass>(itemsToMerge);
            var result = merger.Merge();

            Assert.IsNotNull(result);
            Assert.AreEqual("Ryan", result.Name);
            Assert.AreEqual(true, result.IsAuthor);
            Assert.IsNull(result.ExpectedToBeNull);
        }
Пример #2
0
        public void MergeCollection()
        {
            var itemsToMerge1 = new MergableClass[]
            {
                new MergableClass {
                    Name = "Ryan", IsAuthor = true, ExpectedToBeNull = "foobar"
                },
                new MergableClass {
                    Name = "Brad", IsAuthor = false, ExpectedToBeNull = "baz"
                }
            };

            var itemsToMerge2 = new MergableClass[]
            {
                new MergableClass {
                    Name = "Ryan", IsAuthor = false, ExpectedToBeNull = "baz"
                },
                new MergableClass {
                    Name = "Daron", IsAuthor = false, ExpectedToBeNull = "baz"
                }
            };

            var graphsToMerge = new MergableCollectionPropertyClass[]
            {
                new MergableCollectionPropertyClass {
                    Authors = itemsToMerge1
                },
                new MergableCollectionPropertyClass {
                    Authors = itemsToMerge2
                }
            };

            var merger = new ObjectGraphMerger <MergableCollectionPropertyClass>(graphsToMerge);
            var result = merger.Merge();

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Authors);
            Assert.AreEqual(3, result.Authors.Length);

            foreach (var author in result.Authors)
            {
                switch (author.Name)
                {
                case "Ryan":
                    Assert.IsTrue(author.IsAuthor);
                    break;

                case "Daron":
                    Assert.IsFalse(author.IsAuthor);
                    break;

                case "Brad":
                    Assert.IsFalse(author.IsAuthor);
                    break;

                default:
                    Assert.Fail("Unexpected author name was returned");
                    break;
                }
            }
        }