ParentIndexNumberComparerTests.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using Emby.Server.Implementations.Sorting;
  3. using MediaBrowser.Controller.Entities;
  4. using MediaBrowser.Controller.Entities.Audio;
  5. using MediaBrowser.Controller.Sorting;
  6. using Xunit;
  7. namespace Jellyfin.Server.Implementations.Tests.Sorting;
  8. public class ParentIndexNumberComparerTests
  9. {
  10. private readonly ParentIndexNumberComparer _cmp = new ParentIndexNumberComparer();
  11. public static TheoryData<BaseItem?, BaseItem?> Compare_GivenNull_ThrowsArgumentNullException_TestData()
  12. => new()
  13. {
  14. { null, new Audio() },
  15. { new Audio(), null }
  16. };
  17. [Theory]
  18. [MemberData(nameof(Compare_GivenNull_ThrowsArgumentNullException_TestData))]
  19. public void Compare_GivenNull_ThrowsArgumentNullException(BaseItem? x, BaseItem? y)
  20. {
  21. Assert.Throws<ArgumentNullException>(() => _cmp.Compare(x, y));
  22. }
  23. [Theory]
  24. [InlineData(null, null, 0)]
  25. [InlineData(0, null, 1)]
  26. [InlineData(null, 0, -1)]
  27. [InlineData(1, 1, 0)]
  28. [InlineData(0, 1, -1)]
  29. [InlineData(1, 0, 1)]
  30. public void Compare_ValidIndices_SortsExpected(int? parentIndex1, int? parentIndex2, int expected)
  31. {
  32. BaseItem x = new Audio
  33. {
  34. ParentIndexNumber = parentIndex1
  35. };
  36. BaseItem y = new Audio
  37. {
  38. ParentIndexNumber = parentIndex2
  39. };
  40. Assert.Equal(expected, _cmp.Compare(x, y));
  41. Assert.Equal(-expected, _cmp.Compare(y, x));
  42. }
  43. }