MediaStreamSelectorTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. }