2 using System.Collections;
3 using System.Collections.Generic;
4 using System.ComponentModel;
7 using Newtonsoft.Json.Linq;
11 namespace Newtonsoft.Json.Tests.Linq
13 public class JPropertyTests : TestFixtureBase
16 public void NullValue()
18 JProperty p = new JProperty("TestProperty", null);
19 Assert.IsNotNull(p.Value);
20 Assert.AreEqual(JTokenType.Null, p.Value.Type);
21 Assert.AreEqual(p, p.Value.Parent);
24 Assert.IsNotNull(p.Value);
25 Assert.AreEqual(JTokenType.Null, p.Value.Type);
26 Assert.AreEqual(p, p.Value.Parent);
31 public void ListChanged()
33 JProperty p = new JProperty("TestProperty", null);
36 ListChangedType? listChangedType = null;
39 l.ListChanged += (sender, args) =>
41 listChangedType = args.ListChangedType;
42 index = args.NewIndex;
47 Assert.AreEqual(ListChangedType.ItemChanged, listChangedType.Value);
48 Assert.AreEqual(0, index.Value);
53 public void IListCount()
55 JProperty p = new JProperty("TestProperty", null);
58 Assert.AreEqual(1, l.Count);
62 [ExpectedException(typeof(Exception), ExpectedMessage = "Cannot add or remove items from Newtonsoft.Json.Linq.JProperty.")]
63 public void IListClear()
65 JProperty p = new JProperty("TestProperty", null);
72 [ExpectedException(typeof(Exception), ExpectedMessage = "Newtonsoft.Json.Linq.JProperty cannot have multiple values.")]
73 public void IListAdd()
75 JProperty p = new JProperty("TestProperty", null);
82 [ExpectedException(typeof(Exception), ExpectedMessage = "Cannot add or remove items from Newtonsoft.Json.Linq.JProperty.")]
83 public void IListRemove()
85 JProperty p = new JProperty("TestProperty", null);
94 JsonReader reader = new JsonTextReader(new StringReader("{'propertyname':['value1']}"));
97 Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
100 JProperty property = JProperty.Load(reader);
101 Assert.AreEqual("propertyname", property.Name);
102 Assert.IsTrue(JToken.DeepEquals(JArray.Parse("['value1']"), property.Value));
104 Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
106 reader = new JsonTextReader(new StringReader("{'propertyname':null}"));
109 Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
112 property = JProperty.Load(reader);
113 Assert.AreEqual("propertyname", property.Name);
114 Assert.IsTrue(JToken.DeepEquals(new JValue(null, JTokenType.Null), property.Value));
116 Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
120 public void MultiContentConstructor()
122 JProperty p = new JProperty("error", new List<string> { "one", "two" });
123 JArray a = (JArray) p.Value;
125 Assert.AreEqual(a.Count, 2);
126 Assert.AreEqual("one", (string)a[0]);
127 Assert.AreEqual("two", (string)a[1]);
131 [ExpectedException(typeof(Exception), ExpectedMessage = "Newtonsoft.Json.Linq.JProperty cannot have multiple values.")]
132 public void IListGenericAdd()
134 IList<JToken> t = new JProperty("error", new List<string> { "one", "two" });