< Summary - Jellyfin

Information
Class: MediaBrowser.Model.Extensions.EnumerableExtensions
Assembly: MediaBrowser.Model
File(s): /srv/git/jellyfin/MediaBrowser.Model/Extensions/EnumerableExtensions.cs
Line coverage
100%
Covered lines: 30
Uncovered lines: 0
Coverable lines: 30
Total lines: 57
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 12/27/2025 - 12:11:51 AM Line coverage: 0% (0/30) Branch coverage: 0% (0/2) Total lines: 573/14/2026 - 12:13:58 AM Line coverage: 100% (30/30) Branch coverage: 100% (2/2) Total lines: 57 12/27/2025 - 12:11:51 AM Line coverage: 0% (0/30) Branch coverage: 0% (0/2) Total lines: 573/14/2026 - 12:13:58 AM Line coverage: 100% (30/30) Branch coverage: 100% (2/2) Total lines: 57

Coverage delta

Coverage delta 100 -100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
OrderByLanguageDescending(...)100%22100%

File(s)

/srv/git/jellyfin/MediaBrowser.Model/Extensions/EnumerableExtensions.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using MediaBrowser.Model.Providers;
 5
 6namespace MediaBrowser.Model.Extensions
 7{
 8    /// <summary>
 9    /// Extension methods for <see cref="IEnumerable{T}"/>.
 10    /// </summary>
 11    public static class EnumerableExtensions
 12    {
 13        /// <summary>
 14        /// Orders <see cref="RemoteImageInfo"/> by requested language in descending order, then "en", then no language,
 15        /// </summary>
 16        /// <param name="remoteImageInfos">The remote image infos.</param>
 17        /// <param name="requestedLanguage">The requested language for the images.</param>
 18        /// <returns>The ordered remote image infos.</returns>
 19        public static IEnumerable<RemoteImageInfo> OrderByLanguageDescending(this IEnumerable<RemoteImageInfo> remoteIma
 20        {
 621            if (string.IsNullOrWhiteSpace(requestedLanguage))
 22            {
 23                // Default to English if no requested language is specified.
 124                requestedLanguage = "en";
 25            }
 26
 627            return remoteImageInfos.OrderByDescending(i =>
 628                {
 629                    // Image priority ordering:
 630                    //  - Images that match the requested language
 631                    //  - TODO: Images that match the original language
 632                    //  - Images in English
 633                    //  - Images with no language
 634                    //  - Images that don't match the requested language
 635
 636                    if (string.Equals(requestedLanguage, i.Language, StringComparison.OrdinalIgnoreCase))
 637                    {
 638                        return 4;
 639                    }
 640
 641                    if (string.Equals(i.Language, "en", StringComparison.OrdinalIgnoreCase))
 642                    {
 643                        return 3;
 644                    }
 645
 646                    if (string.IsNullOrEmpty(i.Language))
 647                    {
 648                        return 2;
 649                    }
 650
 651                    return 0;
 652                })
 653                .ThenByDescending(i => Math.Round(i.CommunityRating ?? 0, 1) )
 654                .ThenByDescending(i => i.VoteCount ?? 0);
 55        }
 56    }
 57}