52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
using TeleWave.Application.Media;
|
|
using Xunit;
|
|
|
|
namespace TeleWave.Application.Tests.Media;
|
|
|
|
public class AudioTrackSelectorTests
|
|
{
|
|
[Fact]
|
|
public void PicksFirstPreferredLanguage_ByPriorityOrder()
|
|
{
|
|
// Дорожки: eng(0), rus(1), jpn(2). Предпочтение rus,eng → выбираем rus (индекс 1).
|
|
var track = AudioTrackSelector.Select(["eng", "rus", "jpn"], ["rus", "eng"]);
|
|
Assert.Equal(1, track);
|
|
}
|
|
|
|
[Fact]
|
|
public void FallsBackToNextPreferred_WhenTopMissing()
|
|
{
|
|
// Нет rus — берём следующий по приоритету eng (индекс 0).
|
|
var track = AudioTrackSelector.Select(["eng", "jpn"], ["rus", "eng"]);
|
|
Assert.Equal(0, track);
|
|
}
|
|
|
|
[Fact]
|
|
public void CaseInsensitiveMatch()
|
|
{
|
|
var track = AudioTrackSelector.Select(["ENG", "RUS"], ["rus"]);
|
|
Assert.Equal(1, track);
|
|
}
|
|
|
|
[Fact]
|
|
public void NoMatch_ReturnsNull_KeepingFfmpegDefault()
|
|
{
|
|
var track = AudioTrackSelector.Select(["eng", "jpn"], ["rus"]);
|
|
Assert.Null(track);
|
|
}
|
|
|
|
[Fact]
|
|
public void SingleTrack_ReturnsNull()
|
|
{
|
|
var track = AudioTrackSelector.Select(["eng"], ["eng"]);
|
|
Assert.Null(track);
|
|
}
|
|
|
|
[Fact]
|
|
public void NoPreference_ReturnsNull()
|
|
{
|
|
var track = AudioTrackSelector.Select(["eng", "rus"], []);
|
|
Assert.Null(track);
|
|
}
|
|
}
|