From c8ee771ebc5f2793b92452abc4c4dac63406b4a7 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 28 Feb 2010 22:56:42 +0100 Subject: [PATCH] Implement _current_playlist_shuffle --- mopidy/mpd/handler.py | 6 +++++- tests/mpd/handlertest.py | 33 ++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/mopidy/mpd/handler.py b/mopidy/mpd/handler.py index 128696ab..154ce373 100644 --- a/mopidy/mpd/handler.py +++ b/mopidy/mpd/handler.py @@ -481,7 +481,11 @@ class MpdHandler(object): Shuffles the current playlist. ``START:END`` is optional and specifies a range of songs. """ - raise MpdNotImplemented # TODO + if start is not None: + start = int(start) + if end is not None: + end = int(end) + self.backend.current_playlist.shuffle(start, end) @handle_pattern(r'^swap "(?P\d+)" "(?P\d+)"$') def _current_playlist_swap(self, songpos1, songpos2): diff --git a/tests/mpd/handlertest.py b/tests/mpd/handlertest.py index 05911eb6..108341f5 100644 --- a/tests/mpd/handlertest.py +++ b/tests/mpd/handlertest.py @@ -720,16 +720,39 @@ class CurrentPlaylistHandlerTest(unittest.TestCase): self.assert_(u'OK' in result) def test_shuffle_without_range(self): + self.b.current_playlist.load(Playlist(tracks=[ + Track(name='a'), Track(name='b'), Track(name='c'), + Track(name='d'), Track(name='e'), Track(name='f')])) + self.assertEquals(self.b.current_playlist.version, 2) result = self.h.handle_request(u'shuffle') - self.assert_(u'ACK Not implemented' in result) + self.assertEquals(self.b.current_playlist.version, 3) + self.assert_(u'OK' in result) def test_shuffle_with_open_range(self): - result = self.h.handle_request(u'shuffle "10:"') - self.assert_(u'ACK Not implemented' in result) + self.b.current_playlist.load(Playlist(tracks=[ + Track(name='a'), Track(name='b'), Track(name='c'), + Track(name='d'), Track(name='e'), Track(name='f')])) + self.assertEquals(self.b.current_playlist.version, 2) + result = self.h.handle_request(u'shuffle "4:"') + self.assertEquals(self.b.current_playlist.version, 3) + self.assertEquals(self.b.current_playlist.playlist.tracks[0].name, 'a') + self.assertEquals(self.b.current_playlist.playlist.tracks[1].name, 'b') + self.assertEquals(self.b.current_playlist.playlist.tracks[2].name, 'c') + self.assertEquals(self.b.current_playlist.playlist.tracks[3].name, 'd') + self.assert_(u'OK' in result) def test_shuffle_with_closed_range(self): - result = self.h.handle_request(u'shuffle "10:20"') - self.assert_(u'ACK Not implemented' in result) + self.b.current_playlist.load(Playlist(tracks=[ + Track(name='a'), Track(name='b'), Track(name='c'), + Track(name='d'), Track(name='e'), Track(name='f')])) + self.assertEquals(self.b.current_playlist.version, 2) + result = self.h.handle_request(u'shuffle "1:3"') + self.assertEquals(self.b.current_playlist.version, 3) + self.assertEquals(self.b.current_playlist.playlist.tracks[0].name, 'a') + self.assertEquals(self.b.current_playlist.playlist.tracks[3].name, 'd') + self.assertEquals(self.b.current_playlist.playlist.tracks[4].name, 'e') + self.assertEquals(self.b.current_playlist.playlist.tracks[5].name, 'f') + self.assert_(u'OK' in result) def test_swap(self): result = self.h.handle_request(u'swap "10" "20"')