import 'package:flutter_test/flutter_test.dart'; import 'package:melo/shared/auswahl.dart'; /// Lange Listen ließen sich nur Titel für Titel bearbeiten: wer zwanzig /// Lieder in eine Wiedergabeliste wollte, tippte sechzig Mal. void main() { group('auswahlNach', () { test('ein neuer Titel kommt dazu', () { expect(auswahlNach({'a'}, 'b'), {'a', 'b'}); }); test('ein bereits gewählter fällt wieder heraus', () { expect(auswahlNach({'a', 'b'}, 'b'), {'a'}); }); test('der letzte herausgenommene beendet die Auswahl', () { expect(auswahlNach({'a'}, 'a'), isEmpty); }); test('lässt die Ausgangsmenge unverändert', () { final vorher = {'a'}; auswahlNach(vorher, 'b'); expect(vorher, {'a'}); }); }); group('auswahlText', () { test('nennt die Anzahl', () { expect(auswahlText(3), '3 ausgewählt'); }); test('spricht bei einem Titel in der Einzahl', () { expect(auswahlText(1), '1 Titel ausgewählt'); }); test('ohne Auswahl steht die Aufforderung', () { expect(auswahlText(0), 'Titel auswählen'); }); }); group('Meldung beim Hinzufügen zur Wiedergabeliste', () { test('nennt nur die neuen, wenn keiner schon drin war', () { expect(playlistMeldung(neu: 5, schonDa: 0), '5 Titel hinzugefügt'); }); test('nennt beides, wenn einige schon drin waren', () { // Vorher meldete die App „10 Titel hinzugefügt", obwohl drei davon nur // verschoben worden wären. expect(playlistMeldung(neu: 7, schonDa: 3), '7 hinzugefügt · 3 waren schon drin'); }); test('sagt es, wenn gar nichts dazukam', () { expect(playlistMeldung(neu: 0, schonDa: 4), 'Alle schon in der Liste'); }); test('ein Fehler unterbricht und wird benannt', () { expect(playlistMeldung(neu: 2, schonDa: 0, fehler: 'Datenbank weg'), 'Abgebrochen nach 2 Titeln: Datenbank weg'); }); }); }