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); }
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"); }
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"); }
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"); }