Пример #1
0
        public void TestDuplicateReferences()
        {
            var arr = new object[10];
            var p   = new CPerson();
            var p2  = new CPerson();

            arr[1] = p;
            arr[2] = p2;
            arr[5] = p2;
            arr[8] = p;
            arr[9] = p;

            object x = arr;

            var c = new CSerializationContext();

            c.SetConcise();
            c.FixM_ = true;
            c.ArrayElementsIncludeIndicies = true;
            var s   = new CSerializer(c);
            var doc = s.Serialize(x);

            Print(doc);
            var elem = doc.DocumentElement;

            AssureCorrectReference(elem, 1, 8);
            AssureCorrectReference(elem, 1, 9);
            AssureCorrectReference(elem, 2, 5);
        }
Пример #2
0
        public void TestCPersonExplicitArrays()
        {
            var x = new CPerson();
            var c = new CSerializationContext
            {
                FixM_ = true,
                AllArraysHaveExplicitElements = true,
                ArrayElementsIncludeIndicies  = true
            };

            var s   = new CSerializer(c);
            var doc = s.Serialize(x);

            Print(doc);
            var elem = doc.DocumentElement;

            Assert.AreEqual(x.m_name, XmlExtensions.GetElementValue(elem, "Name"), "Name");
            Assert.AreEqual(x.m_age.ToString(), XmlExtensions.GetElementValue(elem, "Age"), "Age");

            var e = (XmlElement)elem.SelectSingleNode("KidsNames");

            Assert.IsNotNull(e, "Missing KidsNames element");
            Assert.AreEqual("3", XmlExtensions.GetAttributeValue(e, s.Context.ArrayAttributeName), "Kids Array Count");
            for (var i = 0; i < x.m_kidsNames.Length; i++)
            {
                Assert.AreEqual(x.m_kidsNames[i], e.ChildNodes[i].InnerText, "Kid " + i);
                Assert.AreEqual(i.ToString(),
                                XmlExtensions.GetAttributeValue(e.ChildNodes[i], s.Context.ArrayIndexAttributeName),
                                "Array Index " + i);
            }

            e = (XmlElement)elem.SelectSingleNode("ANullValue");
            Assert.IsNotNull(e, "Missing ANullValue element");
            Assert.AreEqual(s.Context.NullAttributeValue,
                            XmlExtensions.GetAttributeValue(e, s.Context.NullAttributeName),
                            "Null Attribute Error");

            e = (XmlElement)elem.SelectSingleNode("Address");
            Assert.IsNotNull(e, "Missing Address element");
            Assert.AreEqual(x.m_address.m_city, XmlExtensions.GetElementValue(e, "City"), "Address-City");
            Assert.AreEqual(x.m_address.m_street, XmlExtensions.GetElementValue(e, "Street"), "Address-Street");
            Assert.AreEqual(x.m_address.m_zip.ToString(), XmlExtensions.GetElementValue(e, "Zip"), "Address-Zip");

            e = (XmlElement)elem.SelectSingleNode("OtherAddress");
            Assert.IsNotNull(e, "Other Address Missing");
            var sa = x.m_otherAddress as CSuperAddress;

            Assert.AreEqual(sa.m_country, XmlExtensions.GetElementValue(e, "Country"), "OtherAddress-Country");
            Assert.AreEqual(sa.m_city, XmlExtensions.GetElementValue(e, "City"), "Address-City");
            Assert.AreEqual(sa.m_street, XmlExtensions.GetElementValue(e, "Street"), "Address-Street");
            Assert.AreEqual(sa.m_zip.ToString(), XmlExtensions.GetElementValue(e, "Zip"), "Address-Zip");
        }
