示例#1
0
        public void RestoresComparisonStrategies()
        {
            var root1 = new GraphNode {
                Name = "RootNode"
            };
            {
                var child1 = new GraphNode {
                    Name = "Name", Parent = root1, ObjectValue = "Peter"
                };
                var child2 = new GraphNode {
                    Name = "Value", Parent = root1
                };
                var child3 = new GraphNode {
                    Name = "Value", Parent = root1, ObjectValue = "MILK"
                };
                var child21 = new GraphNode {
                    Name = "Grandchild", Parent = child2, ObjectValue = "TEst"
                };

                root1.Children.Add(child1);
                root1.Children.Add(child2);
                root1.Children.Add(child3);
                child2.Children.Add(child21);

                child3.ComparisonStrategy  = new IgnoreCaseComparisonStrategy();
                child21.ComparisonStrategy = new IgnoreCaseComparisonStrategy();
            }

            var root2 = new GraphNode {
                Name = "RootNode"
            };

            {
                var child1 = new GraphNode {
                    Name = "Name", Parent = root2, ObjectValue = "Peter"
                };
                var child3 = new GraphNode {
                    Name = "Value", Parent = root2, ObjectValue = "Milk"
                };
                var child2 = new GraphNode {
                    Name = "Value", Parent = root2
                };
                var child21 = new GraphNode {
                    Name = "Grandchild", Parent = child2, ObjectValue = "test"
                };

                root2.Children.Add(child1);
                root2.Children.Add(child3);
                root2.Children.Add(child2);
                child2.Children.Add(child21);

                child3.ComparisonStrategy  = new IgnoreCaseComparisonStrategy();
                child21.ComparisonStrategy = new IgnoreCaseComparisonStrategy();
            }

            // Normally those object graphs are equal
            Assert.True(new ObjectGraphComparer().Compare(root1, root2));

            var strategies = new HashSet <ObjectGraphComparisonStrategy>();

            strategies.Add(new IgnoreCaseComparisonStrategy());
            var decoded1 = TestHelpers.XmlCodecRoundtrip(root1, strategies);

            Assert.True(new ObjectGraphComparer().Compare(decoded1, root2));
        }
示例#2
0
        public void EncodesAndComparesCyclicObjectGraphs()
        {
            var root1 = new GraphNode {
                Name = "RootNode"
            };
            {
                var child1 = new GraphNode {
                    Name = "Name", Parent = root1, ObjectValue = "Peter"
                };
                var child2 = new GraphNode {
                    Name = "Value", Parent = root1
                };
                var child3 = new GraphNode {
                    Name = "Value", Parent = root1, ObjectValue = "Milk"
                };
                var child21 = new GraphNode {
                    Name = "Grandchild", Parent = child2, ObjectValue = "test"
                };

                root1.Children.Add(child1);
                root1.Children.Add(child2);
                root1.Children.Add(child3);
                child2.Children.Add(child21);

                child21.Children.Add(root1);
            }

            var root2 = new GraphNode {
                Name = "RootNode"
            };

            {
                var child1 = new GraphNode {
                    Name = "Name", Parent = root2, ObjectValue = "Peter"
                };
                var child3 = new GraphNode {
                    Name = "Value", Parent = root2, ObjectValue = "Milk"
                };
                var child2 = new GraphNode {
                    Name = "Value", Parent = root2
                };
                var child21 = new GraphNode {
                    Name = "Grandchild", Parent = child2, ObjectValue = "test"
                };

                root2.Children.Add(child1);
                root2.Children.Add(child3);
                root2.Children.Add(child2);
                child2.Children.Add(child21);

                child21.Children.Add(root2);
            }

            // Normally those object graphs are equal
            Assert.True(new ObjectGraphComparer().Compare(root1, root2));

            var decoded1 = TestHelpers.XmlCodecRoundtrip(root1);
            var decoded2 = TestHelpers.XmlCodecRoundtrip(root2);

            Assert.True(new ObjectGraphComparer().Compare(decoded1, decoded2));
        }