fix: max at 400 is updated to unlimited

For radarr also applies to preferred of 395
recyclarr
Robert Dailey 3 years ago
parent b48488fdc7
commit 5a9a517534

@ -1,7 +1,6 @@
using FluentAssertions; using FluentAssertions;
using NUnit.Framework; using NUnit.Framework;
using Trash.Radarr.QualityDefinition; using Trash.Radarr.QualityDefinition;
using Trash.Sonarr.QualityDefinition;
namespace Trash.Tests.Radarr.QualityDefinition namespace Trash.Tests.Radarr.QualityDefinition
{ {
@ -9,24 +8,25 @@ namespace Trash.Tests.Radarr.QualityDefinition
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class RadarrQualityDataTest public class RadarrQualityDataTest
{ {
private static readonly object[] ToleranceTestValues = private static readonly object[] PreferredTestValues =
{ {
new object[] {-SonarrQualityData.Tolerance - 0.01m, true}, new object?[] {100m, 100m, false},
new object[] {-SonarrQualityData.Tolerance, false}, new object?[] {100m, 101m, true},
new object[] {-SonarrQualityData.Tolerance / 2, false}, new object?[] {100m, 98m, true},
new object[] {SonarrQualityData.Tolerance / 2, false}, new object?[] {100m, null, true},
new object[] {SonarrQualityData.Tolerance, false}, new object?[] {RadarrQualityData.PreferredUnlimitedThreshold, null, false},
new object[] {SonarrQualityData.Tolerance + 0.01m, true} new object?[] {RadarrQualityData.PreferredUnlimitedThreshold - 1, null, true},
new object?[]
{RadarrQualityData.PreferredUnlimitedThreshold, RadarrQualityData.PreferredUnlimitedThreshold, true}
}; };
[TestCaseSource(nameof(ToleranceTestValues))] [TestCaseSource(nameof(PreferredTestValues))]
public void PreferredOutsideTolerance_WithVariousTolerance_ReturnsExpectedResult(decimal offset, public void PreferredDifferent_WithVariousValues_ReturnsExpectedResult(decimal guideValue, decimal? radarrValue,
bool expectedResult) bool isDifferent)
{ {
const decimal testVal = 100; var data = new RadarrQualityData {Preferred = guideValue};
var data = new RadarrQualityData {Preferred = testVal}; data.IsPreferredDifferent(radarrValue)
data.PreferredOutsideTolerance(testVal + offset) .Should().Be(isDifferent);
.Should().Be(expectedResult);
} }
private static readonly object[] InterpolatedPreferredTestParams = private static readonly object[] InterpolatedPreferredTestParams =

@ -8,32 +8,40 @@ namespace Trash.Tests.Sonarr.QualityDefinition
[Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.All)]
public class SonarrQualityDataTest public class SonarrQualityDataTest
{ {
private static readonly object[] ToleranceTestValues = private static readonly object[] MaxTestValues =
{ {
new object[] {-SonarrQualityData.Tolerance - 0.01m, true}, new object?[] {100m, 100m, false},
new object[] {-SonarrQualityData.Tolerance, false}, new object?[] {100m, 101m, true},
new object[] {-SonarrQualityData.Tolerance / 2, false}, new object?[] {100m, 98m, true},
new object[] {SonarrQualityData.Tolerance / 2, false}, new object?[] {100m, null, true},
new object[] {SonarrQualityData.Tolerance, false}, new object?[] {SonarrQualityData.MaxUnlimitedThreshold, null, false},
new object[] {SonarrQualityData.Tolerance + 0.01m, true} new object?[] {SonarrQualityData.MaxUnlimitedThreshold - 1, null, true},
new object?[] {SonarrQualityData.MaxUnlimitedThreshold, SonarrQualityData.MaxUnlimitedThreshold, true}
}; };
[TestCaseSource(nameof(ToleranceTestValues))] private static readonly object[] MinTestValues =
public void MaxOutsideTolerance_WithVariousTolerance_ReturnsExpectedResult(decimal offset, bool expectedResult)
{ {
const decimal testVal = 100; new object?[] {0m, 0m, false},
var data = new SonarrQualityData {Max = testVal}; new object?[] {0m, -1m, true},
data.MaxOutsideTolerance(testVal + offset) new object?[] {0m, 1m, true}
.Should().Be(expectedResult); };
[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))] [TestCaseSource(nameof(MinTestValues))]
public void MinOutsideTolerance_WithVariousTolerance_ReturnsExpectedResult(decimal offset, bool expectedResult) public void MinDifferent_WithVariousValues_ReturnsExpectedResult(decimal guideValue, decimal radarrValue,
bool isDifferent)
{ {
const decimal testVal = 0; var data = new SonarrQualityData {Min = guideValue};
var data = new SonarrQualityData {Min = testVal}; data.IsMinDifferent(radarrValue)
data.MinOutsideTolerance(testVal + offset) .Should().Be(isDifferent);
.Should().Be(expectedResult);
} }
[Test] [Test]

@ -17,7 +17,11 @@ namespace Trash.Radarr.QualityDefinition
return Math.Round(Min + (cappedMax - Min) * ratio, 1); return Math.Round(Min + (cappedMax - Min) * ratio, 1);
} }
public bool PreferredOutsideTolerance(decimal? other) => public bool IsPreferredDifferent(decimal? serviceValue)
Math.Abs((other ?? PreferredUnlimitedThreshold) - Preferred) > Tolerance; {
return serviceValue == null
? PreferredUnlimitedThreshold != Preferred
: serviceValue != Preferred || PreferredUnlimitedThreshold == Preferred;
}
} }
} }

