From d0916334d4db1ef1c546af81d85ecb0b76578321 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 28 Feb 2010 23:10:54 +0100 Subject: [PATCH] Implement _current_playlist_swapid --- mopidy/mpd/handler.py | 8 +++++++- tests/mpd/handlertest.py | 13 +++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/mopidy/mpd/handler.py b/mopidy/mpd/handler.py index fbae54c1..1331babf 100644 --- a/mopidy/mpd/handler.py +++ b/mopidy/mpd/handler.py @@ -517,7 +517,13 @@ class MpdHandler(object): Swaps the positions of ``SONG1`` and ``SONG2`` (both song ids). """ - raise MpdNotImplemented # TODO + songid1 = int(songid1) + songid2 = int(songid2) + song1 = self.backend.current_playlist.get_by_id(songid1) + song2 = self.backend.current_playlist.get_by_id(songid2) + songpos1 = self.backend.current_playlist.playlist.tracks.index(song1) + songpos2 = self.backend.current_playlist.playlist.tracks.index(song2) + self._current_playlist_swap(songpos1, songpos2) @handle_pattern(r'^$') def _empty(self): diff --git a/tests/mpd/handlertest.py b/tests/mpd/handlertest.py index d590becc..5e294abc 100644 --- a/tests/mpd/handlertest.py +++ b/tests/mpd/handlertest.py @@ -768,8 +768,17 @@ class CurrentPlaylistHandlerTest(unittest.TestCase): self.assert_(u'OK' in result) def test_swapid(self): - result = self.h.handle_request(u'swapid "10" "20"') - self.assert_(u'ACK Not implemented' in result) + self.b.current_playlist.load(Playlist(tracks=[ + Track(name='a'), Track(name='b', id=13), Track(name='c'), + Track(name='d'), Track(name='e', id=29), Track(name='f')])) + result = self.h.handle_request(u'swapid "13" "29"') + 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) class StoredPlaylistsHandlerTest(unittest.TestCase):