Die Tonzeile nahm bereits die Formulierung vom Server, die Videozeile baute ihren Text weiter selbst — "240p (H264)" neben "AAC · Mono", zwei Schreibweisen in derselben Tabelle untereinander. Die gemessene Auflösung wandert in den Tooltip, wo sie hingehört: 1040 ist keine Stufe, sondern ein beschnittenes Bild. Dazu: ein Spurtitel, der nur die Sprache wiederholt, fällt weg. "Deutsch · AAC · Mono · ‚Deutsch'" sagt dasselbe zweimal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
105 lines
4.0 KiB
C#
105 lines
4.0 KiB
C#
using Flaro.Core.Media;
|
||
|
||
namespace Flaro.Core.Tests;
|
||
|
||
/// <summary>Aus ffprobe-Rohwerten wird etwas, das man vorlesen kann.</summary>
|
||
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));
|
||
|
||
/// <summary>„und" heisst unbekannt und darf nicht wie eine Angabe aussehen.</summary>
|
||
[TestCase("und")]
|
||
[TestCase("unk")]
|
||
[TestCase("")]
|
||
[TestCase(null)]
|
||
public void Unbekanntes_bleibt_leer(string? kuerzel) =>
|
||
Assert.That(Benennung.Sprache(kuerzel), Is.Null);
|
||
|
||
/// <summary>Ein unbekanntes Kürzel bleibt stehen — es ist immer noch eine Auskunft.</summary>
|
||
[Test]
|
||
public void Fremdes_bleibt_stehen() =>
|
||
Assert.That(Benennung.Sprache("xyz"), Is.EqualTo("XYZ"));
|
||
|
||
/// <summary>Sechs Kanäle sind 5.1 — „6.0" gibt es nicht.</summary>
|
||
[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));
|
||
|
||
/// <summary>Ein beschnittenes Breitbild misst 1040 Zeilen und ist trotzdem 1080p.</summary>
|
||
[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));
|
||
|
||
/// <summary>Der Fall aus der Oberfläche, Wort für Wort.</summary>
|
||
[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"));
|
||
}
|
||
|
||
/// <summary>„SoundHandler" ist kein Name, sondern ein Rest aus dem Umpacken.</summary>
|
||
[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"));
|
||
}
|
||
|
||
/// <summary>Nachtrag: Titel, die nichts hinzufügen.</summary>
|
||
public class SpurtitelTests
|
||
{
|
||
/// <summary>„Deutsch · AAC · Mono · ‚Deutsch'" sagt dasselbe zweimal.</summary>
|
||
[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“"));
|
||
}
|