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