Skip to content

Commit c19bc8a

Browse files
committed
Merge Newtonsoft.Json 8.0.2
1 parent 60dfc5d commit c19bc8a

File tree

8 files changed

+182
-9
lines changed

8 files changed

+182
-9
lines changed

src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,27 @@ public void AppendCharsWhileReadingNull()
10631063
Assert.AreEqual(JsonToken.Null, reader.TokenType);
10641064
}
10651065

1066+
[Test]
1067+
public void UnexpectedEndAfterReadingN()
1068+
{
1069+
JsonTextReader reader = new JsonTextReader(new StringReader("n"));
1070+
ExceptionAssert.Throws<JsonReaderException>(() => reader.Read(), "Unexpected end when reading JSON. Path '', line 1, position 1.");
1071+
}
1072+
1073+
[Test]
1074+
public void UnexpectedEndAfterReadingNu()
1075+
{
1076+
JsonTextReader reader = new JsonTextReader(new StringReader("nu"));
1077+
ExceptionAssert.Throws<JsonReaderException>(() => reader.Read(), "Unexpected end when reading JSON. Path '', line 1, position 2.");
1078+
}
1079+
1080+
[Test]
1081+
public void UnexpectedEndAfterReadingNe()
1082+
{
1083+
JsonTextReader reader = new JsonTextReader(new StringReader("ne"));
1084+
ExceptionAssert.Throws<JsonReaderException>(() => reader.Read(), "Unexpected end when reading JSON. Path '', line 1, position 2.");
1085+
}
1086+
10661087
[Test]
10671088
public void ReadInt32Overflow()
10681089
{
@@ -2090,6 +2111,15 @@ public void ReadAsDateTimeOffsetNoContent()
20902111
}
20912112
#endif
20922113

2114+
[Test]
2115+
public void ReadAsBooleanNoContent()
2116+
{
2117+
JsonTextReader reader = new JsonTextReader(new StringReader(@""));
2118+
2119+
Assert.IsNull(reader.ReadAsBoolean());
2120+
Assert.AreEqual(JsonToken.None, reader.TokenType);
2121+
}
2122+
20932123
[Test]
20942124
public void ReadAsDecimalBadContent()
20952125
{
@@ -3585,6 +3615,77 @@ public void ReadAsBoolean_UnexpectedEnd()
35853615
ExceptionAssert.Throws<JsonReaderException>(() => { reader.ReadAsBoolean(); }, "Unexpected end when reading JSON. Path '', line 1, position 3.");
35863616
}
35873617

3618+
[Test]
3619+
public void ReadAsBoolean_NullChar()
3620+
{
3621+
string json = '\0' + @"true" + '\0' + '\0';
3622+
3623+
JsonTextReader reader = new JsonTextReader(new StringReader(json));
3624+
3625+
Assert.AreEqual(true, reader.ReadAsBoolean());
3626+
Assert.AreEqual(null, reader.ReadAsBoolean());
3627+
}
3628+
3629+
[Test]
3630+
public void ReadAsBoolean_BadData()
3631+
{
3632+
string json = @"pie";
3633+
3634+
JsonTextReader reader = new JsonTextReader(new StringReader(json));
3635+
3636+
ExceptionAssert.Throws<JsonReaderException>(() => { reader.ReadAsBoolean(); }, "Unexpected character encountered while parsing value: p. Path '', line 1, position 1.");
3637+
}
3638+
3639+
[Test]
3640+
public void ReadAsString_BadData()
3641+
{
3642+
string json = @"pie";
3643+
3644+
JsonTextReader reader = new JsonTextReader(new StringReader(json));
3645+
3646+
ExceptionAssert.Throws<JsonReaderException>(() => { reader.ReadAsString(); }, "Unexpected character encountered while parsing value: p. Path '', line 1, position 1.");
3647+
}
3648+
3649+
[Test]
3650+
public void ReadAsDouble_BadData()
3651+
{
3652+
string json = @"pie";
3653+
3654+
JsonTextReader reader = new JsonTextReader(new StringReader(json));
3655+
3656+
ExceptionAssert.Throws<JsonReaderException>(() => { reader.ReadAsDouble(); }, "Unexpected character encountered while parsing value: p. Path '', line 1, position 1.");
3657+
}
3658+
3659+
[Test]
3660+
public void ReadAsDouble_Boolean()
3661+
{
3662+
string json = @"true";
3663+
3664+
JsonTextReader reader = new JsonTextReader(new StringReader(json));
3665+
3666+
ExceptionAssert.Throws<JsonReaderException>(() => { reader.ReadAsDouble(); }, "Unexpected character encountered while parsing value: t. Path '', line 1, position 1.");
3667+
}
3668+
3669+
[Test]
3670+
public void ReadAsBytes_BadData()
3671+
{
3672+
string json = @"pie";
3673+
3674+
JsonTextReader reader = new JsonTextReader(new StringReader(json));
3675+
3676+
ExceptionAssert.Throws<JsonReaderException>(() => { reader.ReadAsBytes(); }, "Unexpected character encountered while parsing value: p. Path '', line 1, position 1.");
3677+
}
3678+
3679+
[Test]
3680+
public void ReadAsDateTime_BadData()
3681+
{
3682+
string json = @"pie";
3683+
3684+
JsonTextReader reader = new JsonTextReader(new StringReader(json));
3685+
3686+
ExceptionAssert.Throws<JsonReaderException>(() => { reader.ReadAsDateTime(); }, "Unexpected character encountered while parsing value: p. Path '', line 1, position 1.");
3687+
}
3688+
35883689
[Test]
35893690
public void ReadAsDateTime_Boolean()
35903691
{

src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@
3939
#endif
4040
using Newtonsoft.Json;
4141
using System.IO;
42+
#if !(NET20 || NET35 || PORTABLE40 || PORTABLE)
43+
using System.Numerics;
44+
#endif
4245
using Newtonsoft.Json.Linq;
4346
using Newtonsoft.Json.Tests.Serialization;
4447
using Newtonsoft.Json.Tests.TestObjects;
@@ -742,6 +745,21 @@ public void ReadAsDouble_InvalidToken()
742745
"Error reading double. Unexpected token: StartArray. Path ''.");
743746
}
744747

