From b89a6fc46d824bd3f8dc79d7d0e1b4984e80983d Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 28 Feb 2010 23:07:44 +0100 Subject: [PATCH] Implement _current_playlist_swap --- mopidy/mpd/handler.py | 12 +++++++++++- tests/mpd/handlertest.py | 13 +++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/mopidy/mpd/handler.py b/mopidy/mpd/handler.py index 154ce373..fbae54c1 100644 --- a/mopidy/mpd/handler.py +++ b/mopidy/mpd/handler.py @@ -496,7 +496,17 @@ class MpdHandler(object): Swaps the positions of ``SONG1`` and ``SONG2``. """ - raise MpdNotImplemented # TODO + songpos1 = int(songpos1) + songpos2 = int(songpos2) + playlist = self.backend.current_playlist.playlist + tracks = playlist.tracks + song1 = tracks[songpos1] + song2 = tracks[songpos2] + del tracks[songpos1] + tracks.insert(songpos1, song2) + del tracks[songpos2] + tracks.insert(songpos2, song1) + self.backend.current_playlist.load(playlist.with_(tracks=tracks)) @handle_pattern(r'^swapid "(?P\d+)" "(?P\d+)"$') def _current_playlist_swapid(self, songid1, songid2): diff --git a/tests/mpd/handlertest.py b/tests/mpd/handlertest.py index 108341f5..d590becc 100644 --- a/tests/mpd/handlertest.py +++ b/tests/mpd/handlertest.py @@ -755,8 +755,17 @@ class CurrentPlaylistHandlerTest(unittest.TestCase): self.assert_(u'OK' in result) def test_swap(self): - result = self.h.handle_request(u'swap "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')])) + result = self.h.handle_request(u'swap "1" "4"') + self.assertEquals(self.b.current_playlist.playlist.tracks[0].name, 'a') + self.assertEquals(self.b.current_playlist.playlist.tracks[1].name, 'e') + self.assertEquals(self.b.current_playlist.playlist.tracks[2].name, 'c') + self.assertEquals(self.b.current_playlist.playlist.tracks[3].name, 'd') + self.assertEquals(self.b.current_playlist.playlist.tracks[4].name, 'b') + self.assertEquals(self.b.current_playlist.playlist.tracks[5].name, 'f') + self.assert_(u'OK' in result) def test_swapid(self): result = self.h.handle_request(u'swapid "10" "20"')