Skip to content

Commit 02b6b3d

Browse files
committed
Fix special handling
1 parent 76a80dc commit 02b6b3d

File tree

1 file changed

+28
-21
lines changed

1 file changed

+28
-21
lines changed

dotnet/src/webdriver/BiDi/Communication/Json/Converters/SpecialNumberConverter.cs

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,31 +31,38 @@ internal sealed class SpecialNumberConverter : JsonConverter<double>
3131
{
3232
public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
3333
{
34-
if (reader.TryGetDouble(out double d))
34+
switch (reader.TokenType)
3535
{
36-
return d;
37-
}
36+
case JsonTokenType.Number:
37+
return reader.GetDouble();
3838

39-
var str = reader.GetString() ?? throw new JsonException("Cannot convert from null to special number value");
39+
case JsonTokenType.String:
40+
var str = reader.GetString()!;
41+
if (str.Equals("-0", StringComparison.Ordinal))
42+
{
43+
return -0.0;
44+
}
4045

41-
if (str.Equals("-0", StringComparison.Ordinal))
42-
{
43-
return -0.0;
44-
}
45-
else if (str.Equals("NaN", StringComparison.Ordinal))
46-
{
47-
return double.NaN;
48-
}
49-
else if (str.Equals("Infinity", StringComparison.Ordinal))
50-
{
51-
return double.PositiveInfinity;
52-
}
53-
else if (str.Equals("-Infinity", StringComparison.Ordinal))
54-
{
55-
return double.NegativeInfinity;
56-
}
46+
if (str.Equals("NaN", StringComparison.Ordinal))
47+
{
48+
return double.NaN;
49+
}
50+
51+
if (str.Equals("Infinity", StringComparison.Ordinal))
52+
{
53+
return double.PositiveInfinity;
54+
}
5755

58-
throw new JsonException();
56+
if (str.Equals("-Infinity", StringComparison.Ordinal))
57+
{
58+
return double.NegativeInfinity;
59+
}
60+
61+
throw new JsonException("JSON string could not be parsed to a special number");
62+
63+
default:
64+
throw new JsonException($"JSON type not a number or string: {reader.TokenType}");
65+
}
5966
}
6067

6168
public override void Write(Utf8JsonWriter writer, double value, JsonSerializerOptions options)

0 commit comments

Comments
 (0)