diff options
Diffstat (limited to 'tests/Jellyfin.Server.Implementations.Tests/Sorting/IndexNumberComparerTests.cs')
| -rw-r--r-- | tests/Jellyfin.Server.Implementations.Tests/Sorting/IndexNumberComparerTests.cs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Sorting/IndexNumberComparerTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Sorting/IndexNumberComparerTests.cs new file mode 100644 index 000000000..164161800 --- /dev/null +++ b/tests/Jellyfin.Server.Implementations.Tests/Sorting/IndexNumberComparerTests.cs @@ -0,0 +1,49 @@ +using System; +using Emby.Server.Implementations.Sorting; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Sorting; +using Xunit; + +namespace Jellyfin.Server.Implementations.Tests.Sorting; + +public class IndexNumberComparerTests +{ + private readonly IBaseItemComparer _cmp = new IndexNumberComparer(); + + private static TheoryData<BaseItem?, BaseItem?> Compare_GivenNull_ThrowsArgumentNullException_TestData() + => new() + { + { null, new Audio() }, + { new Audio(), null } + }; + + [Theory] + [MemberData(nameof(Compare_GivenNull_ThrowsArgumentNullException_TestData))] + public void Compare_GivenNull_ThrowsArgumentNullException(BaseItem? x, BaseItem? y) + { + Assert.Throws<ArgumentNullException>(() => _cmp.Compare(x, y)); + } + + [Theory] + [InlineData(null, null, 0)] + [InlineData(0, null, 1)] + [InlineData(null, 0, -1)] + [InlineData(1, 1, 0)] + [InlineData(0, 1, -1)] + [InlineData(1, 0, 1)] + public void Compare_ValidIndices_SortsExpected(int? index1, int? index2, int expected) + { + BaseItem x = new Audio + { + IndexNumber = index1 + }; + BaseItem y = new Audio + { + IndexNumber = index2 + }; + + Assert.Equal(expected, _cmp.Compare(x, y)); + Assert.Equal(-expected, _cmp.Compare(y, x)); + } +} |
