import 'package:flutter_test/flutter_test.dart'; import 'package:melo/player/auto_browse.dart'; /// Im Auto und beim Sprachassistenten blättert man durch die Bibliothek, /// statt die App zu bedienen. Jeder Knoten braucht dafür eine Adresse, die /// hin und zurück eindeutig ist. void main() { group('knotenId und knotenAus', () { test('eine Ordner-Adresse ohne Namen kommt unverändert zurück', () { final id = knotenId(AutoArt.favoriten); final knoten = knotenAus(id); expect(knoten!.art, AutoArt.favoriten); expect(knoten.name, isNull); }); test('ein Name übersteht den Weg hin und zurück', () { final id = knotenId(AutoArt.kategorie, 'Trap cool'); final knoten = knotenAus(id); expect(knoten!.art, AutoArt.kategorie); expect(knoten.name, 'Trap cool'); }); test('Doppelpunkte im Namen zerlegen die Adresse nicht', () { // "Intro: Der Anfang" ist ein völlig normaler Albumtitel — und der // Doppelpunkt ist zugleich unser Trennzeichen. final knoten = knotenAus(knotenId(AutoArt.kategorie, 'Intro: Anfang')); expect(knoten!.name, 'Intro: Anfang'); }); test('Schrägstriche und Umlaute überstehen es ebenfalls', () { const name = 'AC/DC — Küchenlieder'; expect(knotenAus(knotenId(AutoArt.kuenstler, name))!.name, name); }); test('ein Titel trägt seine Song-UUID', () { final knoten = knotenAus(knotenId(AutoArt.titel, 'uuid-1')); expect(knoten!.art, AutoArt.titel); expect(knoten.name, 'uuid-1'); }); test('eine fremde Adresse ergibt nichts', () { expect(knotenAus('irgendwas'), isNull); expect(knotenAus(''), isNull); expect(knotenAus('melo:gibtesnicht'), isNull); }); }); group('wurzelArten', () { test('bietet die vier Wege an, die auch die App hat', () { expect(wurzelArten, [ AutoArt.favoriten, AutoArt.zuletzt, AutoArt.kategorien, AutoArt.kuenstlerListe, ]); }); test('jede Wurzel hat einen Namen für die Anzeige', () { for (final art in wurzelArten) { expect(art.anzeige, isNotEmpty); } }); test('die Wurzeln sind Ordner, keine Titel', () { // Ein Ordner darf nicht abspielbar sein, sonst versucht das Auto ihn // als Lied zu starten. for (final art in wurzelArten) { expect(art == AutoArt.titel, isFalse); } }); }); }