Files
pgsql-jellyfin/tests/Jellyfin.Model.Tests/Entities/MediaStreamTests.cs
T
wjones af1152b001 Refactor: standardize namespace and using directive style
Refactored all C# test files to use explicit namespace declarations and moved all using directives inside the namespace block for consistency. Updated assembly info and cache files to reflect the new build. Adjusted MvcTestingAppManifest.json to use fully qualified assembly names. No functional changes; all updates are related to code style, organization, and project metadata.
2026-02-20 16:26:53 -05:00

255 lines
9.0 KiB
C#

// <copyright file="MediaStreamTests.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
namespace Jellyfin.Model.Tests.Entities
{
using MediaBrowser.Model.Entities;
using Xunit;
public class MediaStreamTests
{
public static TheoryData<string, MediaStream> Get_DisplayTitle_TestData()
{
var data = new TheoryData<string, MediaStream>();
data.Add(
"English - Und - ASS",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "English",
Language = string.Empty,
IsForced = false,
IsDefault = false,
Codec = "ASS"
});
data.Add(
"English - Und",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "English",
Language = string.Empty,
IsForced = false,
IsDefault = false,
Codec = string.Empty
});
data.Add(
"English",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "English",
Language = "EN",
IsForced = false,
IsDefault = false,
Codec = string.Empty
});
data.Add(
"English - Default - Forced - SRT",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "English",
Language = "EN",
IsForced = true,
IsDefault = true,
Codec = "SRT"
});
data.Add(
"Title - EN - Default - Forced - SRT - External",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "Title",
Language = "EN",
IsForced = true,
IsDefault = true,
Codec = "SRT",
IsExternal = true
});
data.Add(
"Und",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = null,
Language = null,
IsForced = false,
IsDefault = false,
Codec = null
});
data.Add(
"Title - EN - Hearing Impaired - Default - Forced - SRT",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "Title",
Language = "EN",
IsForced = true,
IsDefault = true,
IsHearingImpaired = true,
Codec = "SRT"
});
data.Add(
"Title - AAC - Default - External",
new MediaStream
{
Type = MediaStreamType.Audio,
Title = "Title",
Language = null,
IsForced = false,
IsDefault = true,
Codec = "AAC",
IsExternal = true
});
// Test LocalizedLanguage is used when set (fixes zh-CN display issue #15935)
data.Add(
"Chinese (Simplified) - SRT",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = null,
Language = "zh-CN",
LocalizedLanguage = "Chinese (Simplified)",
IsForced = false,
IsDefault = false,
Codec = "SRT"
});
// Test LocalizedLanguage for audio streams
data.Add(
"Japanese - AAC - Stereo",
new MediaStream
{
Type = MediaStreamType.Audio,
Title = null,
Language = "jpn",
LocalizedLanguage = "Japanese",
IsForced = false,
IsDefault = false,
Codec = "AAC",
ChannelLayout = "stereo"
});
// Test fallback to Language when LocalizedLanguage is null
data.Add(
"Eng - ASS",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = null,
Language = "eng",
LocalizedLanguage = null,
IsForced = false,
IsDefault = false,
Codec = "ASS"
});
return data;
}
[Theory]
[MemberData(nameof(Get_DisplayTitle_TestData))]
public void Get_DisplayTitle_should_return_valid_title(string expected, MediaStream mediaStream)
{
Assert.Equal(expected, mediaStream.DisplayTitle);
}
[Theory]
[InlineData(null, null, false, null)]
[InlineData(null, 0, false, null)]
[InlineData(0, null, false, null)]
[InlineData(256, 144, false, "144p")]
[InlineData(256, 144, true, "144i")]
[InlineData(426, 240, false, "240p")]
[InlineData(426, 240, true, "240i")]
[InlineData(640, 360, false, "360p")]
[InlineData(640, 360, true, "360i")]
[InlineData(854, 480, false, "480p")]
[InlineData(854, 480, true, "480i")]
[InlineData(960, 540, false, "540p")]
[InlineData(960, 540, true, "540i")]
[InlineData(1024, 576, false, "576p")]
[InlineData(1024, 576, true, "576i")]
[InlineData(1280, 720, false, "720p")]
[InlineData(1280, 720, true, "720i")]
[InlineData(2560, 1080, false, "1080p")]
[InlineData(2560, 1080, true, "1080i")]
[InlineData(4096, 3072, false, "4K")]
[InlineData(8192, 6144, false, "8K")]
[InlineData(512, 384, false, "384p")]
[InlineData(576, 336, false, "360p")]
[InlineData(576, 336, true, "360i")]
[InlineData(624, 352, false, "360p")]
[InlineData(640, 352, false, "360p")]
[InlineData(640, 480, false, "480p")]
[InlineData(704, 396, false, "404p")]
[InlineData(720, 404, false, "404p")]
[InlineData(720, 480, false, "480p")]
[InlineData(720, 576, false, "576p")]
[InlineData(768, 576, false, "576p")]
[InlineData(960, 544, false, "540p")]
[InlineData(960, 544, true, "540i")]
[InlineData(960, 720, false, "720p")]
[InlineData(1280, 528, false, "720p")]
[InlineData(1280, 532, false, "720p")]
[InlineData(1280, 534, false, "720p")]
[InlineData(1280, 536, false, "720p")]
[InlineData(1280, 544, false, "720p")]
[InlineData(1280, 690, false, "720p")]
[InlineData(1280, 694, false, "720p")]
[InlineData(1280, 696, false, "720p")]
[InlineData(1280, 716, false, "720p")]
[InlineData(1280, 718, false, "720p")]
[InlineData(1920, 1080, false, "1080p")]
[InlineData(1440, 1070, false, "1080p")]
[InlineData(1440, 1072, false, "1080p")]
[InlineData(1440, 1080, false, "1080p")]
[InlineData(1440, 1440, false, "1080p")]
[InlineData(1912, 792, false, "1080p")]
[InlineData(1916, 1076, false, "1080p")]
[InlineData(1918, 1080, false, "1080p")]
[InlineData(1920, 796, false, "1080p")]
[InlineData(1920, 800, false, "1080p")]
[InlineData(1920, 802, false, "1080p")]
[InlineData(1920, 804, false, "1080p")]
[InlineData(1920, 808, false, "1080p")]
[InlineData(1920, 816, false, "1080p")]
[InlineData(1920, 856, false, "1080p")]
[InlineData(1920, 960, false, "1080p")]
[InlineData(1920, 1024, false, "1080p")]
[InlineData(1920, 1040, false, "1080p")]
[InlineData(1920, 1070, false, "1080p")]
[InlineData(1920, 1072, false, "1080p")]
[InlineData(1920, 1440, false, "1080p")]
[InlineData(3840, 1600, false, "4K")]
[InlineData(3840, 1606, false, "4K")]
[InlineData(3840, 1608, false, "4K")]
[InlineData(3840, 2160, false, "4K")]
[InlineData(4090, 3070, false, "4K")]
[InlineData(7680, 4320, false, "8K")]
[InlineData(8190, 6140, false, "8K")]
public void GetResolutionText_Valid(int? width, int? height, bool interlaced, string? expected)
{
var mediaStream = new MediaStream()
{
Width = width,
Height = height,
IsInterlaced = interlaced
};
Assert.Equal(expected, mediaStream.GetResolutionText());
}
}
}