Skip to content

Commit 9940488

Browse files
committed
Merged with upstream 9.0.1
1 parent 6685fa0 commit 9940488

File tree

73 files changed

+452163
-978
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+452163
-978
lines changed

src/Newtonsoft.Json.Tests/JsonTextReaderTest.cs

Lines changed: 121 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,126 @@ namespace Newtonsoft.Json.Tests
6161
[TestFixture]
6262
public class JsonTextReaderTest : TestFixtureBase
6363
{
64+
[Test]
65+
public void Float_NaN_Read()
66+
{
67+
const string testJson = "{float: NaN}";
68+
69+
JsonTextReader reader = new JsonTextReader(new StringReader(testJson));
70+
71+
Assert.IsTrue(reader.Read());
72+
Assert.IsTrue(reader.Read());
73+
Assert.IsTrue(reader.Read());
74+
75+
Assert.AreEqual(JsonToken.Float, reader.TokenType);
76+
Assert.AreEqual(double.NaN, reader.Value);
77+
78+
Assert.IsTrue(reader.Read());
79+
Assert.IsFalse(reader.Read());
80+
}
81+
82+
[Test]
83+
public void Float_NaN_ReadAsInt32()
84+
{
85+
const string testJson = "{float: NaN}";
86+
87+
JsonTextReader reader = new JsonTextReader(new StringReader(testJson));
88+
89+
Assert.IsTrue(reader.Read());
90+
Assert.IsTrue(reader.Read());
91+
92+
ExceptionAssert.Throws<JsonReaderException>(() => reader.ReadAsInt32(), "Cannot read NaN value. Path 'float', line 1, position 11.");
93+
}
94+
95+
[Test]
96+
public void Float_NaNAndInifinity_ReadAsDouble()
97+
{
98+
const string testJson = @"[
99+
NaN,
100+
Infinity,
101+
-Infinity
102+
]"; ;
103+
104+
JsonTextReader reader = new JsonTextReader(new StringReader(testJson));
105+
106+
Assert.IsTrue(reader.Read());
107+
108+
Assert.AreEqual(double.NaN, reader.ReadAsDouble());
109+
Assert.AreEqual(JsonToken.Float, reader.TokenType);
110+
Assert.AreEqual(double.NaN, reader.Value);
111+
112+
Assert.AreEqual(double.PositiveInfinity, reader.ReadAsDouble());
113+
Assert.AreEqual(JsonToken.Float, reader.TokenType);
114+
Assert.AreEqual(double.PositiveInfinity, reader.Value);
115+
116+
Assert.AreEqual(double.NegativeInfinity, reader.ReadAsDouble());
117+
Assert.AreEqual(JsonToken.Float, reader.TokenType);
118+
Assert.AreEqual(double.NegativeInfinity, reader.Value);
119+
120+
Assert.IsTrue(reader.Read());
121+
Assert.IsFalse(reader.Read());
122+
}
123+
124+
[Test]
125+
public void Float_NaNAndInifinity_ReadAsString()
126+
{
127+
const string testJson = @"[
128+
NaN,
129+
Infinity,
130+
-Infinity
131+
]"; ;
132+
133+
JsonTextReader reader = new JsonTextReader(new StringReader(testJson));
134+
135+
Assert.IsTrue(reader.Read());
136+
137+
Assert.AreEqual(JsonConvert.NaN, reader.ReadAsString());
138+
Assert.AreEqual(JsonToken.String, reader.TokenType);
139+
Assert.AreEqual(JsonConvert.NaN, reader.Value);
140+
141+
Assert.AreEqual(JsonConvert.PositiveInfinity, reader.ReadAsString());
142+
Assert.AreEqual(JsonToken.String, reader.TokenType);
143+
Assert.AreEqual(JsonConvert.PositiveInfinity, reader.Value);
144+
145+
Assert.AreEqual(JsonConvert.NegativeInfinity, reader.ReadAsString());
146+
Assert.AreEqual(JsonToken.String, reader.TokenType);
147+
Assert.AreEqual(JsonConvert.NegativeInfinity, reader.Value);
148+
149+
Assert.IsTrue(reader.Read());
150+
Assert.IsFalse(reader.Read());
151+
}
152+
153+
[Test]
154+
public void FloatParseHandling_ReadAsString()
155+
{
156+
string json = "[9223372036854775807, 1.7976931348623157E+308, 792281625142643375935439503.35, 792281625142643375935555555555555555555555555555555555555555555555555439503.35]";
157+
158+
JsonTextReader reader = new JsonTextReader(new StringReader(json));
159+
reader.FloatParseHandling = Json.FloatParseHandling.Decimal;
160+
161+
Assert.IsTrue(reader.Read());
162+
Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
163+
164+
Assert.AreEqual("9223372036854775807", reader.ReadAsString());
165+
Assert.AreEqual(JsonToken.String, reader.TokenType);
166+
Assert.AreEqual("9223372036854775807", reader.Value);
167+
168+
Assert.AreEqual("1.7976931348623157E+308", reader.ReadAsString());
169+
Assert.AreEqual(JsonToken.String, reader.TokenType);
170+
Assert.AreEqual("1.7976931348623157E+308", reader.Value);
171+
172+
Assert.AreEqual("792281625142643375935439503.35", reader.ReadAsString());
173+
Assert.AreEqual(JsonToken.String, reader.TokenType);
174+
Assert.AreEqual("792281625142643375935439503.35", reader.Value);
175+
176+
Assert.AreEqual("792281625142643375935555555555555555555555555555555555555555555555555439503.35", reader.ReadAsString());
177+
Assert.AreEqual(JsonToken.String, reader.TokenType);
178+
Assert.AreEqual("792281625142643375935555555555555555555555555555555555555555555555555439503.35", reader.Value);
179+
180+
Assert.IsTrue(reader.Read());
181+
Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
182+
}
183+
64184
[Test]
65185
public void LineInfoAndNewLines()
66186
{
@@ -455,7 +575,7 @@ public void FloatParseHandling_NaN()
455575
Assert.IsTrue(reader.Read());
456576
Assert.AreEqual(JsonToken.StartArray, reader.TokenType);
457577

458-
ExceptionAssert.Throws<JsonReaderException>(() => reader.Read(), "Cannot read NaN as a decimal.");
578+
ExceptionAssert.Throws<JsonReaderException>(() => reader.Read(), "Cannot read NaN value. Path '', line 1, position 4.");
459579
}
460580

461581
[Test]

src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,6 @@ public void WriteTokenDirect_BadValue()
960960
#endif
961961
"Input string was not in a correct format.");
962962

963-
964963
ExceptionAssert.Throws<ArgumentNullException>(() => { jsonWriter.WriteToken(JsonToken.Integer); },
965964
#if UNITY3D
966965
@"Argument cannot be null.

0 commit comments

Comments
 (0)