mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 16:06:15 +00:00
Added support null and empty string values to BoolConverter
This commit is contained in:
parent
ad1bdd9a3f
commit
27d49a6093
@ -20,6 +20,8 @@ namespace CryptoExchange.Net.UnitTests
|
|||||||
[TestCase("1620777600000")]
|
[TestCase("1620777600000")]
|
||||||
[TestCase("2021-05-12T00:00:00.000Z")]
|
[TestCase("2021-05-12T00:00:00.000Z")]
|
||||||
[TestCase("2021-05-12T00:00:00.000000000Z")]
|
[TestCase("2021-05-12T00:00:00.000000000Z")]
|
||||||
|
[TestCase("0.000000", true)]
|
||||||
|
[TestCase("0", true)]
|
||||||
[TestCase("", true)]
|
[TestCase("", true)]
|
||||||
[TestCase(" ", true)]
|
[TestCase(" ", true)]
|
||||||
public void TestDateTimeConverterString(string input, bool expectNull = false)
|
public void TestDateTimeConverterString(string input, bool expectNull = false)
|
||||||
@ -162,6 +164,44 @@ namespace CryptoExchange.Net.UnitTests
|
|||||||
var output = JsonConvert.DeserializeObject<NotNullableEnumObject>($"{{ \"Value\": {val} }}");
|
var output = JsonConvert.DeserializeObject<NotNullableEnumObject>($"{{ \"Value\": {val} }}");
|
||||||
Assert.AreEqual(output.Value, expected);
|
Assert.AreEqual(output.Value, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestCase("1", true)]
|
||||||
|
[TestCase("true", true)]
|
||||||
|
[TestCase("yes", true)]
|
||||||
|
[TestCase("y", true)]
|
||||||
|
[TestCase("on", true)]
|
||||||
|
[TestCase("-1", false)]
|
||||||
|
[TestCase("0", false)]
|
||||||
|
[TestCase("n", false)]
|
||||||
|
[TestCase("no", false)]
|
||||||
|
[TestCase("false", false)]
|
||||||
|
[TestCase("off", false)]
|
||||||
|
[TestCase("", null)]
|
||||||
|
public void TestBoolConverter(string value, bool? expected)
|
||||||
|
{
|
||||||
|
var val = value == null ? "null" : $"\"{value}\"";
|
||||||
|
var output = JsonConvert.DeserializeObject<BoolObject>($"{{ \"Value\": {val} }}");
|
||||||
|
Assert.AreEqual(output.Value, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase("1", true)]
|
||||||
|
[TestCase("true", true)]
|
||||||
|
[TestCase("yes", true)]
|
||||||
|
[TestCase("y", true)]
|
||||||
|
[TestCase("on", true)]
|
||||||
|
[TestCase("-1", false)]
|
||||||
|
[TestCase("0", false)]
|
||||||
|
[TestCase("n", false)]
|
||||||
|
[TestCase("no", false)]
|
||||||
|
[TestCase("false", false)]
|
||||||
|
[TestCase("off", false)]
|
||||||
|
[TestCase("", false)]
|
||||||
|
public void TestBoolConverterNotNullable(string value, bool expected)
|
||||||
|
{
|
||||||
|
var val = value == null ? "null" : $"\"{value}\"";
|
||||||
|
var output = JsonConvert.DeserializeObject<NotNullableBoolObject>($"{{ \"Value\": {val} }}");
|
||||||
|
Assert.AreEqual(output.Value, expected);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TimeObject
|
public class TimeObject
|
||||||
@ -180,6 +220,18 @@ namespace CryptoExchange.Net.UnitTests
|
|||||||
public TestEnum Value { get; set; }
|
public TestEnum Value { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class BoolObject
|
||||||
|
{
|
||||||
|
[JsonConverter(typeof(BoolConverter))]
|
||||||
|
public bool? Value { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class NotNullableBoolObject
|
||||||
|
{
|
||||||
|
[JsonConverter(typeof(BoolConverter))]
|
||||||
|
public bool Value { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
[JsonConverter(typeof(EnumConverter))]
|
[JsonConverter(typeof(EnumConverter))]
|
||||||
public enum TestEnum
|
public enum TestEnum
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,16 @@ namespace CryptoExchange.Net.Converters
|
|||||||
/// </returns>
|
/// </returns>
|
||||||
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
|
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
|
||||||
{
|
{
|
||||||
switch (reader.Value?.ToString().ToLower().Trim())
|
var value = reader.Value?.ToString().ToLower().Trim();
|
||||||
|
if (value == null || value == "")
|
||||||
|
{
|
||||||
|
if (Nullable.GetUnderlyingType(objectType) != null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (value)
|
||||||
{
|
{
|
||||||
case "true":
|
case "true":
|
||||||
case "yes":
|
case "yes":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user