diff options
author | JamesNK <james@newtonking.com> | 2010-08-07 11:05:37 +0400 |
---|---|---|
committer | JamesNK <james@newtonking.com> | 2010-08-07 11:05:37 +0400 |
commit | fbfadea38a54d2ea995d5fbd66f284bd39ec940d (patch) | |
tree | 80bfb7b4ef67b53a18422c350bd2fe848e0f317f /Src/Newtonsoft.Json.Tests | |
parent | 4b5d417659782a533121917f646d4acf2c3b1d71 (diff) |
-Fix JTokenReader.ReadAsBytes and null values
-Fix JsonProperty inheritance on overriden properties
Diffstat (limited to 'Src/Newtonsoft.Json.Tests')
4 files changed, 90 insertions, 5 deletions
diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs index 17b9a4b..3d28163 100644 --- a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs +++ b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs @@ -1064,5 +1064,35 @@ namespace Newtonsoft.Json.Tests.Bson Assert.IsFalse(reader.Read());
}
+
+ [Test]
+ public void MultibyteCharacterPropertyNamesAndStrings()
+ {
+ string json = @"{
+ ""ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ"": ""ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ""
+}";
+ JObject parsed = JObject.Parse(json);
+ var memoryStream = new MemoryStream();
+ var bsonWriter = new BsonWriter(memoryStream);
+ parsed.WriteTo(bsonWriter);
+ bsonWriter.Flush();
+ memoryStream.Position = 0;
+
+ BsonReader reader = new BsonReader(memoryStream);
+
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(JsonToken.StartObject, reader.TokenType);
+
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(JsonToken.PropertyName, reader.TokenType);
+ Assert.AreEqual("ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ", reader.Value);
+
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(JsonToken.String, reader.TokenType);
+ Assert.AreEqual("ΕΝΤΟΛΗ ΧΧΧ ΧΧΧΧΧΧΧΧΧ ΤΑ ΠΡΩΤΑΣΦΑΛΙΣΤΗΡΙΑ ΠΟΥ ΔΕΝ ΕΧΟΥΝ ΥΠΟΛΟΙΠΟ ΝΑ ΤΑ ΣΤΕΛΝΟΥΜΕ ΑΠΕΥΘΕΙΑΣ ΣΤΟΥΣ ΠΕΛΑΤΕΣ", reader.Value);
+
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(JsonToken.EndObject, reader.TokenType);
+ }
}
}
\ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs index 123d6b2..2d2dc09 100644 --- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs +++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs @@ -238,7 +238,7 @@ Parameter name: reader")] }
[Test]
- [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unexpected character encountered while parsing value: t. Line 1, position 1.")]
+ [ExpectedException(typeof(JsonReaderException), ExpectedMessage = "Unexpected token when reading bytes: Boolean. Line 1, position 4.")]
public void ReadBytesWithBadCharacter()
{
JsonReader reader = new JsonTextReader(new StringReader(@"true"));
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs b/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs index f3e4a3a..a3e835c 100644 --- a/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs +++ b/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs @@ -290,5 +290,20 @@ namespace Newtonsoft.Json.Tests.Linq Assert.AreEqual(new byte[0], result2.Bytes);
}
+
+ public class ReadAsBytesTestObject
+ {
+ public byte[] Data;
+ }
+
+ [Test]
+ public void ReadAsBytesNull()
+ {
+ JsonSerializer s = new JsonSerializer();
+
+ JToken nullToken = JToken.ReadFrom(new JsonTextReader(new StringReader("{ Data: null }")));
+ ReadAsBytesTestObject x = s.Deserialize<ReadAsBytesTestObject>(new JTokenReader(nullToken));
+ Assert.IsNull(x.Data);
+ }
}
}
\ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs index fa0e14f..9990612 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs @@ -3156,7 +3156,7 @@ keyword such as type of business."" public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
List<string> existingStrings = (List<string>)existingValue;
- List<string> newStrings = new List<string>(existingStrings);
+ List<string> newStrings = new List<string>(existingStrings);
reader.Read();
@@ -3173,7 +3173,7 @@ keyword such as type of business."" public override bool CanConvert(Type objectType)
{
- return (objectType == typeof (List<string>));
+ return (objectType == typeof(List<string>));
}
}
@@ -3357,7 +3357,7 @@ keyword such as type of business."" joe.Manager = mike;
mike.Manager = mike;
- string json = JsonConvert.SerializeObject(new []{ joe, mike }, Formatting.Indented);
+ string json = JsonConvert.SerializeObject(new[] { joe, mike }, Formatting.Indented);
// [
// {
// "Name": "Joe Employee",
@@ -3384,7 +3384,7 @@ keyword such as type of business."" public static implicit operator DictionaryKey(string value)
{
- return new DictionaryKey() {Value = value};
+ return new DictionaryKey() { Value = value };
}
}
@@ -3533,5 +3533,45 @@ keyword such as type of business."" Assert.AreEqual(int.MaxValue, newStruct.MyInt);
}
+
+ //public class TimeZoneOffsetObject
+ //{
+ // public DateTimeOffset Offset { get; set; }
+ //}
+
+ //[Test]
+ //public void ReadWriteTimeZoneOffset()
+ //{
+ // var serializeObject = JsonConvert.SerializeObject(new TimeZoneOffsetObject
+ // {
+ // Offset = new DateTimeOffset(new DateTime(2000, 1, 1), TimeSpan.FromHours(6))
+ // });
+
+ // Assert.AreEqual("{\"Offset\":\"\\/Date(946663200000+0600)\\/\"}", serializeObject);
+ // var deserializeObject = JsonConvert.DeserializeObject<TimeZoneOffsetObject>(serializeObject);
+ // Assert.AreEqual(TimeSpan.FromHours(6), deserializeObject.Offset.Offset); // fails here
+ // Assert.AreEqual(new DateTime(2000, 1, 1), deserializeObject.Offset.Date);
+ //}
+
+ public abstract class LogEvent
+ {
+ [JsonProperty("event")]
+ public abstract string EventName { get; }
+ }
+
+ public class DerivedEvent : LogEvent
+ {
+ public override string EventName { get { return "derived"; } }
+ }
+
+ [Test]
+ public void OverridenPropertyMembers()
+ {
+ string json = JsonConvert.SerializeObject(new DerivedEvent(), Formatting.Indented);
+
+ Assert.AreEqual(@"{
+ ""event"": ""derived""
+}", json);
+ }
}
}
\ No newline at end of file |