Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/Newtonsoft.Json.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamesNK <james@newtonking.com>2010-08-07 11:05:37 +0400
committerJamesNK <james@newtonking.com>2010-08-07 11:05:37 +0400
commitfbfadea38a54d2ea995d5fbd66f284bd39ec940d (patch)
tree80bfb7b4ef67b53a18422c350bd2fe848e0f317f /Src/Newtonsoft.Json.Tests
parent4b5d417659782a533121917f646d4acf2c3b1d71 (diff)
-Fix JTokenReader.ReadAsBytes and null values
-Fix JsonProperty inheritance on overriden properties
Diffstat (limited to 'Src/Newtonsoft.Json.Tests')
-rw-r--r--Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs30
-rw-r--r--Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs2
-rw-r--r--Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs15
-rw-r--r--Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs48
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