using Flaro.Core.Media;
namespace Flaro.Core.Tests;
/// Aus ffprobe-Rohwerten wird etwas, das man vorlesen kann.
public class BenennungTests
{
[TestCase("deu", "Deutsch")]
[TestCase("ger", "Deutsch")]
[TestCase("de", "Deutsch")]
[TestCase("eng", "Englisch")]
[TestCase("fr", "Französisch")]
public void Sprachkuerzel_werden_Klarnamen(string kuerzel, string erwartet) =>
Assert.That(Benennung.Sprache(kuerzel), Is.EqualTo(erwartet));
/// „und" heisst unbekannt und darf nicht wie eine Angabe aussehen.
[TestCase("und")]
[TestCase("unk")]
[TestCase("")]
[TestCase(null)]
public void Unbekanntes_bleibt_leer(string? kuerzel) =>
Assert.That(Benennung.Sprache(kuerzel), Is.Null);
/// Ein unbekanntes Kürzel bleibt stehen — es ist immer noch eine Auskunft.
[Test]
public void Fremdes_bleibt_stehen() =>
Assert.That(Benennung.Sprache("xyz"), Is.EqualTo("XYZ"));
/// Sechs Kanäle sind 5.1 — „6.0" gibt es nicht.
[TestCase(1, "Mono")]
[TestCase(2, "Stereo")]
[TestCase(6, "5.1")]
[TestCase(8, "7.1")]
[TestCase(null, null)]
public void Kanalzahlen_bekommen_die_uebliche_Schreibweise(int? kanaele, string? erwartet) =>
Assert.That(Benennung.Kanaele(kanaele), Is.EqualTo(erwartet));
[TestCase("eac3", "Dolby Digital Plus")]
[TestCase("h264", "H.264")]
[TestCase("hevc", "H.265")]
[TestCase("mov_text", "Text")]
[TestCase("exotisch", "EXOTISCH")]
public void Codecs_bekommen_ihren_geläufigen_Namen(string kuerzel, string erwartet) =>
Assert.That(Benennung.Codec(kuerzel), Is.EqualTo(erwartet));
/// Ein beschnittenes Breitbild misst 1040 Zeilen und ist trotzdem 1080p.
[TestCase(2160, "2160p")]
[TestCase(1080, "1080p")]
[TestCase(1040, "1080p")]
[TestCase(720, "720p")]
public void Bildhoehen_werden_zu_Stufen(int hoehe, string erwartet) =>
Assert.That(Benennung.Aufloesung(hoehe), Is.EqualTo(erwartet));
/// Der Fall aus der Oberfläche, Wort für Wort.
[Test]
public void Die_ganze_Tonspur()
{
Assert.That(Benennung.Tonspur("deu", "eac3", 6, null),
Is.EqualTo("Deutsch · Dolby Digital Plus · 5.1"));
Assert.That(Benennung.Tonspur("eng", "aac", 2, null),
Is.EqualTo("Englisch · AAC · Stereo"));
}
/// „SoundHandler" ist kein Name, sondern ein Rest aus dem Umpacken.
[Test]
public void Nichtssagende_Titel_fallen_weg() =>
Assert.That(Benennung.Tonspur("deu", "aac", 2, "SoundHandler"),
Is.EqualTo("Deutsch · AAC · Stereo"));
[Test]
public void Ein_echter_Spurtitel_bleibt() =>
Assert.That(Benennung.Tonspur("deu", "aac", 2, "Audiodeskription"),
Does.Contain("Audiodeskription"));
[Test]
public void Untertitel_zeigen_ihre_Besonderheit()
{
Assert.That(Benennung.Untertitelspur("deu", false, false), Is.EqualTo("Deutsch"));
Assert.That(Benennung.Untertitelspur("deu", true, false), Is.EqualTo("Deutsch (erzwungen)"));
}
[Test]
public void Die_ganze_Bildspur() =>
Assert.That(Benennung.Bildspur("h264", 1040), Is.EqualTo("1080p · H.264"));
}