**Der Aufmacher wusste nur die Serie.** `Heroeintrag.titel` ist bei einer angefangenen Folge der Name der Serie — richtig, denn der Aufmacher zeigt die Serie. Wer von dort startete, las über dem Spieler „Biohackers" und nicht, welche Folge läuft. Staffel, Nummer und Folgentitel reisen jetzt mit. Dasselbe im Aufmacher selbst: „Staffel 1 · Folge 2" statt „S1 · F2". **Der Abspann ist kein Angebot, sondern eine Frage.** Die Acht-Sekunden- Frist von gestern war für das Intro gedacht und traf den Abspann mit: „Nächste Folge" verschwand genau dort, wo man hinsieht. Ein Intro-Knopf geht, wenn man ihn nicht nimmt; der Abspann-Knopf bleibt, bis die Folge zu Ende ist. Web und App. **„deu" stand da, weil es in der Datei steht.** Der Server reichte einen vorhandenen Spurnamen unbesehen durch — und viele Dateien tragen als Titel schlicht das Sprachkürzel. Wiederholt er bloss die Sprache, gilt er nicht, und die Tabelle darunter macht „Deutsch" daraus. **Und zweimal „Deutsch" ist keine Wahl.** Zwei deutsche Untertitelspuren sind der Normalfall — Vollfassung und Nur-Fremdsprachiges. Gleichnamige bekommen jetzt ihren Codec dazu, und wenn der auch gleich ist, die Nummer. Das kann keine Spur für sich beantworten: ob ein Name eindeutig ist, hängt an den anderen. Deshalb steht es in `Benennung` und hat fünf Prüfungen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
70 lines
2.4 KiB
C#
70 lines
2.4 KiB
C#
using Flaro.Core.Media;
|
|
|
|
namespace Flaro.Core.Tests;
|
|
|
|
/// <summary>Lassen sich zwei gleichnamige Spuren auseinanderhalten?</summary>
|
|
///
|
|
/// <remarks>
|
|
/// <b>Der Fehler, für den diese Prüfung steht.</b> In der Spurwahl standen
|
|
/// zweimal „deu" untereinander — gleicher Name, gleiches Aussehen, und die
|
|
/// einzige Möglichkeit herauszufinden, welche gemeint war, bestand darin,
|
|
/// eine zu nehmen und es danach wieder umzustellen.
|
|
/// </remarks>
|
|
public class SpurnamenTests
|
|
{
|
|
private static Benennung.Spurzeile Zeile(string name, string? codec = null, int nummer = 0)
|
|
=> new(name, codec, nummer);
|
|
|
|
[Test]
|
|
public void Eindeutige_Namen_bleiben_wie_sie_sind()
|
|
{
|
|
var namen = Benennung.Unterscheiden([Zeile("Deutsch"), Zeile("Englisch")]);
|
|
|
|
Assert.That(namen, Is.EqualTo(new[] { "Deutsch", "Englisch" }));
|
|
}
|
|
|
|
[Test]
|
|
public void Gleiche_Namen_bekommen_ihren_Codec()
|
|
{
|
|
var namen = Benennung.Unterscheiden(
|
|
[Zeile("Deutsch", "subrip", 2), Zeile("Deutsch", "ass", 3)]);
|
|
|
|
Assert.That(namen, Is.EqualTo(new[] { "Deutsch · SRT", "Deutsch · ASS" }));
|
|
}
|
|
|
|
/// <summary>Hilft der Codec nicht, hilft die Nummer.</summary>
|
|
///
|
|
/// <remarks>
|
|
/// Zwei deutsche SRT-Spuren in derselben Datei sind der Normalfall:
|
|
/// Vollfassung und Nur-Fremdsprachiges. „Spur 3" sagt nichts über den
|
|
/// Inhalt — aber es trennt, und darum geht es hier.
|
|
/// </remarks>
|
|
[Test]
|
|
public void Hilft_der_Codec_nicht_hilft_die_Nummer()
|
|
{
|
|
var namen = Benennung.Unterscheiden(
|
|
[Zeile("Deutsch", "subrip", 2), Zeile("Deutsch", "subrip", 3)]);
|
|
|
|
Assert.That(namen, Is.EqualTo(new[] { "Deutsch · SRT · Spur 2", "Deutsch · SRT · Spur 3" }));
|
|
}
|
|
|
|
/// <summary>Ohne Codec geht es gleich über die Nummer.</summary>
|
|
[Test]
|
|
public void Ohne_Codec_trennt_die_Nummer()
|
|
{
|
|
var namen = Benennung.Unterscheiden([Zeile("Deutsch", null, 1), Zeile("Deutsch", null, 4)]);
|
|
|
|
Assert.That(namen, Is.EqualTo(new[] { "Deutsch · Spur 1", "Deutsch · Spur 4" }));
|
|
}
|
|
|
|
/// <summary>Drei gleiche auch.</summary>
|
|
[Test]
|
|
public void Drei_gleiche_Namen_werden_alle_drei_getrennt()
|
|
{
|
|
var namen = Benennung.Unterscheiden(
|
|
[Zeile("Deutsch", "subrip", 1), Zeile("Deutsch", "subrip", 2), Zeile("Deutsch", "ass", 3)]);
|
|
|
|
Assert.That(namen, Is.Unique);
|
|
}
|
|
}
|