v2.49.5 — Play-Next verschiebt statt zu duplizieren + Shuffle-Priorität
## Fix (Code-Review Finding 3, MED) - spieleAlsNaechstes: Song bereits in der Queue wird an Position nach dem aktuellen VERSCHOBEN (inkl. _aktuellerIndex-Anpassung), keine Kopie mehr - Shuffle: keine Neu-Mischung nach Play-Next — Song wird via _pinneInShuffleReihenfolge an die nächste Position gepinnt (Index- Korrektur für Verschiebungen, _shufflePos-Nachführung am Reihenende) - 3 Tests ergänzt: Verschieben statt Duplizieren, Song von vor dem aktuellen, Shuffle-Pin (kein Duplikat + naechsterIndex == gepinnter Song)
This commit is contained in:
@@ -51,6 +51,37 @@ void main() {
|
||||
expect(p.aktuellerIndex, -1);
|
||||
});
|
||||
|
||||
test('spieleAlsNaechstes verschiebt vorhandenen Song statt zu duplizieren', () {
|
||||
final p = PlayerService();
|
||||
p.setWarteschlange([_song(1, 'A'), _song(2, 'B'), _song(3, 'C')]);
|
||||
p.spieleAlsNaechstes(_song(3, 'C'));
|
||||
expect(p.warteschlange.map((s) => s.id).toList(), [1, 3, 2]);
|
||||
expect(p.warteschlange.length, 3);
|
||||
// Wiederholter Aufruf erzeugt weiterhin keine Duplikate
|
||||
p.spieleAlsNaechstes(_song(3, 'C'));
|
||||
expect(p.warteschlange.length, 3);
|
||||
});
|
||||
|
||||
test('spieleAlsNaechstes verschiebt Song von vor dem aktuellen', () {
|
||||
final p = PlayerService();
|
||||
p.setWarteschlange([_song(1, 'A'), _song(2, 'B'), _song(3, 'C')], startIndex: 2);
|
||||
p.spieleAlsNaechstes(_song(1, 'A'));
|
||||
expect(p.warteschlange.map((s) => s.id).toList(), [2, 3, 1]);
|
||||
expect(p.aktuellerIndex, 1); // aktueller Song (C) wandert auf Index 1
|
||||
});
|
||||
|
||||
test('spieleAlsNaechstes im Shuffle: Song wird als nächstes gespielt', () {
|
||||
final p = PlayerService();
|
||||
p.setWarteschlange([_song(1, 'A'), _song(2, 'B'), _song(3, 'C'), _song(4, 'D')]);
|
||||
p.setZufallsmodus(true);
|
||||
p.spieleAlsNaechstes(_song(3, 'C'));
|
||||
// Kein Duplikat: alle 4 Songs genau einmal
|
||||
expect(p.warteschlange.map((s) => s.id).toSet(), {1, 2, 3, 4});
|
||||
expect(p.warteschlange.length, 4);
|
||||
// C (jetzt direkt nach dem aktuellen) wird als nächstes gespielt
|
||||
expect(p.naechsterIndex(), 1);
|
||||
});
|
||||
|
||||
test('amEndeHinzufuegen hängt ans Ende an', () {
|
||||
final p = PlayerService();
|
||||
p.setWarteschlange([_song(1, 'A')]);
|
||||
|
||||
Reference in New Issue
Block a user