From 5982f1c514bc8998b2f8d47b03b3f472cf3070cf Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Sat, 24 Feb 2018 11:04:59 +1300 Subject: [PATCH] -Tests --- Src/Newtonsoft.Json.Tests/DemoTests.cs | 71 ++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/Src/Newtonsoft.Json.Tests/DemoTests.cs b/Src/Newtonsoft.Json.Tests/DemoTests.cs index ba0f1887..51b78124 100644 --- a/Src/Newtonsoft.Json.Tests/DemoTests.cs +++ b/Src/Newtonsoft.Json.Tests/DemoTests.cs @@ -28,7 +28,11 @@ using System; using System.Buffers; #endif using System.Collections.Generic; +#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD2_0 +using System.Data; +#endif using System.IO; +using System.Linq; using System.Text; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; @@ -610,6 +614,73 @@ namespace Newtonsoft.Json.Tests } #endif +#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD2_0 + [Test] + public void SerializeDataTable() + { + DataTable dt = new DataTable(); + dt.Columns.Add("PackageId", typeof(string)); + dt.Columns.Add("Version", typeof(string)); + dt.Columns.Add("ReleaseDate", typeof(DateTime)); + + dt.Rows.Add("Newtonsoft.Json", "11.0.1", new DateTime(2018, 2, 17)); + dt.Rows.Add("Newtonsoft.Json", "10.0.3", new DateTime(2017, 6, 18)); + + string json = JsonConvert.SerializeObject(dt, Formatting.Indented); + + Console.WriteLine(json); + // [ + // { + // "PackageId": "Newtonsoft.Json", + // "Version": "11.0.1", + // "ReleaseDate": "2018-02-17T00:00:00" + // }, + // { + // "PackageId": "Newtonsoft.Json", + // "Version": "10.0.3", + // "ReleaseDate": "2017-06-18T00:00:00" + // } + // ] + + StringAssert.AreEqual(@"[ + { + ""PackageId"": ""Newtonsoft.Json"", + ""Version"": ""11.0.1"", + ""ReleaseDate"": ""2018-02-17T00:00:00"" + }, + { + ""PackageId"": ""Newtonsoft.Json"", + ""Version"": ""10.0.3"", + ""ReleaseDate"": ""2017-06-18T00:00:00"" + } +]", json); + } +#endif + + [Test] + public void JsonPathRegex() + { + JArray packages = JArray.Parse(@"[ + { + ""PackageId"": ""Newtonsoft.Json"", + ""Version"": ""11.0.1"", + ""ReleaseDate"": ""2018-02-17T00:00:00"" + }, + { + ""PackageId"": ""NUnit"", + ""Version"": ""3.9.0"", + ""ReleaseDate"": ""2017-11-10T00:00:00"" + } + ]"); + + List newtonsoftPackages = packages.SelectTokens(@"$.[?(@.PackageId =~ /^Newtonsoft\.(.*)$/)]").ToList(); + + Console.WriteLine(newtonsoftPackages.Count); + // 1 + + Assert.AreEqual(1, newtonsoftPackages.Count); + } + #if !(NET20 || NET35 || NET40 || PORTABLE || PORTABLE40 || DNXCORE50) || NETSTANDARD2_0 [Test] public async Task AsyncDemo()