Example #1
0
        public void CustomAnyAttributeSerializer_ShouldSerializeToCustomValue()
        {
            int i = 0;
            var description = new FluentSchemaDescription();
            description.Element<Person>("Person")
                       .AnyAttribute<string>(x => x.CustomStringAttributes,
                                             reader => "Attribute:" + reader.LocalName + "=" + reader.Value,
                                             (writer, attr) => writer.WriteAttributeString("CustomAttr" + (++i), "MissingValue"));

            var schema = description.Build();

            var serializer = new Serializer(schema);

            var person = serializer.Deserialize<Person>("<Person Custom1='Value1' Custom2='Value2' />".ToStream());
            var stream = new MemoryStream();
            serializer.Serialize(stream, person);

            XAssert.AreEqual("<Person CustomAttr1='MissingValue' CustomAttr2='MissingValue' />",
                             stream.ToXDocument().ToString());
        }
Example #2
0
        public void SerializeDocument_ShouldSucceed()
        {
            var stream = new MemoryStream();
            XNamespace dmsNs = "http://dms.com";
            XNamespace testNs = "http://test.com";
            var document = new Document
                           {
                               CustomElements = new List<XElement>
                                   {
                                       new XElement(dmsNs + "CustomElement1",
                                           new XElement(dmsNs + "Child1"),
                                           new XElement(dmsNs + "Child2",
                                               new XAttribute("Attr1", "Value1"))),
                                       new XElement(testNs + "CustomElement2",
                                           new XAttribute("Name", "Value2")),
                                       new XElement(testNs + "CustomElement3",
                                           new XAttribute("Name", "Value3")),
                                   },
                               Persons = new List<Person>
                                         {
                                             new Person
                                             {
                                                 Id = 123,
                                                 FirstName = "James",
                                                 LastName = "Jefferson",
                                                 IsEnabled = true,
                                                 DateOfBirth = new DateTime(2010, 02, 12, 23, 59, 59, DateTimeKind.Utc),
                                                 TimeSinceLastLogin = TimeSpan.FromMinutes(20),
                                                 Address = new Address {StreetName = "231 Queen Street", City = "Auckland", Comments = "Some comments"},
                                                 CustomAttributes =
                                                    new List<XAttribute>
                                                        {
                                                            new XAttribute("Custom1", "CustomValue1"),
                                                            new XAttribute(dmsNs + "Custom2", "CustomValue2")
                                                        },
                                                 ContactMethods =
                                                     new List<ContactMethod>
                                                     {
                                                         new ContactMethod {Type = ContactMethodType.Email, Value = "*****@*****.**"},
                                                         new AddressContactMethod
                                                         {
                                                             Type = ContactMethodType.Address,
                                                             OptionalType = ContactMethodType.Email,
                                                             Value = "Auckland City",
                                                             StreetName = "232 Queen Street"
                                                         },
                                                         new ContactMethod {Type = ContactMethodType.HomePhone, Value = "555-1234"}
                                                     }
                                             },
                                             new Person
                                             {
                                                 Id = 124,
                                                 FirstName = "Paul",
                                                 LastName = "Jefferson",
                                                 IsEnabled = false,
                                                 Address = new Address {StreetName = "500 Dominion Road", City = "Auckland"},
                                             }
                                         }
                           };
            var serializer = new Serializer(FullSchema());

            serializer.Serialize(stream, document);

            var expected = XDocument.Parse(@"<Document xmlns='http://test.com' xmlns:dms='http://dms.com'>
                                              <Person Id='123' FirstName='James' LastName='Jefferson' DateOfBirth='2010-02-12T23:59:59Z' TimeSinceLastLogin='******'  Custom1='CustomValue1' dms:Custom2='CustomValue2'>
                                                <IsEnabled>true</IsEnabled>
                                                <Address StreetName='231 Queen Street' City='Auckland'>Some comments</Address>
                                                <ContactMethods>
                                                    <ContactMethod Type='Email' Value='*****@*****.**' />
                                                    <AddressContactMethod Type='Address' OptionalType='Email' Value='Auckland City' StreetName='232 Queen Street' />
                                                    <ContactMethod Type='HomePhone' Value='555-1234' />
                                                </ContactMethods>
                                              </Person>
                                              <Person Id='124' FirstName='Paul' LastName='Jefferson'>
                                                <IsEnabled>false</IsEnabled>
                                                <Address StreetName='500 Dominion Road' City='Auckland' />
                                              </Person>
                                              <dms:CustomElement1>
                                                <dms:Child1 />
                                                <dms:Child2 Attr1='Value1' />
                                              </dms:CustomElement1>
                                              <CustomElement2 Name='Value2' />
                                              <CustomElement3 Name='Value3' />
                                            </Document>");

            Debug.WriteLine(stream.ToXDocument());

            XAssert.AreEqual(expected, stream.ToXDocument());
        }
Example #3
0
        public void SerializeFragment_ShouldSucceed()
        {
            var stream = new MemoryStream();
            var address = new Address {StreetName = "231 Queen Street", City = "Auckland"};
            var serializer = new Serializer(FullSchema());

            serializer.Serialize(stream, address);

            var expected = XDocument.Parse(@"<Address StreetName='231 Queen Street' City='Auckland' xmlns='http://test.com' />");

            XAssert.AreEqual(expected, stream.ToXDocument());
        }
Example #4
0
        public void CustomAnyElementSerializer_ShouldSerializeToCustomValue()
        {
            var description = new FluentSchemaDescription();
            description.Element<Person>("Person")
                       .AnyElement<int>(x => x.CustomIntegerElements,
                                             reader => reader.ReadElementContentAsInt(),
                                             (writer, value) => writer.WriteElementString("NewName", value.ToString()));

            var schema = description.Build();

            var serializer = new Serializer(schema);

            var person = new Person {CustomIntegerElements = new List<int> {1, 2, 3}};
            var stream = new MemoryStream();
            serializer.Serialize(stream, person);

            XAssert.AreEqual(@"<Person>
                                 <NewName>1</NewName>
                                 <NewName>2</NewName>
                                 <NewName>3</NewName>
                               </Person>",
                             stream.ToXDocument().ToString());
        }