public void WriteReadBoundaryDecimals() { StringWriter sw = new StringWriter(); JsonTextWriter writer = new JsonTextWriter(sw); writer.WriteStartArray(); writer.WriteValue(decimal.MaxValue); writer.WriteValue(decimal.MinValue); writer.WriteEndArray(); string json = sw.ToString(); StringReader sr = new StringReader(json); JsonTextReader reader = new JsonTextReader(sr); Assert.True(reader.Read()); decimal? max = reader.ReadAsDecimal(); Assert.Equal(decimal.MaxValue, max); decimal? min = reader.ReadAsDecimal(); Assert.Equal(decimal.MinValue, min); Assert.True(reader.Read()); }
public void ParseHexNumber() { string json = @"0x20"; JsonTextReader reader = new JsonTextReader(new StringReader(json)); reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(32m, reader.Value); }
public void ScientificNotation() { double d; d = Convert.ToDouble("6.0221418e23", CultureInfo.InvariantCulture); Console.WriteLine(d.ToString(new CultureInfo("fr-FR"))); Console.WriteLine(d.ToString("0.#############################################################################")); //CultureInfo info = CultureInfo.GetCultureInfo("fr-FR"); //Console.WriteLine(info.NumberFormat.NumberDecimalSeparator); string json = @"[0e-10,0E-10,0.25e-5,0.3e10,6.0221418e23]"; JsonTextReader reader = new JsonTextReader(new StringReader(json)); reader.Read(); reader.Read(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(0d, reader.Value); reader.Read(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(0d, reader.Value); reader.Read(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(0.0000025d, reader.Value); reader.Read(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(3000000000d, reader.Value); reader.Read(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(602214180000000000000000d, reader.Value); reader.Read(); reader = new JsonTextReader(new StringReader(json)); reader.Read(); reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(0m, reader.Value); reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(0m, reader.Value); reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(0.0000025m, reader.Value); reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(3000000000m, reader.Value); reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(602214180000000000000000m, reader.Value); reader.Read(); }
public void ReadAsDecimal() { string json = @"{""decimal"":-7.92281625142643E+28}"; JsonTextReader reader = new JsonTextReader(new StringReader(json)); Assert.True(reader.Read()); Assert.Equal(JsonToken.StartObject, reader.TokenType); Assert.True(reader.Read()); Assert.Equal(JsonToken.PropertyName, reader.TokenType); decimal? d = reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(typeof(decimal), reader.ValueType); Assert.Equal(-79228162514264300000000000000m, d); Assert.True(reader.Read()); Assert.Equal(JsonToken.EndObject, reader.TokenType); }
public void ReadAsDecimalFrench() { string json = @"{""decimal"":""9,99""}"; JsonTextReader reader = new JsonTextReader(new StringReader(json)); reader.Culture = new CultureInfo("fr-FR"); Assert.True(reader.Read()); Assert.Equal(JsonToken.StartObject, reader.TokenType); Assert.True(reader.Read()); Assert.Equal(JsonToken.PropertyName, reader.TokenType); decimal? d = reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(typeof(decimal), reader.ValueType); Assert.Equal(9.99m, d); Assert.True(reader.Read()); Assert.Equal(JsonToken.EndObject, reader.TokenType); }
public void ReadInvalidNonBase10Number() { string json = "0aq2dun13.hod"; JsonTextReader reader = new JsonTextReader(new StringReader(json)); AssertException.Throws<JsonReaderException>(() => { reader.Read(); }, "Unexpected character encountered while parsing number: q. Path '', line 1, position 2."); reader = new JsonTextReader(new StringReader(json)); AssertException.Throws<JsonReaderException>(() => { reader.ReadAsDecimal(); }, "Unexpected character encountered while parsing number: q. Path '', line 1, position 2."); reader = new JsonTextReader(new StringReader(json)); AssertException.Throws<JsonReaderException>(() => { reader.ReadAsInt32(); }, "Unexpected character encountered while parsing number: q. Path '', line 1, position 2."); }
public void ReadAsDecimalInt() { string json = @"{""Name"":1}"; JsonTextReader reader = new JsonTextReader(new StringReader(json)); Assert.True(reader.Read()); Assert.Equal(JsonToken.StartObject, reader.TokenType); Assert.True(reader.Read()); Assert.Equal(JsonToken.PropertyName, reader.TokenType); reader.ReadAsDecimal(); Assert.Equal(JsonToken.Float, reader.TokenType); Assert.Equal(typeof(decimal), reader.ValueType); Assert.Equal(1m, reader.Value); }
public void ReadAsDecimalBadContent() { JsonTextReader reader = new JsonTextReader(new StringReader(@"new Date()")); AssertException.Throws<JsonReaderException>(() => { reader.ReadAsDecimal(); }, "Error reading decimal. Unexpected token: StartConstructor. Path '', line 1, position 9."); }
public void ReadAsDecimalNoContent() { JsonTextReader reader = new JsonTextReader(new StringReader(@"")); Assert.Null(reader.ReadAsDecimal()); Assert.Equal(JsonToken.None, reader.TokenType); }
public void ParseDecimals() { JsonTextReader reader = null; reader = new JsonTextReader(new StringReader("1.1")); Assert.Equal(1.1m, reader.ReadAsDecimal()); reader = new JsonTextReader(new StringReader("-1.1")); Assert.Equal(-1.1m, reader.ReadAsDecimal()); reader = new JsonTextReader(new StringReader("0.0")); Assert.Equal(0.0m, reader.ReadAsDecimal()); reader = new JsonTextReader(new StringReader("-0.0")); Assert.Equal(0, reader.ReadAsDecimal()); reader = new JsonTextReader(new StringReader("9999999999999999999999999999999999999999999999999999999999999999999999999999asdasdasd")); AssertException.Throws<JsonReaderException>(() => reader.ReadAsDecimal(), "Unexpected character encountered while parsing number: s. Path '', line 1, position 77."); reader = new JsonTextReader(new StringReader("9999999999999999999999999999999999999999999999999999999999999999999999999999asdasdasd")); reader.FloatParseHandling = Json.FloatParseHandling.Decimal; AssertException.Throws<JsonReaderException>(() => reader.Read(), "Unexpected character encountered while parsing number: s. Path '', line 1, position 77."); reader = new JsonTextReader(new StringReader("1E-06")); Assert.Equal(0.000001m, reader.ReadAsDecimal()); reader = new JsonTextReader(new StringReader("")); Assert.Equal(null, reader.ReadAsDecimal()); reader = new JsonTextReader(new StringReader("-")); AssertException.Throws<JsonReaderException>(() => reader.ReadAsDecimal(), "Input string '-' is not a valid decimal. Path '', line 1, position 1."); }