using Flaro.Core.Media; using Flaro.Media; namespace Flaro.Media.Tests; /// Die Antwort von ffprobe -show_chapters lesen — ohne ffprobe. public class KapitelleserTests { [Test] public void Kapitel_mit_Namen_und_Zeiten() { var json = """ { "chapters": [ { "id": 0, "start_time": "0.000000", "end_time": "600.000000", "tags": { "title": "Anfang" } }, { "id": 1, "start_time": "6600.000000", "end_time": "7200.000000", "tags": { "title": "End Credits" } } ] } """; var kapitel = Kapitelleser.Lesen(json); Assert.That(kapitel, Is.EqualTo(new[] { new Kapitel(0, 600, "Anfang"), new Kapitel(6600, 7200, "End Credits"), })); } /// Ohne tags bleibt der Name leer — und das ist kein Fehler. [Test] public void Ein_Kapitel_ohne_Namen_kommt_trotzdem_an() { var json = """ { "chapters": [ { "start_time": "10.5", "end_time": "20.25" } ] } """; Assert.That(Kapitelleser.Lesen(json), Is.EqualTo(new[] { new Kapitel(10.5, 20.25, "") })); } [Test] public void Eine_Datei_ohne_Kapitel_ergibt_nichts() { Assert.Multiple(() => { Assert.That(Kapitelleser.Lesen("""{ "chapters": [] }"""), Is.Empty); Assert.That(Kapitelleser.Lesen("{}"), Is.Empty); Assert.That(Kapitelleser.Lesen(""), Is.Empty); Assert.That(Kapitelleser.Lesen("kein JSON"), Is.Empty); }); } }