748+
[Test]
749+
public void ReadAsBoolean_InvalidToken()
750+
{
751+
JArray a = new JArray
752+
{
753+
1, 2
754+
};
755+
756+
JTokenReader reader = new JTokenReader(a);
757+
758+
ExceptionAssert.Throws<JsonReaderException>(
759+
() => { reader.ReadAsBoolean(); },
760+
"Error reading boolean. Unexpected token: StartArray. Path ''.");
761+
}
762+
745763
[Test]
746764
public void ReadAsDateTime_InvalidToken()
747765
{
@@ -844,6 +862,48 @@ public void ReadAsDouble_Integer_Success()
844862
Assert.AreEqual(1d, reader.ReadAsDouble());
845863
}
846864

865+
#if !(NET20 || NET35 || PORTABLE40 || PORTABLE)
866+
[Test]
867+
public void ReadAsBoolean_BigInteger_Success()
868+
{
869+
JValue s = new JValue(BigInteger.Parse("99999999999999999999999999999999999999999999999999999999999999999999999999"));
870+
871+
JTokenReader reader = new JTokenReader(s);
872+
873+
Assert.AreEqual(true, reader.ReadAsBoolean());
874+
}
875+
#endif
876+
877+
[Test]
878+
public void ReadAsBoolean_String_Success()
879+
{
880+
JValue s = JValue.CreateString("true");
881+
882+
JTokenReader reader = new JTokenReader(s);
883+
884+
Assert.AreEqual(true, reader.ReadAsBoolean());
885+
}
886+
887+
[Test]
888+
public void ReadAsBoolean_Null_Success()
889+
{
890+
JValue n = JValue.CreateNull();
891+
892+
JTokenReader reader = new JTokenReader(n);
893+
894+
Assert.AreEqual(null, reader.ReadAsBoolean());
895+
}
896+
897+
[Test]
898+
public void ReadAsBoolean_Integer_Success()
899+
{
900+
JValue n = new JValue(1);
901+
902+
JTokenReader reader = new JTokenReader(n);
903+
904+
Assert.AreEqual(true, reader.ReadAsBoolean());
905+
}
906+
847907
[Test]
848908
public void ReadAsDateTime_Null_Success()
849909
{

src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,4 @@
7676
// by using the '*' as shown below:
7777

7878
[assembly: AssemblyVersion("8.0.0.0")]
79-
[assembly: AssemblyFileVersion("8.0.1.0")]
79+
[assembly: AssemblyFileVersion("8.0.2.19309")]

src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,8 @@ public void Serialize()
265265
{ "1", "!" },
266266
{ "Two", "!!" },
267267
{ "III", "!!!" }
268-
}
268+
},
269+
Double = 1.1d
269270
},
270271
new JsonSerializerSettings
271272
{
@@ -317,7 +318,8 @@ public void Deserialize()
317318
""1"": ""!"",
318319
""Two"": ""!!"",
319320
""III"": ""!!!""
320-
}
321+
},
322+
""Double"": 1.1
321323
}",
322324
new JsonSerializerSettings
323325
{
@@ -329,6 +331,7 @@ public void Deserialize()
329331
Assert.AreEqual(1, o2.Version.Major);
330332
Assert.AreEqual(2, o2.Version.Minor);
331333
Assert.AreEqual(3, o2.StringDictionary.Count);
334+
Assert.AreEqual(1.1d, o2.Double);
332335

333336
Assert.AreEqual("Started deserializing Newtonsoft.Json.Tests.Serialization.TraceTestObject. Path 'IntList', line 2, position 12.", traceWriter.TraceRecords[0].Message);
334337
Assert.AreEqual("Started deserializing System.Collections.Generic.IList`1[System.Int32]. Path 'IntList', line 2, position 14.", traceWriter.TraceRecords[1].Message);
@@ -376,7 +379,8 @@ public void Populate()
376379
""1"": ""!"",
377380
""Two"": ""!!"",
378381
""III"": ""!!!""
379-
}
382+
},
383+
""Double"": 1.1
380384
}",
381385
o2,
382386
new JsonSerializerSettings
@@ -390,6 +394,7 @@ public void Populate()
390394
Assert.AreEqual(1, o2.Version.Major);
391395
Assert.AreEqual(2, o2.Version.Minor);
392396
Assert.AreEqual(3, o2.StringDictionary.Count);
397+
Assert.AreEqual(1.1d, o2.Double);
393398

