From 66a1880a580b25db7add41ed3947166b10415f37 Mon Sep 17 00:00:00 2001 From: crobibero Date: Sun, 6 Dec 2020 20:26:21 -0700 Subject: Add number to bool json converter --- .../Json/JsonBoolNumberTests.cs | 23 ++++++++++++++++++++++ .../Jellyfin.Common.Tests/Models/BoolTypeModel.cs | 17 ++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs create mode 100644 tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs (limited to 'tests') diff --git a/tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs b/tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs new file mode 100644 index 000000000..1cae5b849 --- /dev/null +++ b/tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs @@ -0,0 +1,23 @@ +using System.Text.Json; +using Jellyfin.Common.Tests.Models; +using Xunit; + +namespace Jellyfin.Common.Tests.Json +{ + public static class JsonBoolNumberTests + { + [Theory] + [InlineData("1", true)] + [InlineData("0", false)] + [InlineData("2", true)] + [InlineData("true", true)] + [InlineData("false", false)] + public static void Deserialize_Number_Valid_Success(string input, bool? output) + { + var inputJson = $"{{ \"Value\": {input} }}"; + var options = new JsonSerializerOptions(); + var value = JsonSerializer.Deserialize(inputJson, options); + Assert.Equal(value?.Value, output); + } + } +} \ No newline at end of file diff --git a/tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs b/tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs new file mode 100644 index 000000000..feb952efc --- /dev/null +++ b/tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs @@ -0,0 +1,17 @@ +using System.Text.Json.Serialization; +using MediaBrowser.Common.Json.Converters; + +namespace Jellyfin.Common.Tests.Models +{ + /// + /// The bool type model. + /// + public class BoolTypeModel + { + /// + /// Gets or sets a value indicating whether the value is true or false. + /// + [JsonConverter(typeof(JsonBoolNumberConverter))] + public bool Value { get; set; } + } +} \ No newline at end of file -- cgit v1.2.3 From 6e9837844738de7bc55dae9994538535e62ed888 Mon Sep 17 00:00:00 2001 From: crobibero Date: Mon, 7 Dec 2020 14:58:27 -0700 Subject: Simplify converter --- .../Json/Converters/JsonBoolNumberConverter.cs | 5 +---- MediaBrowser.Common/Json/JsonDefaults.cs | 1 + tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs | 8 ++++---- tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs | 17 ----------------- 4 files changed, 6 insertions(+), 25 deletions(-) delete mode 100644 tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs (limited to 'tests') diff --git a/MediaBrowser.Common/Json/Converters/JsonBoolNumberConverter.cs b/MediaBrowser.Common/Json/Converters/JsonBoolNumberConverter.cs index f73ca344c..cb2047049 100644 --- a/MediaBrowser.Common/Json/Converters/JsonBoolNumberConverter.cs +++ b/MediaBrowser.Common/Json/Converters/JsonBoolNumberConverter.cs @@ -8,9 +8,6 @@ namespace MediaBrowser.Common.Json.Converters /// Converts a number to a boolean. /// This is needed for HDHomerun. /// - /// - /// Adding this to the JsonConverter list causes recursion. - /// public class JsonBoolNumberConverter : JsonConverter { /// @@ -21,7 +18,7 @@ namespace MediaBrowser.Common.Json.Converters return Convert.ToBoolean(reader.GetInt32()); } - return JsonSerializer.Deserialize(ref reader, options); + return reader.GetBoolean(); } /// diff --git a/MediaBrowser.Common/Json/JsonDefaults.cs b/MediaBrowser.Common/Json/JsonDefaults.cs index c5050a21d..b76edd2bc 100644 --- a/MediaBrowser.Common/Json/JsonDefaults.cs +++ b/MediaBrowser.Common/Json/JsonDefaults.cs @@ -43,6 +43,7 @@ namespace MediaBrowser.Common.Json options.Converters.Add(new JsonVersionConverter()); options.Converters.Add(new JsonStringEnumConverter()); options.Converters.Add(new JsonNullableStructConverterFactory()); + options.Converters.Add(new JsonBoolNumberConverter()); return options; } diff --git a/tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs b/tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs index 1cae5b849..3779e2d0a 100644 --- a/tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs +++ b/tests/Jellyfin.Common.Tests/Json/JsonBoolNumberTests.cs @@ -1,5 +1,5 @@ using System.Text.Json; -using Jellyfin.Common.Tests.Models; +using MediaBrowser.Common.Json.Converters; using Xunit; namespace Jellyfin.Common.Tests.Json @@ -14,10 +14,10 @@ namespace Jellyfin.Common.Tests.Json [InlineData("false", false)] public static void Deserialize_Number_Valid_Success(string input, bool? output) { - var inputJson = $"{{ \"Value\": {input} }}"; var options = new JsonSerializerOptions(); - var value = JsonSerializer.Deserialize(inputJson, options); - Assert.Equal(value?.Value, output); + options.Converters.Add(new JsonBoolNumberConverter()); + var value = JsonSerializer.Deserialize(input, options); + Assert.Equal(value, output); } } } \ No newline at end of file diff --git a/tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs b/tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs deleted file mode 100644 index feb952efc..000000000 --- a/tests/Jellyfin.Common.Tests/Models/BoolTypeModel.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Text.Json.Serialization; -using MediaBrowser.Common.Json.Converters; - -namespace Jellyfin.Common.Tests.Models -{ - /// - /// The bool type model. - /// - public class BoolTypeModel - { - /// - /// Gets or sets a value indicating whether the value is true or false. - /// - [JsonConverter(typeof(JsonBoolNumberConverter))] - public bool Value { get; set; } - } -} \ No newline at end of file -- cgit v1.2.3