From f9312b372f4ca549ce0c91fc792a6e0737ba5271 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sun, 14 Feb 2010 16:08:38 +0100 Subject: [PATCH] Add previous tests and implementation --- mopidy/backends/__init__.py | 3 +++ mopidy/backends/gstreamer.py | 14 ++++++++++++++ tests/backends/basetests.py | 13 ++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index 602a7d32..7cbfce5f 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -114,6 +114,9 @@ class BasePlaybackController(object): def next(self): raise NotImplementedError + def previous(self): + raise NotImplementedError + def pause(self): raise NotImplementedError diff --git a/mopidy/backends/gstreamer.py b/mopidy/backends/gstreamer.py index 77dbc306..22237222 100644 --- a/mopidy/backends/gstreamer.py +++ b/mopidy/backends/gstreamer.py @@ -96,6 +96,20 @@ class GStreamerPlaybackController(BasePlaybackController): next_track = playlist.tracks[self.playlist_position+1] self.play(next_track) + def previous(self): + playlist = self.backend.current_playlist.playlist + + if not self.current_track: + self.play() + elif not playlist.tracks: + self.stop() + elif self.playlist_position - 1 > 0: + first_track = playlist.tracks[0] + self.play(first_track) + else: + previous_track = playlist.tracks[self.playlist_position-1] + self.play(previous_track) + @property def volume(self): return int(self.bin.get_property('volume') * 100) diff --git a/tests/backends/basetests.py b/tests/backends/basetests.py index 44293b65..d8327ed8 100644 --- a/tests/backends/basetests.py +++ b/tests/backends/basetests.py @@ -290,15 +290,26 @@ class BasePlaybackControllerTest(object): self.assertEqual(playback.current_track, tracks[-1]) self.assertEqual(playback.playlist_position, len(tracks) - 1) - def test_previous(self): + def test_next_for_empty_playlist(self): raise NotImplementedError + @populate_playlist + def test_previous(self): + tracks = self.backend.current_playlist.playlist.tracks + self.playback.play() + self.playback.next() + self.playback.previous() + self.assertEqual(self.playback.current_track, tracks[0]) + def test_previous_triggers_playback(self): raise NotImplementedError def test_previous_at_start_of_playlist(self): raise NotImplementedError + def test_previous_for_empty_playlist(self): + raise NotImplementedError + @populate_playlist def test_next_track_before_play(self): tracks = self.backend.current_playlist.playlist.tracks