From 458ff52b8628d69bd874dc79f418de3cd82fe636 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Thu, 18 Feb 2010 15:39:15 +0100 Subject: [PATCH] Add test_repeat_off_by_default and test_next_track_at_end_of_playlist_with_repeat --- mopidy/backends/__init__.py | 10 ++++++++-- tests/backends/basetests.py | 12 +++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index 6b688183..781b63f4 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -93,6 +93,7 @@ class BasePlaybackController(object): STOPPED = 'stopped' state = STOPPED + repeat = False def __init__(self, backend): self.backend = backend @@ -135,9 +136,14 @@ class BasePlaybackController(object): def next_track(self): playlist = self.backend.current_playlist.playlist + if self.current_track is None: + return playlist.tracks[0] + + if self.repeat: + position = (self.playlist_position + 1) % len(playlist.tracks) + return playlist.tracks[position] + try: - if self.current_track is None: - return playlist.tracks[0] return playlist.tracks[self.playlist_position + 1] except IndexError: return None diff --git a/tests/backends/basetests.py b/tests/backends/basetests.py index 9946a4ba..f455fed5 100644 --- a/tests/backends/basetests.py +++ b/tests/backends/basetests.py @@ -375,6 +375,13 @@ class BasePlaybackControllerTest(object): self.playback.next() self.assertEqual(self.playback.next_track, None) + @populate_playlist + def test_next_track_at_end_of_playlist_with_repeat(self): + self.playback.repeat = True + for track in self.tracks: + self.playback.next() + self.assertEqual(self.playback.next_track, self.tracks[0]) + @populate_playlist def test_previous_track_before_play(self): self.assertEqual(self.playback.previous_track, None) @@ -676,4 +683,7 @@ class BasePlaybackControllerTest(object): self.playback.play(tracks[-1]) self.playback.seek(tracks[-1].length - 10) time.sleep(0.1) - self.assertEqual(self.playback.state, self.playback.stopped) + self.assertEqual(self.playback.state, self.playback.STOPPED) + + def test_repeat_off_by_default(self): + self.assertEqual(self.playback.repeat, False)