|
@@ -13,7 +13,7 @@ namespace Jellyfin.Server.Implementations.Tests.Sorting
|
|
|
{
|
|
|
[Theory]
|
|
|
[ClassData(typeof(EpisodeBadData))]
|
|
|
- public void Compare_GivenNull_ThrowsArgumentNullException(BaseItem x, BaseItem y)
|
|
|
+ public void Compare_GivenNull_ThrowsArgumentNullException(BaseItem? x, BaseItem? y)
|
|
|
{
|
|
|
var cmp = new AiredEpisodeOrderComparer();
|
|
|
Assert.Throws<ArgumentNullException>(() => cmp.Compare(x, y));
|
|
@@ -29,152 +29,122 @@ namespace Jellyfin.Server.Implementations.Tests.Sorting
|
|
|
Assert.Equal(-expected, cmp.Compare(y, x));
|
|
|
}
|
|
|
|
|
|
- private class EpisodeBadData : IEnumerable<object?[]>
|
|
|
+ private class EpisodeBadData : TheoryData<BaseItem?, BaseItem?>
|
|
|
{
|
|
|
- public IEnumerator<object?[]> GetEnumerator()
|
|
|
+ public EpisodeBadData()
|
|
|
{
|
|
|
- yield return new object?[] { null, new Episode() };
|
|
|
- yield return new object?[] { new Episode(), null };
|
|
|
+ Add(null, new Episode());
|
|
|
+ Add(new Episode(), null);
|
|
|
}
|
|
|
-
|
|
|
- IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
|
|
}
|
|
|
|
|
|
- private class EpisodeTestData : IEnumerable<object?[]>
|
|
|
+ private class EpisodeTestData : TheoryData<BaseItem, BaseItem, int>
|
|
|
{
|
|
|
- public IEnumerator<object?[]> GetEnumerator()
|
|
|
+ public EpisodeTestData()
|
|
|
{
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ Add(
|
|
|
new Movie(),
|
|
|
new Movie(),
|
|
|
- 0
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 0);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Movie(),
|
|
|
new Episode(),
|
|
|
- 1
|
|
|
- };
|
|
|
+ 1);
|
|
|
+
|
|
|
// Good cases
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ Add(
|
|
|
new Episode(),
|
|
|
new Episode(),
|
|
|
- 0
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 0);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
- 0
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 0);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 2 },
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 1);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 2, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
+ 1);
|
|
|
+
|
|
|
// Good Specials
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1 },
|
|
|
- 0
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 0);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 2 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
+ 1);
|
|
|
|
|
|
// Specials to Episodes
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 1);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 2 },
|
|
|
- 1
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 1);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 2 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
+ 1);
|
|
|
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 2 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 1);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 2 },
|
|
|
- 1
|
|
|
- };
|
|
|
+ 1);
|
|
|
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1, AirsAfterSeasonNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 1);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 3, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1, AirsAfterSeasonNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
+ 1);
|
|
|
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 3, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1, AirsAfterSeasonNumber = 1, AirsBeforeEpisodeNumber = 2 },
|
|
|
- 1
|
|
|
- };
|
|
|
+ 1);
|
|
|
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1, AirsBeforeSeasonNumber = 1 },
|
|
|
- 1
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 1);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 2 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1, AirsBeforeSeasonNumber = 1, AirsBeforeEpisodeNumber = 2 },
|
|
|
- 1
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 1);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1, AirsBeforeSeasonNumber = 1, AirsBeforeEpisodeNumber = 2 },
|
|
|
- 0
|
|
|
- };
|
|
|
- yield return new object?[]
|
|
|
- {
|
|
|
+ 0);
|
|
|
+
|
|
|
+ Add(
|
|
|
new Episode { ParentIndexNumber = 1, IndexNumber = 3 },
|
|
|
new Episode { ParentIndexNumber = 0, IndexNumber = 1, AirsBeforeSeasonNumber = 1, AirsBeforeEpisodeNumber = 2 },
|
|
|
- 1
|
|
|
- };
|
|
|
+ 1);
|
|
|
}
|
|
|
-
|
|
|
- IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
|
|
}
|
|
|
}
|
|
|
}
|