@ -82,9 +82,9 @@ namespace Trash.Radarr.QualityDefinition
{ {
static bool QualityIsDifferent(RadarrQualityDefinitionItem a, RadarrQualityData b) static bool QualityIsDifferent(RadarrQualityDefinitionItem a, RadarrQualityData b)
{ {
return b.MinOutsideTolerance(a.MinSize) || return b.IsMinDifferent(a.MinSize) ||
b.MaxOutsideTolerance(a.MaxSize) || b.IsMaxDifferent(a.MaxSize) ||
b.PreferredOutsideTolerance(a.PreferredSize); b.IsPreferredDifferent(a.PreferredSize);
} }
var newQuality = new List<RadarrQualityDefinitionItem>(); var newQuality = new List<RadarrQualityDefinitionItem>();

@ -1,12 +1,10 @@
using System; using System.Globalization;
using System.Globalization;
using System.Text; using System.Text;
namespace Trash.Sonarr.QualityDefinition namespace Trash.Sonarr.QualityDefinition
{ {
public class SonarrQualityData public class SonarrQualityData
{ {
public const decimal Tolerance = 0.1m;
public const decimal MaxUnlimitedThreshold = 400; public const decimal MaxUnlimitedThreshold = 400;
public string Name { get; set; } = ""; public string Name { get; set; } = "";
@ -30,10 +28,13 @@ namespace Trash.Sonarr.QualityDefinition
return builder.ToString(); return builder.ToString();
} }
public bool MinOutsideTolerance(decimal other) => public bool IsMinDifferent(decimal serviceValue) => serviceValue != Min;
Math.Abs(other - Min) > Tolerance;
public bool MaxOutsideTolerance(decimal? other) => public bool IsMaxDifferent(decimal? serviceValue)
Math.Abs((other ?? MaxUnlimitedThreshold) - Max) > Tolerance; {
return serviceValue == null
? MaxUnlimitedThreshold != Max
: serviceValue != Max || MaxUnlimitedThreshold == Max;
}
} }
} }

@ -116,8 +116,8 @@ namespace Trash.Sonarr.QualityDefinition
{ {
static bool QualityIsDifferent(SonarrQualityDefinitionItem a, SonarrQualityData b) static bool QualityIsDifferent(SonarrQualityDefinitionItem a, SonarrQualityData b)
{ {
return b.MinOutsideTolerance(a.MinSize) || return b.IsMinDifferent(a.MinSize) ||
b.MaxOutsideTolerance(a.MaxSize); b.IsMaxDifferent(a.MaxSize);
} }
var newQuality = new List<SonarrQualityDefinitionItem>(); var newQuality = new List<SonarrQualityDefinitionItem>();

Loading…
Cancel
Save