Exemple #1
0
        public void TestExternalSurrogate()
        {
            var x = new CStdBaseObject
            {
                Name = "Alyssa",
                Age  = 21
            };
            var c = new CSerializationContext();

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

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

            Assert.AreEqual(2, elem.ChildNodes.Count, "Child Node Count is wrong");
            Assert.AreEqual(x.Name, XmlExtensions.GetElementValue(elem, "Name"), "Name");
            Assert.AreEqual(x.Age.ToString(), XmlExtensions.GetElementValue(elem, "Age"), "Age");

            Console.WriteLine(
                "\r\n\r\n-----------------------------------------------------------------------------\r\n\r\n");
            c.RegisterExternalSurrogate(typeof(CStdBaseObject), new CStdExternalSurrogate());

            doc = s.Serialize(x);
            Print(doc);
            elem = doc.DocumentElement;

            Assert.AreEqual(0, elem.ChildNodes.Count, "Child Node Count is wrong");
            Assert.AreEqual(x.Name, XmlExtensions.GetAttributeValue(elem, "NAME"), "Name");
            Assert.AreEqual(x.Age.ToString(), XmlExtensions.GetAttributeValue(elem, "AGE"), "Age");
        }
Exemple #2
0
        public void TestExternalBaseSurrogate()
        {
            var x = new CMySuperStd
            {
                Name = "Alyssa",
                Age  = 21,
                Sex  = "Yes"
            };

            var c = new CSerializationContext();

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

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

            Assert.AreEqual(3, elem.ChildNodes.Count, "Child Node Count is wrong");
            Assert.AreEqual(x.Name, XmlExtensions.GetElementValue(elem, "Name"), "Name");
            Assert.AreEqual(x.Age.ToString(), XmlExtensions.GetElementValue(elem, "Age"), "Age");
            Assert.AreEqual(x.Sex, XmlExtensions.GetElementValue(elem, "Sex"), "Sex");

            PrintLine();

            c.RegisterExternalSurrogate(typeof(CStdBaseObject), new CStdExternalSurrogate());

            doc = s.Serialize(x);
            Print(doc);
            elem = doc.DocumentElement;

            Assert.AreEqual(1, elem.ChildNodes.Count, "Child Node Count is wrong");
            Assert.AreEqual(x.Name, XmlExtensions.GetAttributeValue(elem, "NAME"), "Name");
            Assert.AreEqual(x.Age.ToString(), XmlExtensions.GetAttributeValue(elem, "AGE"), "Age");
            Assert.AreEqual(x.Sex, XmlExtensions.GetElementValue(elem, "Sex"), "Sex");
        }
        public void GetElementValueTest()
        {
            var actual = XmlExtensions.GetElementValue(m_xml, "/a/b");

            Assert.AreEqual <string>("Bear", actual, "The value of /a/b is wrong");

            var shouldBeNull = XmlExtensions.GetElementValue(m_xml, "/a/ff");

            Assert.IsNull(shouldBeNull, "Should be null when the element can't be found");
        }
Exemple #4
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");
        }
Exemple #5
0
            public bool Deserialize(CWorkingObject _workingObject, XmlElement _parentNode, CDeserializer _framework)
            {
                _framework.IgnoreField("FriendPerson");
                var sIdx = XmlExtensions.GetElementValue(_parentNode, "FriendPerson");
                var idx  = int.Parse(sIdx);

                if (m_indicies == null)
                {
                    m_indicies = new List <int>();
                }
                m_indicies.Add(idx);

                return(false);
            }
Exemple #6
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");
        }
Exemple #7
0
        public void TestCircularReference()
        {
            var a = new CLinkedList
            {
                Data = 69
            };

            var b = new CLinkedList
            {
                Data = 70
            };

            a.Next = b;
            b.Next = a;

            var c = new CSerializationContext();

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

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

            var id = XmlExtensions.GetAttributeValue(elem, c.ReferenceIdAttributeName);

            Assert.AreEqual("69", XmlExtensions.GetElementValue(elem, "Data"), "The first node's data is wrong");
            var e2 = (XmlElement)elem.SelectSingleNode("Next");

            Assert.AreEqual("70", XmlExtensions.GetElementValue(e2, "Data"), "The second node's data is wrong");

            var e3  = (XmlElement)e2.SelectSingleNode("Next");
            var rid = XmlExtensions.GetAttributeValue(e3, c.ReferToAttributeName);

            Assert.AreEqual(id, rid, "The reference to the first node is wrong");
        }