Example #1
0
        public void should_serialize_collection_into_string()
        {
            var testCollection = new test_collection()
            {
                new ChangeA {
                    PropertyA = "Change A"
                },
                new ChangeB {
                    PropertyA = "Change B"
                },
            };

            string   xml       = testCollection.SerializeToXml(typeof(IChange));
            XElement actualXml = XElement.Parse(xml);

            actualXml.Name.LocalName.Should().Be("Changes");
            actualXml.Should().HaveElement("Change");

            IEnumerable <XElement> changes = from change in actualXml.Elements("Change") select change;

            changes.Should().HaveCount(2);

            var changeA = changes.SingleOrDefault(
                e =>
                e.Attribute("AssemblyQualifiedName") != null &&
                e.Attribute("AssemblyQualifiedName").Value == "RuskinDantra.Extensions.UnitTests.ChangeA, RuskinDantra.Extensions.UnitTests");

            changeA.Should().NotBeNull();
            changeA.Element("ChangeA").Element("PropertyA").Should().HaveValue("Change A");
            changeA.Element("ChangeA").Element("ChangeType").Should().HaveValue("ChangeA");

            var changeB = changes.SingleOrDefault(
                e =>
                e.Attribute("AssemblyQualifiedName") != null &&
                e.Attribute("AssemblyQualifiedName").Value == "RuskinDantra.Extensions.UnitTests.ChangeB, RuskinDantra.Extensions.UnitTests");

            changeB.Should().NotBeNull();
            changeB.Element("ChangeB").Element("PropertyA").Should().HaveValue("Change B");
            changeB.Element("ChangeB").Element("ChangeType").Should().HaveValue("ChangeB");
        }
Example #2
0
        public void should_deserialize_string_into_collection()
        {
            var xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n" +
                      "<Changes>\r\n" +
                      "  <Change AssemblyQualifiedName=\"RuskinDantra.Extensions.UnitTests.ChangeA, RuskinDantra.Extensions.UnitTests\">\r\n" +
                      "    <ChangeA xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n" +
                      "      <PropertyA>Change A</PropertyA>\r\n" +
                      "      <ChangeType>ChangeA</ChangeType>\r\n" +
                      "    </ChangeA>\r\n" +
                      "  </Change>\r\n" +
                      "  <Change AssemblyQualifiedName=\"RuskinDantra.Extensions.UnitTests.ChangeB, RuskinDantra.Extensions.UnitTests\">\r\n" +
                      "    <ChangeB xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n" +
                      "      <PropertyA>Change B</PropertyA>\r\n" +
                      "      <ChangeType>ChangeB</ChangeType>\r\n" +
                      "    </ChangeB>\r\n" +
                      "  </Change>\r\n" +
                      "</Changes>";

            test_collection testCollection = xml.DeserializeFromXml <test_collection>(typeof(IChange));

            testCollection.Should().HaveCount(2);
            testCollection.ElementAt(0).Should().BeOfType <ChangeA>();
            testCollection.ElementAt(1).Should().BeOfType <ChangeB>();
        }