394399
Assert.AreEqual("Started deserializing Newtonsoft.Json.Tests.Serialization.TraceTestObject. Path 'IntList', line 2, position 12.", traceWriter.TraceRecords[0].Message);
395400
Assert.AreEqual("Started deserializing System.Collections.Generic.IList`1[System.Int32]. Path 'IntList', line 2, position 14.", traceWriter.TraceRecords[1].Message);
@@ -992,6 +997,7 @@ public void TraceJsonReaderTest()
992997
""U3RyaW5nIQ=="",
993998
1,
994999
1.1,
1000+
1.2,
9951001
9999999990000000000000000000000000000000000,
9961002
null,
9971003
undefined,
@@ -1050,6 +1056,10 @@ public void TraceJsonReaderTest()
10501056
Assert.AreEqual(JsonToken.Float, traceReader.TokenType);
10511057
Assert.AreEqual(1.1m, traceReader.Value);
10521058

1059+
traceReader.ReadAsDouble();
1060+
Assert.AreEqual(JsonToken.Float, traceReader.TokenType);
1061+
Assert.AreEqual(1.2d, traceReader.Value);
1062+
10531063
traceReader.Read();
10541064
Assert.AreEqual(JsonToken.Integer, traceReader.TokenType);
10551065
Assert.AreEqual(typeof(BigInteger), traceReader.ValueType);
@@ -1142,6 +1152,7 @@ public class TraceTestObject
11421152
public string[] StringArray { get; set; }
11431153
public Version Version { get; set; }
11441154
public IDictionary<string, string> StringDictionary { get; set; }
1155+
public double Double { get; set; }
11451156
}
11461157

11471158
public class IntegerTestClass

src/Newtonsoft.Json/JsonTextReader.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ public override string ReadAsString()
449449
public override byte[] ReadAsBytes()
450450
{
451451
EnsureBuffer();
452-
bool isWrappedArray = false;
452+
bool isWrapped = false;
453453

454454
switch (_currentState)
455455
{
@@ -477,7 +477,7 @@ public override byte[] ReadAsBytes()
477477
case '\'':
478478
ParseString(currentChar, ReadType.ReadAsBytes);
479479
byte[] data = (byte[])Value;
480-
if (isWrappedArray)
480+
if (isWrapped)
481481
{
482482
ReaderReadAndAssert();
483483
if (TokenType != JsonToken.EndObject)
@@ -491,7 +491,7 @@ public override byte[] ReadAsBytes()
491491
_charPos++;
492492
SetToken(JsonToken.StartObject);
493493
ReadIntoWrappedTypeObject();
494-
isWrappedArray = true;
494+
isWrapped = true;
495495
break;
496496
case '[':
497497
_charPos++;
@@ -1564,7 +1564,8 @@ private bool ParseValue()
15641564
}
15651565
else
15661566
{
1567-
CreateUnexpectedEndException();
1567+
_charPos++;
1568+
throw CreateUnexpectedEndException();
15681569
}
15691570
return true;
15701571
case 'N':

src/Newtonsoft.Json/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,5 @@
9797
// by using the '*' as shown below:
9898

9999
[assembly: AssemblyVersion("8.0.0.0")]
100-
[assembly: AssemblyFileVersion("8.0.1.0")]
100+
[assembly: AssemblyFileVersion("8.0.2.19309")]
101101
[assembly: CLSCompliant(true)]
0 Bytes
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)