You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/tests/Recyclarr.Tests/TrashGuide/QualitySize/QualityItemTest.cs

103 lines
3.1 KiB

using Recyclarr.TrashGuide.QualitySize;
namespace Recyclarr.Tests.TrashGuide.QualitySize;
[TestFixture]
public class QualityItemTest
{
private static readonly object[] MaxTestValues =
[
new object?[] {100m, 100m, false},
new object?[] {100m, 101m, true},
new object?[] {100m, 98m, true},
new object?[] {100m, null, true},
new object?[] {QualityItem.MaxUnlimitedThreshold, null, false},
new object?[] {QualityItem.MaxUnlimitedThreshold - 1, null, true},
new object?[] {QualityItem.MaxUnlimitedThreshold, QualityItem.MaxUnlimitedThreshold, true}
];
private static readonly object[] MinTestValues =
[
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 QualityItem("", 0, guideValue);
data.IsMaxDifferent(radarrValue)
.Should().Be(isDifferent);
}
[TestCaseSource(nameof(MinTestValues))]
public void MinDifferent_WithVariousValues_ReturnsExpectedResult(
decimal guideValue,
decimal radarrValue,
bool isDifferent)
{
var data = new QualityItem("", guideValue, 0);
data.IsMinDifferent(radarrValue)
.Should().Be(isDifferent);
}
[Test]
public void AnnotatedMax_OutsideThreshold_EqualsSameValueWithUnlimited()
{
const decimal testVal = QualityItem.MaxUnlimitedThreshold;
var data = new QualityItem("", 0, testVal);
data.AnnotatedMax.Should().Be($"{testVal} (Unlimited)");
}
[Test]
public void AnnotatedMax_WithinThreshold_EqualsSameStringValue()
{
const decimal testVal = QualityItem.MaxUnlimitedThreshold - 1;
var data = new QualityItem("", 0, testVal);
data.AnnotatedMax.Should().Be($"{testVal}");
}
[Test]
public void AnnotatedMin_NoThreshold_EqualsSameValue()
{
const decimal testVal = 10m;
var data = new QualityItem("", 0, testVal);
data.AnnotatedMax.Should().Be($"{testVal}");
}
[Test]
public void Max_AboveThreshold_EqualsSameValue()
{
const decimal testVal = QualityItem.MaxUnlimitedThreshold + 1;
var data = new QualityItem("", 0, testVal);
data.Max.Should().Be(testVal);
}
[Test]
public void MaxForApi_AboveThreshold_EqualsNull()
{
const decimal testVal = QualityItem.MaxUnlimitedThreshold + 1;
var data = new QualityItem("", 0, testVal);
data.MaxForApi.Should().Be(null);
}
[Test]
public void MaxForApi_HighestWithinThreshold_EqualsSameValue()
{
const decimal testVal = QualityItem.MaxUnlimitedThreshold - 0.1m;
var data = new QualityItem("", 0, testVal);
data.MaxForApi.Should().Be(testVal).And.Be(data.Max);
}
[Test]
public void MaxForApi_LowestWithinThreshold_EqualsSameValue()
{
var data = new QualityItem("", 0, 0);
data.MaxForApi.Should().Be(0);
}
}