v2.49.3 — Shuffle-Edge-Case: Einzel-Song-Queue + Repeat-aus → Queue-Ende

## Fix (Code-Review Finding 1, HIGH)
- _baueShuffleReihenfolge: Index 0 nur noch bei Repeat-playlist in die
  Shuffle-Reihenfolge aufnehmen (Einzel-Song-Queue)
- naechsterIndex: Sicherheitsnetz gegen stale Reihenfolge — Kandidat ==
  aktueller Song bei Repeat-aus liefert null (Queue-Ende) statt denselben
  Song erneut
- Test ergänzt: shuffle + repeat aus + 1-Song-Queue → null
This commit is contained in:
Dustin
2026-08-04 16:46:08 +02:00
parent a1f1d87cd0
commit c6826db651
2 changed files with 20 additions and 1 deletions
+10
View File
@@ -143,6 +143,16 @@ void main() {
expect(p.naechsterIndex(), 0);
});
test('shuffle + repeat aus + einzelne Warteschlange: Queue-Ende (null)', () {
final p = PlayerService();
p.setWarteschlange([_song(1, 'A')]);
p.setZufallsmodus(true);
p.setWiederholmodus(Wiederholmodus.aus);
// Einzel-Song-Queue ohne Repeat darf denselben Song NICHT erneut liefern
expect(p.naechsterIndex(), isNull);
expect(p.naechsterIndex(), isNull);
});
test('shuffle schließt neuen aktuellen Index nach Umsortieren aus', () {
final p = PlayerService();
p.setWarteschlange([for (var i = 1; i <= 5; i++) _song(i, 'S$i')]);