using Flaro.Core.Media; namespace Flaro.Core.Tests; /// Welches Aufmacherbild gerade gilt. public class AufmacherwahlTests { private static readonly Guid Titel = Guid.Parse("11111111-2222-3333-4444-555555555555"); private static readonly DateTimeOffset Montag = new(2026, 10, 12, 8, 0, 0, TimeSpan.Zero); [Test] public void Ohne_Auswahl_gibt_es_keines() { Assert.That(Aufmacherwahl.Jetziges(null, Titel, Montag), Is.Null); Assert.That(Aufmacherwahl.Jetziges("", Titel, Montag), Is.Null); } [Test] public void Ein_einziges_Bild_bleibt_immer_dasselbe() { var spaeter = Montag.AddDays(30); Assert.That(Aufmacherwahl.Jetziges("a", Titel, Montag), Is.EqualTo("a")); Assert.That(Aufmacherwahl.Jetziges("a", Titel, spaeter), Is.EqualTo("a")); } /// Innerhalb eines Fensters kommt überall dasselbe heraus. /// /// /// Der eigentliche Grund für die Rechnung. Ein Zufall je Abruf /// hiesse: beim Blättern springt das Bild, und die App zeigt ein /// anderes als das Web. /// [Test] public void Innerhalb_des_Fensters_wechselt_nichts() { var erstes = Aufmacherwahl.Jetziges("a,b,c", Titel, Montag); var kurzDarauf = Aufmacherwahl.Jetziges("a,b,c", Titel, Montag.AddMinutes(90)); Assert.That(kurzDarauf, Is.EqualTo(erstes)); } [Test] public void Nach_dem_Fenster_kommt_ein_anderes() { var erstes = Aufmacherwahl.Jetziges("a,b,c", Titel, Montag); var danach = Aufmacherwahl.Jetziges("a,b,c", Titel, Montag + Aufmacherwahl.Fenster); Assert.That(danach, Is.Not.EqualTo(erstes)); } /// Über einen Tag kommt jedes Bild vor. [Test] public void Alle_Bilder_kommen_an_die_Reihe() { var gesehen = new HashSet(); for (var i = 0; i < 24; i++) gesehen.Add(Aufmacherwahl.Jetziges("a,b,c", Titel, Montag.AddHours(i * 5))); Assert.That(gesehen, Is.EquivalentTo(new[] { "a", "b", "c" })); } /// Zwei Titel schalten nicht im selben Augenblick um. [Test] public void Nicht_alle_Titel_zugleich() { var anderer = Guid.Parse("99999999-8888-7777-6666-555555555555"); var eins = Aufmacherwahl.Jetziges("a,b,c", Titel, Montag); var zwei = Aufmacherwahl.Jetziges("a,b,c", anderer, Montag); Assert.That(zwei, Is.Not.EqualTo(eins)); } [Test] public void Mehr_als_fuenf_werden_abgeschnitten() { var zeile = Aufmacherwahl.Schreiben(["a", "b", "c", "d", "e", "f", "g"]); Assert.That(Aufmacherwahl.Lesen(zeile), Has.Count.EqualTo(5)); } [Test] public void Doppelte_und_Leere_fallen_heraus() { var zeile = Aufmacherwahl.Schreiben(["a", " a ", "", " ", "b"]); Assert.That(Aufmacherwahl.Lesen(zeile), Is.EqualTo(new[] { "a", "b" })); } /// Ein Komma im Schlüssel zerlegte die Zeile beim Lesen. [Test] public void Ein_Schluessel_mit_Komma_wird_verworfen() { Assert.That(Aufmacherwahl.Lesen(Aufmacherwahl.Schreiben(["a,b", "c"])), Is.EqualTo(new[] { "c" })); } [Test] public void Ohne_Bilder_bleibt_die_Zeile_leer() { Assert.That(Aufmacherwahl.Schreiben([]), Is.Null); } }