public void SerializationListWithReference()
        {
            var obj = new TestClassReferenceWithList();

            obj.Parent = new TestClassReference()
            {
                Id = 1
            };
            var other = new TestClassReference {
                Id = 2, ObjectA = obj.Parent, ReferenceToObjectA = obj.Parent
            };

            obj.All = new List <IReference>
            {
                new TestClassReference {
                    Id = 3, ObjectA = obj.Parent, ReferenceToObjectA = obj.Parent
                },
                new TestClassReference {
                    Id = 4, ObjectA = other, ReferenceToObjectA = other
                },
                other,
                obj.Parent
            };

            CheckSerializationAndDeserialization("ExtendedXmlSerializerTest.Resources.TestClassReferenceWithList.xml", obj);
        }
Exemplo n.º 2
0
        public void ComplexList()
        {
            var container = new ConfigurationContainer();

            container.Type <TestClassReference>()
            .EnableReferences(x => x.Id);
            var support = new SerializationSupport(container);

            var instance = new TestClassReferenceWithList {
                Parent = new TestClassReference {
                    Id = 1
                }
            };
            var other = new TestClassReference
            {
                Id = 2, ObjectA = instance.Parent, ReferenceToObjectA = instance.Parent
            };

            instance.All = new List <IReference>
            {
                new TestClassReference {
                    Id = 3, ObjectA = instance.Parent, ReferenceToObjectA = instance.Parent
                },
                new TestClassReference {
                    Id = 4, ObjectA = other, ReferenceToObjectA = other
                },
                other,
                instance.Parent
            };
            var actual = support.Assert(instance,
                                        @"<?xml version=""1.0"" encoding=""utf-8""?><TestClassReferenceWithList xmlns=""clr-namespace:ExtendedXmlSerializer.Tests.TestObject;assembly=ExtendedXmlSerializer.Tests""><Parent xmlns:exs=""https://extendedxmlserializer.github.io/v2"" exs:type=""TestClassReference"" Id=""1"" /><All><Capacity>4</Capacity><TestClassReference Id=""3""><ObjectA xmlns:exs=""https://extendedxmlserializer.github.io/v2"" exs:type=""TestClassReference"" exs:entity=""1"" /><ReferenceToObjectA xmlns:exs=""https://extendedxmlserializer.github.io/v2"" exs:type=""TestClassReference"" exs:entity=""1"" /></TestClassReference><TestClassReference Id=""4""><ObjectA xmlns:exs=""https://extendedxmlserializer.github.io/v2"" exs:type=""TestClassReference"" Id=""2""><ObjectA exs:type=""TestClassReference"" exs:entity=""1"" /><ReferenceToObjectA exs:type=""TestClassReference"" exs:entity=""1"" /></ObjectA><ReferenceToObjectA xmlns:exs=""https://extendedxmlserializer.github.io/v2"" exs:type=""TestClassReference"" exs:entity=""2"" /></TestClassReference><TestClassReference xmlns:exs=""https://extendedxmlserializer.github.io/v2"" exs:entity=""2"" /><TestClassReference xmlns:exs=""https://extendedxmlserializer.github.io/v2"" exs:entity=""1"" /></All></TestClassReferenceWithList>");

            Assert.NotNull(actual.Parent);
            var list = actual.All.Cast <TestClassReference>()
                       .ToList();

            Assert.Same(actual.Parent, list[0]
                        .ObjectA);
            Assert.Same(actual.Parent, list[0]
                        .ReferenceToObjectA);
            Assert.Same(list[1]
                        .ObjectA, list[1]
                        .ReferenceToObjectA);
            Assert.Same(list[1]
                        .ObjectA.To <TestClassReference>()
                        .ObjectA,
                        list[1]
                        .ObjectA.To <TestClassReference>()
                        .ReferenceToObjectA);
            Assert.Same(actual.Parent, list[1]
                        .ObjectA.To <TestClassReference>()
                        .ObjectA);
            Assert.Same(list[2], list[1]
                        .ObjectA);
            Assert.Same(actual.Parent, list[3]);
        }