public static void When_ReadOnlyJObject_Parse() { var arr = new JArray(new[] { new JValue("hi"), new JValue(456), new JValue(false), null }); var exp = new JObject { ["Foo"] = arr, ["Bar"] = 123 }; var expected = new ReadOnlyJObject(exp); var actual = new ReadOnlyJObject((JObject)JToken.Parse(expected.ToString())); Assert.Equal(expected, actual, ReadOnlyJObjectComparer.Default); }
public static void When_ReadOnlyJObject_TryGetValue() { var jobj = new JObject { ["bool"] = new JValue(true), ["int"] = new JValue(123), ["string"] = new JValue("hello"), ["object"] = new JObject { ["dt"] = "abc" }, ["array"] = new JArray(new JToken[] { new JValue(123.456), new JObject { ["dto"] = 456 } }) }; var json = new ReadOnlyJObject(jobj); Assert.False(json.Equals(null)); Assert.True(!(json is null)); Assert.Equal(jobj.Count, json.Count); Assert.Equal(jobj.ToString(), json.ToString()); ReadOnlyJObject clone = json.DeepClone(); Assert.Equal(json, clone, ReadOnlyJObjectComparer.Default); Assert.Equal(json.Count, clone.Count); Assert.Equal(json.ToString(), clone.ToString()); var mutable = json.ToJObject(); Assert.Equal(json.ToString(), mutable.ToString()); Assert.True(json["bool"].Type == JTokenType.Boolean); Assert.True(json.TryGetValue("bool", out JToken jv) && (bool)jv); Assert.True(json["int"].Type == JTokenType.Integer); Assert.True(json.TryGetValue("int", out jv) && jv.Value <long>() == 123); Assert.True(json["string"].Type == JTokenType.String); Assert.True(json.TryGetValue("string", out jv) && jv.Value <string>() == "hello"); Assert.True(json["object"].Type == JTokenType.Object); Assert.True(json["array"].Type == JTokenType.Array); Assert.False(json.TryGetValue("dne", out jv)); }