MediaStreamSelectorTests.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 = 1,
  30. Language = "fre",
  31. IsDefault = true
  32. },
  33. new()
  34. {
  35. Index = 2,
  36. Language = "eng",
  37. IsDefault = false
  38. }
  39. };
  40. Assert.Equal(expectedIndex, MediaStreamSelector.GetDefaultAudioStreamIndex(streams, preferredLanguages, preferDefaultTrack));
  41. }
  42. }