using Flaro.Core.Media;
namespace Flaro.Core.Tests;
/// Lassen sich zwei gleichnamige Spuren auseinanderhalten?
///
///
/// Der Fehler, für den diese Prüfung steht. 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.
///
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" }));
}
/// Hilft der Codec nicht, hilft die Nummer.
///
///
/// 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.
///
[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" }));
}
/// Ohne Codec geht es gleich über die Nummer.
[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" }));
}
/// Drei gleiche auch.
[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);
}
}