@ -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,171 +29,138 @@ 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 ) ;
// Premiere Date
yield return new object? [ ]
{
Add (
new Episode { ParentIndexNumber = 1 , IndexNumber = 1 , PremiereDate = new DateTime ( 2021 , 09 , 12 , 0 , 0 , 0 ) } ,
new Episode { ParentIndexNumber = 1 , IndexNumber = 1 , PremiereDate = new DateTime ( 2021 , 09 , 12 , 0 , 0 , 0 ) } ,
0
} ;
yield return new object? [ ]
{
0 ) ;
Add (
new Episode { ParentIndexNumber = 1 , IndexNumber = 1 , PremiereDate = new DateTime ( 2021 , 09 , 11 , 0 , 0 , 0 ) } ,
new Episode { ParentIndexNumber = 1 , IndexNumber = 1 , PremiereDate = new DateTime ( 2021 , 09 , 12 , 0 , 0 , 0 ) } ,
- 1
} ;
yield return new object? [ ]
{
- 1 ) ;
Add (
new Episode { ParentIndexNumber = 1 , IndexNumber = 1 , PremiereDate = new DateTime ( 2021 , 09 , 12 , 0 , 0 , 0 ) } ,
new Episode { ParentIndexNumber = 1 , IndexNumber = 1 , PremiereDate = new DateTime ( 2021 , 09 , 11 , 0 , 0 , 0 ) } ,
1
} ;
1 ) ;
}
IEnumerator IEnumerable . GetEnumerator ( ) = > GetEnumerator ( ) ;
}
}
}