MediaStreamSelectorTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. using System;
  2. using Emby.Server.Implementations.Library;
  3. using MediaBrowser.Model.Entities;
  4. using Xunit;
  5. namespace Jellyfin.Server.Implementations.Tests.Library;
  6. public class MediaStreamSelectorTests
  7. {
  8. [Theory]
  9. [InlineData(true)]
  10. [InlineData(false)]
  11. public void GetDefaultAudioStreamIndex_EmptyStreams_Null(bool preferDefaultTrack)
  12. {
  13. Assert.Null(MediaStreamSelector.GetDefaultAudioStreamIndex(Array.Empty<MediaStream>(), Array.Empty<string>(), preferDefaultTrack));
  14. }
  15. [Theory]
  16. [InlineData(new string[0], false, 1)]
  17. [InlineData(new string[0], true, 1)]
  18. [InlineData(new[] { "eng" }, false, 2)]
  19. [InlineData(new[] { "eng" }, true, 1)]
  20. [InlineData(new[] { "eng", "fre" }, false, 2)]
  21. [InlineData(new[] { "fre", "eng" }, false, 1)]
  22. [InlineData(new[] { "eng", "fre" }, true, 1)]
  23. public void GetDefaultAudioStreamIndex_PreferredLanguage_SelectsCorrect(string[] preferredLanguages, bool preferDefaultTrack, int expectedIndex)
  24. {
  25. var streams = new MediaStream[]
  26. {
  27. new()
  28. {
  29. Index = 0,
  30. Type = MediaStreamType.Video,
  31. IsDefault = true
  32. },
  33. new()
  34. {
  35. Index = 1,
  36. Type = MediaStreamType.Audio,
  37. Language = "fre",
  38. IsDefault = true
  39. },
  40. new()
  41. {
  42. Index = 2,
  43. Type = MediaStreamType.Audio,
  44. Language = "eng",
  45. IsDefault = false
  46. }
  47. };
  48. Assert.Equal(expectedIndex, MediaStreamSelector.GetDefaultAudioStreamIndex(streams, preferredLanguages, preferDefaultTrack));
  49. }
  50. public static TheoryData<MediaStream, int> GetStreamScore_MediaStream_TestData()
  51. {
  52. var data = new TheoryData<MediaStream, int>();
  53. data.Add(new MediaStream(), 111111);
  54. data.Add(
  55. new MediaStream()
  56. {
  57. Language = "eng"
  58. },
  59. 10111111);
  60. data.Add(
  61. new MediaStream()
  62. {
  63. Language = "fre"
  64. },
  65. 10011111);
  66. data.Add(
  67. new MediaStream()
  68. {
  69. IsForced = true
  70. },
  71. 121111);
  72. data.Add(
  73. new MediaStream()
  74. {
  75. IsDefault = true
  76. },
  77. 112111);
  78. data.Add(
  79. new MediaStream()
  80. {
  81. SupportsExternalStream = true
  82. },
  83. 111211);
  84. data.Add(
  85. new MediaStream()
  86. {
  87. IsExternal = true
  88. },
  89. 111112);
  90. data.Add(
  91. new MediaStream()
  92. {
  93. Language = "eng",
  94. IsForced = true,
  95. IsDefault = true,
  96. SupportsExternalStream = true,
  97. IsExternal = true
  98. },
  99. 10122212);
  100. return data;
  101. }
  102. [Theory]
  103. [MemberData(nameof(GetStreamScore_MediaStream_TestData))]
  104. public void GetStreamScore_MediaStream_CorrectScore(MediaStream stream, int expectedScore)
  105. {
  106. var languagePref = new[] { "eng", "fre" };
  107. Assert.Equal(expectedScore, MediaStreamSelector.GetStreamScore(stream, languagePref));
  108. }
  109. }