diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs index 899c072f..897dcab7 100644 --- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs +++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs @@ -3395,6 +3395,20 @@ null//comment Assert.AreEqual(JsonToken.EndArray, reader.TokenType); } + [Test] + public void ReadAsBytes() + { + byte[] data = Encoding.UTF8.GetBytes("Hello world"); + + string json = @"""" + Convert.ToBase64String(data) + @""""; + + JsonTextReader reader = new JsonTextReader(new StringReader(json)); + + byte[] result = reader.ReadAsBytes(); + + CollectionAssert.AreEquivalent(data, result); + } + [Test] public void UnexpectedEndTokenWhenParsingOddEndToken() { diff --git a/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs index c5104398..1844246f 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs @@ -47,6 +47,7 @@ using Assert = Newtonsoft.Json.Tests.XUnitAssert; using NUnit.Framework; #endif using System.IO; +using Newtonsoft.Json.Linq; using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; namespace Newtonsoft.Json.Tests.Serialization @@ -547,6 +548,32 @@ namespace Newtonsoft.Json.Tests.Serialization Assert.AreEqual(0, ((int[])o)[0]); } + [Test] + public void ArrayHandling_JTokenReader() + { + IList errors = new List(); + + JTokenReader reader = new JTokenReader(new JArray(0, true)); + + JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings + { + Error = (sender, arg) => + { + errors.Add(arg.ErrorContext.Error.Message); + arg.ErrorContext.Handled = true; + } + }); + object o = serializer.Deserialize(reader, typeof(int[])); + + Assert.IsNotNull(o); + + Assert.AreEqual(1, errors.Count); + Assert.AreEqual("Error reading integer. Unexpected token: Boolean. Path '[1]'.", errors[0]); + + Assert.AreEqual(1, ((int[])o).Length); + Assert.AreEqual(0, ((int[])o)[0]); + } + [Test] public void ArrayHandlingInObject() {