From 216ff4ab8b5304d2714a9321aab97e8ddbc28bd5 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Sat, 10 Sep 2016 18:41:30 +1200 Subject: [PATCH] -Tests --- .../Converters/XmlNodeConverterTest.cs | 103 ++++++++++++++---- 1 file changed, 83 insertions(+), 20 deletions(-) diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs index 8684df2c..2bdc0af2 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs @@ -23,13 +23,14 @@ // OTHER DEALINGS IN THE SOFTWARE. #endregion +using System.Globalization; #if NET20 using Newtonsoft.Json.Utilities.LinqBridge; #else using System.Linq; #endif using System.Text; -#if !(NETFX_CORE || PORTABLE || DNXCORE50 || PORTABLE40) +#if !(NETFX_CORE || DNXCORE50 || PORTABLE40) using System; using System.Collections.Generic; using Newtonsoft.Json.Tests.Serialization; @@ -61,6 +62,7 @@ namespace Newtonsoft.Json.Tests.Converters [TestFixture] public class XmlNodeConverterTest : TestFixtureBase { +#if !PORTABLE private string SerializeXmlNode(XmlNode node) { string json = JsonConvert.SerializeXmlNode(node, Formatting.Indented); @@ -128,6 +130,24 @@ namespace Newtonsoft.Json.Tests.Converters return node; } +#endif + + private string IndentXml(string xml) + { + XmlReader reader = XmlReader.Create(new StringReader(xml)); + + StringWriter sw = new StringWriter(); + XmlWriter writer = XmlWriter.Create(sw, new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }); + + while (reader.Read()) + { + writer.WriteNode(reader, false); + } + + writer.Flush(); + + return sw.ToString(); + } #if !NET20 [Test] @@ -228,6 +248,7 @@ namespace Newtonsoft.Json.Tests.Converters } #endif +#if !PORTABLE [Test] public void MultipleNamespacesXmlDocument() { @@ -293,6 +314,7 @@ namespace Newtonsoft.Json.Tests.Converters } ]", json); } +#endif #if !NET20 [Test] @@ -405,6 +427,7 @@ namespace Newtonsoft.Json.Tests.Converters ", doc.ToString()); } +#if !PORTABLE [Test] public void SerializeEmptyDocument() { @@ -430,6 +453,7 @@ namespace Newtonsoft.Json.Tests.Converters json = JsonConvert.SerializeXNode(doc1, Formatting.Indented, true); Assert.AreEqual(@"""""", json); } +#endif [Test] public void SerializeAndDeserializeXmlWithNamespaceInChildrenAndNoValueInChildren() @@ -449,6 +473,7 @@ namespace Newtonsoft.Json.Tests.Converters Assert.IsTrue(equals); } +#if !PORTABLE [Test] public void DeserializeUndeclaredNamespacePrefix() { @@ -461,7 +486,9 @@ namespace Newtonsoft.Json.Tests.Converters Assert.AreEqual(doc.OuterXml, xdoc.ToString()); } #endif +#endif +#if !PORTABLE [Test] public void DeserializeMultipleRootElements() { @@ -1150,6 +1177,7 @@ namespace Newtonsoft.Json.Tests.Converters () => { JsonConvert.DeserializeXmlNode(json); }, "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName. Path 'photos', line 1, position 26."); } +#endif #if !NET20 [Test] @@ -1168,9 +1196,11 @@ namespace Newtonsoft.Json.Tests.Converters { string json = @"{""count"": 773840,""photos"": 773840}"; +#if !PORTABLE XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot"); Assert.AreEqual(@"773840773840", newDoc.InnerXml); +#endif #if !NET20 XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot"); @@ -1198,7 +1228,8 @@ namespace Newtonsoft.Json.Tests.Converters ] }"; - XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot"); + #if !PORTABLE + XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot"); string xml = IndentXml(newDoc.InnerXml); @@ -1215,6 +1246,7 @@ namespace Newtonsoft.Json.Tests.Converters assets/images/resized/0001/1070/11070v1-max-250x250.jpg ", IndentXml(newDoc.InnerXml)); +#endif #if !NET20 XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot"); @@ -1234,8 +1266,10 @@ namespace Newtonsoft.Json.Tests.Converters ", IndentXml(newXDoc.ToString(SaveOptions.DisableFormatting))); #endif +#if !PORTABLE string newJson = JsonConvert.SerializeXmlNode(newDoc, Formatting.Indented); Console.WriteLine(newJson); +#endif } [Test] @@ -1257,6 +1291,7 @@ namespace Newtonsoft.Json.Tests.Converters ] }"; +#if !PORTABLE XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot", true); StringAssert.AreEqual(@" @@ -1272,6 +1307,7 @@ namespace Newtonsoft.Json.Tests.Converters assets/images/resized/0001/1070/11070v1-max-250x250.jpg ", IndentXml(newDoc.InnerXml)); +#endif #if !NET20 XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot", true); @@ -1291,8 +1327,10 @@ namespace Newtonsoft.Json.Tests.Converters ", IndentXml(newXDoc.ToString(SaveOptions.DisableFormatting))); #endif +#if !PORTABLE string newJson = JsonConvert.SerializeXmlNode(newDoc, Formatting.Indented, true); StringAssert.AreEqual(json, newJson); +#endif } [Test] @@ -1315,9 +1353,11 @@ namespace Newtonsoft.Json.Tests.Converters ] }"; +#if !PORTABLE XmlDocument newDoc = JsonConvert.DeserializeXmlNode(json, "myRoot"); Assert.AreEqual(@"113150assets/images/resized/0001/1070/11070v1-max-150x150.jpg189250assets/images/resized/0001/1070/11070v1-max-250x250.jpg341450assets/images/resized/0001/1070/11070v1-max-450x450.jpg", newDoc.InnerXml); +#endif #if !NET20 XDocument newXDoc = JsonConvert.DeserializeXNode(json, "myRoot"); @@ -1326,6 +1366,7 @@ namespace Newtonsoft.Json.Tests.Converters #endif } +#if !PORTABLE [Test] public void Encoding() { @@ -1338,7 +1379,9 @@ namespace Newtonsoft.Json.Tests.Converters ""name"": ""O\""Connor"" }", json); } +#endif +#if !PORTABLE [Test] public void SerializeComment() { @@ -1895,23 +1938,6 @@ namespace Newtonsoft.Json.Tests.Converters }", output2); } - private string IndentXml(string xml) - { - XmlReader reader = XmlReader.Create(new StringReader(xml)); - - StringWriter sw = new StringWriter(); - XmlWriter writer = XmlWriter.Create(sw, new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }); - - while (reader.Read()) - { - writer.WriteNode(reader, false); - } - - writer.Flush(); - - return sw.ToString(); - } - [Test] public void OmitRootObject() { @@ -2062,6 +2088,7 @@ namespace Newtonsoft.Json.Tests.Converters } } } +#endif #if !NET20 [Test] @@ -2302,6 +2329,7 @@ namespace Newtonsoft.Json.Tests.Converters } #endif +#if !PORTABLE [Test] public void DeserializeXmlNodeDefaultNamespace() { @@ -2560,6 +2588,7 @@ namespace Newtonsoft.Json.Tests.Converters Assert.AreEqual(@"", xmldoc.InnerXml); } +#endif [Test] public void SerializingXmlNamespaceScope() @@ -2577,7 +2606,7 @@ namespace Newtonsoft.Json.Tests.Converters Assert.AreEqual(@"{""root"":{""@xmlns"":""http://www.example.com/ns"",""a"":null,""bns:b"":{""@xmlns:bns"":""http://www.example.com/ns""},""c"":null}}", json1); #endif -#if !(NETFX_CORE) +#if !(PORTABLE) var xml1 = new XmlDocument(); xml1.LoadXml(xmlString); @@ -2628,6 +2657,7 @@ namespace Newtonsoft.Json.Tests.Converters } #endif +#if !PORTABLE [Test] public void SerializeAndDeserializeXmlElementWithNamespaceInChildrenRootDontHaveNameSpace() { @@ -2687,8 +2717,41 @@ namespace Newtonsoft.Json.Tests.Converters Assert.AreEqual("null", json); } +#endif #if !NET20 + [Test] + public void DateTimeToXml_Unspecified() + { + string json = @"{""CreatedDate"": ""2014-01-23T00:00:00""}"; + var dxml = JsonConvert.DeserializeXNode(json, "root"); + Assert.AreEqual("2014-01-23T00:00:00", dxml.Root.Element("CreatedDate").Value); + + Console.WriteLine("DateTimeToXml_Unspecified: " + dxml.Root.Element("CreatedDate").Value); + } + + [Test] + public void DateTimeToXml_Utc() + { + string json = @"{""CreatedDate"": ""2014-01-23T00:00:00Z""}"; + var dxml = JsonConvert.DeserializeXNode(json, "root"); + Assert.AreEqual("2014-01-23T00:00:00Z", dxml.Root.Element("CreatedDate").Value); + + Console.WriteLine("DateTimeToXml_Utc: " + dxml.Root.Element("CreatedDate").Value); + } + + [Test] + public void DateTimeToXml_Local() + { + DateTime dt = DateTime.Parse("2014-01-23T00:00:00+01:00"); + + string json = @"{""CreatedDate"": ""2014-01-23T00:00:00+01:00""}"; + var dxml = JsonConvert.DeserializeXNode(json, "root"); + Assert.AreEqual(dt.ToString("yyyy-MM-ddTHH:mm:sszzzzzzz", CultureInfo.InvariantCulture), dxml.Root.Element("CreatedDate").Value); + + Console.WriteLine("DateTimeToXml_Local: " + dxml.Root.Element("CreatedDate").Value); + } + [Test] public void SerializeEmptyNodeAndOmitRoot_XElement() {