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); } }