From 5a9a5175348a8880b6b022e75a556cd0df5ee361 Mon Sep 17 00:00:00 2001 From: Robert Dailey Date: Thu, 6 May 2021 11:11:32 -0500 Subject: [PATCH] fix: max at 400 is updated to unlimited For radarr also applies to preferred of 395 --- .../RadarrQualityDataTest.cs | 30 ++++++------ .../SonarrQualityDataTest.cs | 46 +++++++++++-------- .../QualityDefinition/RadarrQualityData.cs | 8 +++- .../RadarrQualityDefinitionUpdater.cs | 6 +-- .../QualityDefinition/SonarrQualityData.cs | 15 +++--- .../SonarrQualityDefinitionUpdater.cs | 4 +- 6 files changed, 61 insertions(+), 48 deletions(-) diff --git a/src/Trash.Tests/Radarr/QualityDefinition/RadarrQualityDataTest.cs b/src/Trash.Tests/Radarr/QualityDefinition/RadarrQualityDataTest.cs index 966d383b..9c29f2ba 100644 --- a/src/Trash.Tests/Radarr/QualityDefinition/RadarrQualityDataTest.cs +++ b/src/Trash.Tests/Radarr/QualityDefinition/RadarrQualityDataTest.cs @@ -1,7 +1,6 @@ using FluentAssertions; using NUnit.Framework; using Trash.Radarr.QualityDefinition; -using Trash.Sonarr.QualityDefinition; namespace Trash.Tests.Radarr.QualityDefinition { @@ -9,24 +8,25 @@ namespace Trash.Tests.Radarr.QualityDefinition [Parallelizable(ParallelScope.All)] public class RadarrQualityDataTest { - private static readonly object[] ToleranceTestValues = + private static readonly object[] PreferredTestValues = { - new object[] {-SonarrQualityData.Tolerance - 0.01m, true}, - new object[] {-SonarrQualityData.Tolerance, false}, - new object[] {-SonarrQualityData.Tolerance / 2, false}, - new object[] {SonarrQualityData.Tolerance / 2, false}, - new object[] {SonarrQualityData.Tolerance, false}, - new object[] {SonarrQualityData.Tolerance + 0.01m, true} + new object?[] {100m, 100m, false}, + new object?[] {100m, 101m, true}, + new object?[] {100m, 98m, true}, + new object?[] {100m, null, true}, + new object?[] {RadarrQualityData.PreferredUnlimitedThreshold, null, false}, + new object?[] {RadarrQualityData.PreferredUnlimitedThreshold - 1, null, true}, + new object?[] + {RadarrQualityData.PreferredUnlimitedThreshold, RadarrQualityData.PreferredUnlimitedThreshold, true} }; - [TestCaseSource(nameof(ToleranceTestValues))] - public void PreferredOutsideTolerance_WithVariousTolerance_ReturnsExpectedResult(decimal offset, - bool expectedResult) + [TestCaseSource(nameof(PreferredTestValues))] + public void PreferredDifferent_WithVariousValues_ReturnsExpectedResult(decimal guideValue, decimal? radarrValue, + bool isDifferent) { - const decimal testVal = 100; - var data = new RadarrQualityData {Preferred = testVal}; - data.PreferredOutsideTolerance(testVal + offset) - .Should().Be(expectedResult); + var data = new RadarrQualityData {Preferred = guideValue}; + data.IsPreferredDifferent(radarrValue) + .Should().Be(isDifferent); } private static readonly object[] InterpolatedPreferredTestParams = diff --git a/src/Trash.Tests/Sonarr/QualityDefinition/SonarrQualityDataTest.cs b/src/Trash.Tests/Sonarr/QualityDefinition/SonarrQualityDataTest.cs index 63cb4a57..26e6989b 100644 --- a/src/Trash.Tests/Sonarr/QualityDefinition/SonarrQualityDataTest.cs +++ b/src/Trash.Tests/Sonarr/QualityDefinition/SonarrQualityDataTest.cs @@ -8,32 +8,40 @@ namespace Trash.Tests.Sonarr.QualityDefinition [Parallelizable(ParallelScope.All)] public class SonarrQualityDataTest { - private static readonly object[] ToleranceTestValues = + private static readonly object[] MaxTestValues = { - new object[] {-SonarrQualityData.Tolerance - 0.01m, true}, - new object[] {-SonarrQualityData.Tolerance, false}, - new object[] {-SonarrQualityData.Tolerance / 2, false}, - new object[] {SonarrQualityData.Tolerance / 2, false}, - new object[] {SonarrQualityData.Tolerance, false}, - new object[] {SonarrQualityData.Tolerance + 0.01m, true} + new object?[] {100m, 100m, false}, + new object?[] {100m, 101m, true}, + new object?[] {100m, 98m, true}, + new object?[] {100m, null, true}, + new object?[] {SonarrQualityData.MaxUnlimitedThreshold, null, false}, + new object?[] {SonarrQualityData.MaxUnlimitedThreshold - 1, null, true}, + new object?[] {SonarrQualityData.MaxUnlimitedThreshold, SonarrQualityData.MaxUnlimitedThreshold, true} }; - [TestCaseSource(nameof(ToleranceTestValues))] - public void MaxOutsideTolerance_WithVariousTolerance_ReturnsExpectedResult(decimal offset, bool expectedResult) + private static readonly object[] MinTestValues = { - const decimal testVal = 100; - var data = new SonarrQualityData {Max = testVal}; - data.MaxOutsideTolerance(testVal + offset) - .Should().Be(expectedResult); + new object?[] {0m, 0m, false}, + new object?[] {0m, -1m, true}, + new object?[] {0m, 1m, true} + }; + + [TestCaseSource(nameof(MaxTestValues))] + public void MaxDifferent_WithVariousValues_ReturnsExpectedResult(decimal guideValue, decimal? radarrValue, + bool isDifferent) + { + var data = new SonarrQualityData {Max = guideValue}; + data.IsMaxDifferent(radarrValue) + .Should().Be(isDifferent); } - [TestCaseSource(nameof(ToleranceTestValues))] - public void MinOutsideTolerance_WithVariousTolerance_ReturnsExpectedResult(decimal offset, bool expectedResult) + [TestCaseSource(nameof(MinTestValues))] + public void MinDifferent_WithVariousValues_ReturnsExpectedResult(decimal guideValue, decimal radarrValue, + bool isDifferent) { - const decimal testVal = 0; - var data = new SonarrQualityData {Min = testVal}; - data.MinOutsideTolerance(testVal + offset) - .Should().Be(expectedResult); + var data = new SonarrQualityData {Min = guideValue}; + data.IsMinDifferent(radarrValue) + .Should().Be(isDifferent); } [Test] diff --git a/src/Trash/Radarr/QualityDefinition/RadarrQualityData.cs b/src/Trash/Radarr/QualityDefinition/RadarrQualityData.cs index c3dcbbe6..0d163efb 100644 --- a/src/Trash/Radarr/QualityDefinition/RadarrQualityData.cs +++ b/src/Trash/Radarr/QualityDefinition/RadarrQualityData.cs @@ -17,7 +17,11 @@ namespace Trash.Radarr.QualityDefinition return Math.Round(Min + (cappedMax - Min) * ratio, 1); } - public bool PreferredOutsideTolerance(decimal? other) => - Math.Abs((other ?? PreferredUnlimitedThreshold) - Preferred) > Tolerance; + public bool IsPreferredDifferent(decimal? serviceValue) + { + return serviceValue == null + ? PreferredUnlimitedThreshold != Preferred + : serviceValue != Preferred || PreferredUnlimitedThreshold == Preferred; + } } } diff --git a/src/Trash/Radarr/QualityDefinition/RadarrQualityDefinitionUpdater.cs b/src/Trash/Radarr/QualityDefinition/RadarrQualityDefinitionUpdater.cs index 5fb1b9fb..1a107675 100644 --- a/src/Trash/Radarr/QualityDefinition/RadarrQualityDefinitionUpdater.cs +++ b/src/Trash/Radarr/QualityDefinition/RadarrQualityDefinitionUpdater.cs @@ -82,9 +82,9 @@ namespace Trash.Radarr.QualityDefinition { static bool QualityIsDifferent(RadarrQualityDefinitionItem a, RadarrQualityData b) { - return b.MinOutsideTolerance(a.MinSize) || - b.MaxOutsideTolerance(a.MaxSize) || - b.PreferredOutsideTolerance(a.PreferredSize); + return b.IsMinDifferent(a.MinSize) || + b.IsMaxDifferent(a.MaxSize) || + b.IsPreferredDifferent(a.PreferredSize); } var newQuality = new List(); diff --git a/src/Trash/Sonarr/QualityDefinition/SonarrQualityData.cs b/src/Trash/Sonarr/QualityDefinition/SonarrQualityData.cs index 84fa3a05..45cd60e5 100644 --- a/src/Trash/Sonarr/QualityDefinition/SonarrQualityData.cs +++ b/src/Trash/Sonarr/QualityDefinition/SonarrQualityData.cs @@ -1,12 +1,10 @@ -using System; -using System.Globalization; +using System.Globalization; using System.Text; namespace Trash.Sonarr.QualityDefinition { public class SonarrQualityData { - public const decimal Tolerance = 0.1m; public const decimal MaxUnlimitedThreshold = 400; public string Name { get; set; } = ""; @@ -30,10 +28,13 @@ namespace Trash.Sonarr.QualityDefinition return builder.ToString(); } - public bool MinOutsideTolerance(decimal other) => - Math.Abs(other - Min) > Tolerance; + public bool IsMinDifferent(decimal serviceValue) => serviceValue != Min; - public bool MaxOutsideTolerance(decimal? other) => - Math.Abs((other ?? MaxUnlimitedThreshold) - Max) > Tolerance; + public bool IsMaxDifferent(decimal? serviceValue) + { + return serviceValue == null + ? MaxUnlimitedThreshold != Max + : serviceValue != Max || MaxUnlimitedThreshold == Max; + } } } diff --git a/src/Trash/Sonarr/QualityDefinition/SonarrQualityDefinitionUpdater.cs b/src/Trash/Sonarr/QualityDefinition/SonarrQualityDefinitionUpdater.cs index 33ae52f6..c49c2bf1 100644 --- a/src/Trash/Sonarr/QualityDefinition/SonarrQualityDefinitionUpdater.cs +++ b/src/Trash/Sonarr/QualityDefinition/SonarrQualityDefinitionUpdater.cs @@ -116,8 +116,8 @@ namespace Trash.Sonarr.QualityDefinition { static bool QualityIsDifferent(SonarrQualityDefinitionItem a, SonarrQualityData b) { - return b.MinOutsideTolerance(a.MinSize) || - b.MaxOutsideTolerance(a.MaxSize); + return b.IsMinDifferent(a.MinSize) || + b.IsMaxDifferent(a.MaxSize); } var newQuality = new List();