diff options
| author | Bond-009 <bond.009@outlook.com> | 2022-06-14 15:23:40 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-14 15:23:40 +0200 |
| commit | a88173337716e668aaa5cfbac7e3d8bb38b45823 (patch) | |
| tree | 74eb33f45e74731f76a101f12717363ffc7eb3ca | |
| parent | 9208055ca70d15ed0cf989c799aa41f96c5fcd81 (diff) | |
| parent | 644e7740406bf7bac37a9eb6ca66c024a7b2cc6a (diff) | |
Merge pull request #7682 from 1337joe/test-preferred-audio-language
| -rw-r--r-- | Emby.Server.Implementations/Library/MediaStreamSelector.cs | 4 | ||||
| -rw-r--r-- | tests/Jellyfin.Server.Implementations.Tests/Library/MediaStreamSelectorTests.cs | 36 |
2 files changed, 32 insertions, 8 deletions
diff --git a/Emby.Server.Implementations/Library/MediaStreamSelector.cs b/Emby.Server.Implementations/Library/MediaStreamSelector.cs index c5abb9a0a..20a2edb05 100644 --- a/Emby.Server.Implementations/Library/MediaStreamSelector.cs +++ b/Emby.Server.Implementations/Library/MediaStreamSelector.cs @@ -13,11 +13,11 @@ namespace Emby.Server.Implementations.Library { public static int? GetDefaultAudioStreamIndex(IReadOnlyList<MediaStream> streams, IReadOnlyList<string> preferredLanguages, bool preferDefaultTrack) { - var sortedStreams = GetSortedStreams(streams, MediaStreamType.Audio, preferredLanguages); + var sortedStreams = GetSortedStreams(streams, MediaStreamType.Audio, preferredLanguages).ToList(); if (preferDefaultTrack) { - var defaultStream = streams.FirstOrDefault(i => i.IsDefault); + var defaultStream = sortedStreams.FirstOrDefault(i => i.IsDefault); if (defaultStream != null) { diff --git a/tests/Jellyfin.Server.Implementations.Tests/Library/MediaStreamSelectorTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Library/MediaStreamSelectorTests.cs index d59f2f4e5..538010f6c 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/Library/MediaStreamSelectorTests.cs +++ b/tests/Jellyfin.Server.Implementations.Tests/Library/MediaStreamSelectorTests.cs @@ -16,15 +16,39 @@ public class MediaStreamSelectorTests } [Theory] - [InlineData(true)] - [InlineData(false)] - public void GetDefaultAudioStreamIndex_WithoutDefault_NotNull(bool preferDefaultTrack) + [InlineData(new string[0], false, 1)] + [InlineData(new string[0], true, 1)] + [InlineData(new[] { "eng" }, false, 2)] + [InlineData(new[] { "eng" }, true, 1)] + [InlineData(new[] { "eng", "fre" }, false, 2)] + [InlineData(new[] { "fre", "eng" }, false, 1)] + [InlineData(new[] { "eng", "fre" }, true, 1)] + public void GetDefaultAudioStreamIndex_PreferredLanguage_SelectsCorrect(string[] preferredLanguages, bool preferDefaultTrack, int expectedIndex) { - var streams = new[] + var streams = new MediaStream[] { - new MediaStream() + new() + { + Index = 0, + Type = MediaStreamType.Video, + IsDefault = true + }, + new() + { + Index = 1, + Type = MediaStreamType.Audio, + Language = "fre", + IsDefault = true + }, + new() + { + Index = 2, + Type = MediaStreamType.Audio, + Language = "eng", + IsDefault = false + } }; - Assert.NotNull(MediaStreamSelector.GetDefaultAudioStreamIndex(streams, Array.Empty<string>(), preferDefaultTrack)); + Assert.Equal(expectedIndex, MediaStreamSelector.GetDefaultAudioStreamIndex(streams, preferredLanguages, preferDefaultTrack)); } } |
