private XmlDocument GetRoundTrippedXml(RVariant variant, string rootName) { XmlDocument xml = variant.ToXml(rootName); byte[] xmlRaw; using (MemoryStream ms = new MemoryStream()) { using (XmlWriter xw = new XmlTextWriter(ms, Encoding.UTF8)) xml.WriteTo(xw); xmlRaw = ms.ToArray(); } xml = new XmlDocument(); xml.Load(new MemoryStream(xmlRaw)); return(xml); }
public void TestXmlAndComplexEquality() { string rootName; RVariant roundtripped; roundtripped = new RVariant(GetRoundTrippedXml(valStub, "valStub"), out rootName); Assert.AreEqual("valStub", rootName); Assert_RVariantsAreEqual(valStub, roundtripped); roundtripped = new RVariant(GetRoundTrippedXml(valOneLevelList, "valOneLevelList"), out rootName); Assert.AreEqual("valOneLevelList", rootName); Assert_RVariantsAreEqual(valOneLevelList, roundtripped); roundtripped = new RVariant(GetRoundTrippedXml(valOneLevelDict, "valOneLevelDict"), out rootName); Assert.AreEqual("valOneLevelDict", rootName); Assert_RVariantsAreEqual(valOneLevelDict, roundtripped); roundtripped = new RVariant(GetRoundTrippedXml(valComplex, "valComplex"), out rootName); Assert.AreEqual("valComplex", rootName); Assert_RVariantsAreEqual(valComplex, roundtripped); // Complex XML test - add each of the above to a separate xml element XmlDocument xml = new XmlDocument(); xml.AppendChild(xml.CreateElement("test")); XmlElement elStub = xml.CreateElement("stub"); XmlElement elOneLevelList = xml.CreateElement("oneLevelList"); XmlElement elOneLevelDict = xml.CreateElement("oneLevelDict"); XmlElement elComplex = xml.CreateElement("complex"); xml.DocumentElement.AppendChild(elStub); xml.DocumentElement.AppendChild(elOneLevelList); xml.DocumentElement.AppendChild(elOneLevelDict); xml.DocumentElement.AppendChild(elComplex); valStub.ToXml(elStub); valOneLevelList.ToXml(elOneLevelList); valOneLevelDict.ToXml(elOneLevelDict); valComplex.ToXml(elComplex); byte[] xmlRaw; using (MemoryStream ms = new MemoryStream()) { using (XmlWriter xw = new XmlTextWriter(ms, Encoding.UTF8)) xml.WriteTo(xw); xmlRaw = ms.ToArray(); } xml = new XmlDocument(); xml.Load(new MemoryStream(xmlRaw)); elStub = elOneLevelList = elOneLevelDict = elComplex = null; // what a fugly long-winded way of accessing xml elements... // good thing there's RVariant!... elStub = (XmlElement)xml.DocumentElement.GetElementsByTagName("stub")[0]; elOneLevelList = (XmlElement)xml.DocumentElement.GetElementsByTagName("oneLevelList")[0]; elOneLevelDict = (XmlElement)xml.DocumentElement.GetElementsByTagName("oneLevelDict")[0]; elComplex = (XmlElement)xml.DocumentElement.GetElementsByTagName("complex")[0]; Assert_RVariantsAreEqual(valStub, new RVariant(elStub)); Assert_RVariantsAreEqual(valOneLevelList, new RVariant(elOneLevelList)); Assert_RVariantsAreEqual(valOneLevelDict, new RVariant(elOneLevelDict)); Assert_RVariantsAreEqual(valComplex, new RVariant(elComplex)); }
private XmlDocument GetRoundTrippedXml(RVariant variant, string rootName) { XmlDocument xml = variant.ToXml(rootName); byte[] xmlRaw; using (MemoryStream ms = new MemoryStream()) { using (XmlWriter xw = new XmlTextWriter(ms, Encoding.UTF8)) xml.WriteTo(xw); xmlRaw = ms.ToArray(); } xml = new XmlDocument(); xml.Load(new MemoryStream(xmlRaw)); return xml; }