This commit is contained in:
James Newton-King
2014-05-11 21:58:36 +12:00
parent f8b1936d1f
commit 7a8f5e43bc
2 changed files with 95 additions and 0 deletions
@@ -52,6 +52,30 @@ namespace Newtonsoft.Json.Tests
[TestFixture]
public class JsonTextWriterTest : TestFixtureBase
{
[Test]
public void NewLine()
{
MemoryStream ms = new MemoryStream();
using (var streamWriter = new StreamWriter(ms, new UTF8Encoding(false)) { NewLine = "\n" })
using (var jsonWriter = new JsonTextWriter(streamWriter)
{
CloseOutput = true,
Indentation = 2,
Formatting = Formatting.Indented
})
{
jsonWriter.WriteStartObject();
jsonWriter.WritePropertyName("prop");
jsonWriter.WriteValue(true);
jsonWriter.WriteEndObject();
}
string json = Encoding.UTF8.GetString(ms.ToArray());
Assert.AreEqual(@"{" + '\n' + @" ""prop"": true" + '\n' + "}", json);
}
[Test]
public void QuoteNameAndStrings()
{
@@ -507,6 +507,77 @@ keyword such as type of business.""
};
}
[Test]
public void FromObjectExample()
{
Post p = new Post
{
Title = "How to use FromObject",
Categories = new [] { "LINQ to JSON" }
};
// serialize Post to JSON then parse JSON – SLOW!
//JObject o = JObject.Parse(JsonConvert.SerializeObject(p));
// create JObject directly from the Post
JObject o = JObject.FromObject(p);
o["Title"] = o["Title"] + " - Super effective!";
string json = o.ToString();
// {
// "Title": "How to use FromObject - It's super effective!",
// "Categories": [
// "LINQ to JSON"
// ]
// }
Assert.AreEqual(@"{
""Title"": ""How to use FromObject - Super effective!"",
""Description"": null,
""Link"": null,
""Categories"": [
""LINQ to JSON""
]
}", json);
}
[Test]
public void QueryingExample()
{
JArray posts = JArray.Parse(@"[
{
'Title': 'JSON Serializer Basics',
'Date': '2013-12-21T00:00:00',
'Categories': []
},
{
'Title': 'Querying LINQ to JSON',
'Date': '2014-06-03T00:00:00',
'Categories': [
'LINQ to JSON'
]
}
]");
JToken serializerBasics = posts
.Single(p => (string)p["Title"] == "JSON Serializer Basics");
// JSON Serializer Basics
IList<JToken> since2012 = posts
.Where(p => (DateTime)p["Date"] > new DateTime(2012, 1, 1)).ToList();
// JSON Serializer Basics
// Querying LINQ to JSON
IList<JToken> linqToJson = posts
.Where(p => p["Categories"].Any(c => (string)c == "LINQ to JSON")).ToList();
// Querying LINQ to JSON
Assert.IsNotNull(serializerBasics);
Assert.AreEqual(2, since2012.Count);
Assert.AreEqual(1, linqToJson.Count);
}
[Test]
public void CreateJTokenTreeNested()
{