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)); /// Dieselbe Messung als Wort — das, was in der Zeile steht. [TestCase(3840, 2160, "4K")] [TestCase(1920, 1080, "Full HD")] [TestCase(2560, 1440, "Full HD")] [TestCase(1280, 720, "HD")] [TestCase(1024, 576, "SD")] [TestCase(720, 480, "SD")] [TestCase(null, null, null)] public void Bildgroessen_werden_zu_Woertern(int? breite, int? hoehe, string? erwartet) => Assert.That(Benennung.Aufloesungswort(breite, hoehe), Is.EqualTo(erwartet)); /// Kinoformat: 800 Zeilen, und trotzdem Full HD. /// /// /// Derselbe Grund wie eine Stufe höher: gerechnet wird mit Breite und /// Höhe. Nur an der Höhe gemessen hiesse dieser Film „HD", und daneben /// stünde in der Mediathek ein 1280×720 mit demselben Wort. /// [Test] public void Ein_beschnittenes_Breitbild_bleibt_Full_HD() { Assert.That(Benennung.Aufloesungswort(1920, 800), Is.EqualTo("Full HD")); Assert.That(Benennung.Aufloesungswort(1280, 720), Is.EqualTo("HD")); } /// 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("Full HD · H.264")); } /// Nachtrag: Titel, die nichts hinzufügen. public class SpurtitelTests { /// „Deutsch · AAC · Mono · ‚Deutsch'" sagt dasselbe zweimal. [Test] public void Ein_Titel_der_nur_die_Sprache_wiederholt_faellt_weg() { Assert.That(Benennung.Tonspur("deu", "aac", 1, "Deutsch"), Is.EqualTo("Deutsch · AAC · Mono")); Assert.That(Benennung.Tonspur("deu", "aac", 1, "deu"), Is.EqualTo("Deutsch · AAC · Mono")); } [Test] public void Ein_Titel_der_etwas_sagt_bleibt() => Assert.That(Benennung.Tonspur("deu", "aac", 1, "Audiodeskription"), Is.EqualTo("Deutsch · AAC · Mono · „Audiodeskription“")); }