Files
Melo/test/player/wischen_test.dart
Hermes (Server) c2f31dee01 UX-Simulation, Teil 3: Abbrechen, Badge, Versionsnummer, Wisch-Strecke
Die vier zuletzt zurückgestellten Punkte aus der UX-Simulation:

- Abbrechen-Knopf für hängende YouTube-Downloads (Future.any gegen ein
  Abbruch-Signal, Anfrage läuft im Hintergrund aus statt die App zu
  blockieren)
- Punkt am inaktiven Download-Unterreiter, wenn dort etwas im Hintergrund
  läuft (SubTabs bekommt einen optionalen badges-Parameter)
- Versionsnummer unter "Über Melo" (neue Abhängigkeit: package_info_plus)
- Mini-Player führt beim Wischen jetzt sichtbar mit und wertet zusätzlich
  zum Schwung auch die zurückgelegte Strecke aus — ein langsames, aber
  weites Wischen wurde vorher komplett ignoriert

Dabei drei bestehende Widget-Tests korrigiert, die den Download-Tab ohne
Provider<DownloadService> aufbauten (hauptmenue_test.dart,
home_shell_test.dart, online_screen_test.dart) — lief bisher nur, weil
niemand danach fragte; das neue Badge tut das jetzt app-weit.

550 Tests grün (vorher 539), flutter analyze ohne Befund.
2026-08-25 10:25:43 +02:00

96 lines
3.2 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:melo/player/wischen.dart';
/// Der Mini-Player ließ sich nur antippen. Wischen ist die Geste, die jede
/// andere Musik-App dort anbietet — aber sie darf nicht bei jedem Wackeln
/// während des Tippens losgehen.
void main() {
group('titelWechsel', () {
test('kräftiges Wischen nach links geht zum nächsten Titel', () {
// Nach links wischen heißt: der nächste kommt von rechts herein.
expect(titelWechsel(-1200), Wechsel.naechster);
});
test('kräftiges Wischen nach rechts geht zum vorherigen', () {
expect(titelWechsel(1200), Wechsel.vorheriger);
});
test('ein Wackeln beim Tippen wechselt nichts', () {
expect(titelWechsel(80), isNull);
expect(titelWechsel(-80), isNull);
expect(titelWechsel(0), isNull);
});
test('genau auf der Schwelle wechselt es noch nicht', () {
expect(titelWechsel(wischSchwelle), isNull);
expect(titelWechsel(-wischSchwelle), isNull);
});
test('knapp über der Schwelle wechselt es', () {
expect(titelWechsel(wischSchwelle + 1), Wechsel.vorheriger);
expect(titelWechsel(-wischSchwelle - 1), Wechsel.naechster);
});
});
group('oeffnetVollbild', () {
test('nach oben wischen öffnet', () {
// Nach oben ist in Flutter negativ.
expect(oeffnetVollbild(-1200), isTrue);
});
test('nach unten wischen öffnet nicht', () {
// Unten ist für „wegschieben" reserviert und nicht belegt — es soll
// jedenfalls nicht dasselbe tun wie oben.
expect(oeffnetVollbild(1200), isFalse);
});
test('ein Wackeln öffnet nicht', () {
expect(oeffnetVollbild(-80), isFalse);
expect(oeffnetVollbild(0), isFalse);
});
});
group('titelWechselMitStrecke', () {
test('kräftiger Schwung reicht wie bisher, egal wie kurz die Strecke',
() {
expect(titelWechselMitStrecke(-5, -1200), Wechsel.naechster);
expect(titelWechselMitStrecke(5, 1200), Wechsel.vorheriger);
});
test('eine weite, aber langsame Bewegung wechselt trotzdem', () {
expect(titelWechselMitStrecke(-wischStreckeSchwelle - 1, 0),
Wechsel.naechster);
expect(titelWechselMitStrecke(wischStreckeSchwelle + 1, 0),
Wechsel.vorheriger);
});
test('kurz und langsam wechselt nichts', () {
expect(titelWechselMitStrecke(20, 80), isNull);
});
test('genau auf der Streckenschwelle wechselt es noch nicht', () {
expect(titelWechselMitStrecke(wischStreckeSchwelle, 0), isNull);
});
});
group('oeffnetVollbildMitStrecke', () {
test('kräftiger Schwung reicht wie bisher, egal wie kurz die Strecke',
() {
expect(oeffnetVollbildMitStrecke(-5, -1200), isTrue);
});
test('eine weite, aber langsame Bewegung nach oben öffnet trotzdem', () {
expect(oeffnetVollbildMitStrecke(-wischStreckeSchwelle - 1, 0), isTrue);
});
test('dieselbe Strecke nach unten öffnet nicht — nur oben ist belegt',
() {
expect(oeffnetVollbildMitStrecke(wischStreckeSchwelle + 1, 0), isFalse);
});
test('kurz und langsam öffnet nichts', () {
expect(oeffnetVollbildMitStrecke(-20, -80), isFalse);
});
});
}