aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2022-06-14 15:23:40 +0200
committerGitHub <noreply@github.com>2022-06-14 15:23:40 +0200
commita88173337716e668aaa5cfbac7e3d8bb38b45823 (patch)
tree74eb33f45e74731f76a101f12717363ffc7eb3ca
parent9208055ca70d15ed0cf989c799aa41f96c5fcd81 (diff)
parent644e7740406bf7bac37a9eb6ca66c024a7b2cc6a (diff)
Merge pull request #7682 from 1337joe/test-preferred-audio-language
-rw-r--r--Emby.Server.Implementations/Library/MediaStreamSelector.cs4
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Library/MediaStreamSelectorTests.cs36
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));
}
}