Пример #3
0
        public void TestCPerson()
        {
            var x = new CPerson();

            CSerializationContext.Global.FixM_ = true;

            var s   = new CSerializer();
            var doc = s.Serialize(x);

            Print(doc);
            var elem = doc.DocumentElement;

            Assert.AreEqual(x.m_name, XmlExtensions.GetElementValue(elem, "Name"), "Name");
            Assert.AreEqual(x.m_age.ToString(), XmlExtensions.GetElementValue(elem, "Age"), "Age");

            var e = (XmlElement)elem.SelectSingleNode("KidsNames");

            Assert.IsNotNull(e, "Missing KidsNames element");
            Assert.AreEqual("3", XmlExtensions.GetAttributeValue(e, s.Context.ArrayAttributeName), "Kids Array Count");
            Assert.AreEqual("Maggie,Lisa,Bart", e.InnerText, "Kids Names");

            e = (XmlElement)elem.SelectSingleNode("KidsAges");
            Assert.IsNotNull(e, "Missing KidsNames element");
            Assert.AreEqual("3",
                            XmlExtensions.GetAttributeValue(e, s.Context.ArrayAttributeName),
                            "KidsAges Array Count");
            Assert.AreEqual("1,7,9", e.InnerText, "Kids Names");

            e = (XmlElement)elem.SelectSingleNode("ANullValue");
            Assert.IsNotNull(e, "Missing ANullValue element");
            Assert.AreEqual(s.Context.NullAttributeValue,
                            XmlExtensions.GetAttributeValue(e, s.Context.NullAttributeName),
                            "Null Attribute Error");

            e = (XmlElement)elem.SelectSingleNode("Address");
            Assert.IsNotNull(e, "Missing Address element");
            Assert.AreEqual(x.m_address.m_city, XmlExtensions.GetElementValue(e, "City"), "Address-City");
            Assert.AreEqual(x.m_address.m_street, XmlExtensions.GetElementValue(e, "Street"), "Address-Street");
            Assert.AreEqual(x.m_address.m_zip.ToString(), XmlExtensions.GetElementValue(e, "Zip"), "Address-Zip");

            e = (XmlElement)elem.SelectSingleNode("OtherAddress");
            Assert.IsNotNull(e, "Other Address Missing");
            var sa = x.m_otherAddress as CSuperAddress;

            Assert.AreEqual(sa.m_country, XmlExtensions.GetElementValue(e, "Country"), "OtherAddress-Country");
            Assert.AreEqual(sa.m_city, XmlExtensions.GetElementValue(e, "City"), "Address-City");
            Assert.AreEqual(sa.m_street, XmlExtensions.GetElementValue(e, "Street"), "Address-Street");
            Assert.AreEqual(sa.m_zip.ToString(), XmlExtensions.GetElementValue(e, "Zip"), "Address-Zip");
        }
Пример #4
0
        public void TestCPersonArray()
        {
            var x = new CPerson[2];

            x[0] = new CPerson();
            x[1] = new CPerson();
            x[1].Alternate();

            var s   = new CSerializer();
            var doc = s.Serialize(x);

            Print(doc);

            var d = new CDeserializer();
            var z = d.Deserialize <CPerson[]>(doc);

            Assert.AreEqual(2, z.Length, "Array length is wrong");
            Assert.AreEqual(x[0].m_name, z[0].m_name, "Name");
            Assert.AreEqual(x[0].m_age, z[0].m_age, "Age");
            Assert.AreEqual(x[0].m_address.m_city, z[0].m_address.m_city, "City");
            Assert.AreEqual(x[0].m_address.m_street, z[0].m_address.m_street, "Street");
            Assert.AreEqual(x[0].m_address.m_zip, z[0].m_address.m_zip, "Zip");
            Assert.AreEqual(x[0].m_kidsNames[0], z[0].m_kidsNames[0], "Kids0");
            Assert.AreEqual(x[0].m_kidsNames[1], z[0].m_kidsNames[1], "Kids1");
            Assert.AreEqual(x[0].m_kidsNames[2], z[0].m_kidsNames[2], "Kids2");
            Assert.AreEqual(x[0].m_kidsAges[0], z[0].m_kidsAges[0], "Kids0");
            Assert.AreEqual(x[0].m_kidsAges[1], z[0].m_kidsAges[1], "Kids1");
            Assert.AreEqual(x[0].m_kidsAges[2], z[0].m_kidsAges[2], "Kids2");

            Assert.AreEqual(x[1].m_name, z[1].m_name, "1Name");
            Assert.AreEqual(x[1].m_age, z[1].m_age, "1Age");
            Assert.AreEqual(x[1].m_address.m_city, z[1].m_address.m_city, "1City");
            Assert.AreEqual(x[1].m_address.m_street, z[1].m_address.m_street, "1Street");
            Assert.AreEqual(x[1].m_address.m_zip, z[1].m_address.m_zip, "1Zip");
            Assert.AreEqual(x[1].m_kidsNames[0], z[1].m_kidsNames[0], "1Kids0");
            Assert.AreEqual(x[1].m_kidsNames[1], z[1].m_kidsNames[1], "1Kids1");
            Assert.AreEqual(x[1].m_kidsNames[2], z[1].m_kidsNames[2], "1Kids2");
            Assert.AreEqual(x[1].m_kidsAges[0], z[1].m_kidsAges[0], "1Kids0");
        }