From a8d13303432aef26c4156e2f252e43c88fd27f5b Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sun, 7 Feb 2010 20:07:02 +0100 Subject: [PATCH] Add move singe test and implement move function on controller --- mopidy/backends/__init__.py | 14 ++++++++++++++ tests/backends/__init__.py | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index a613525b..c9781ddf 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -28,6 +28,20 @@ class BaseCurrentPlaylistController(object): def load(self, playlist): self.playlist = playlist + def move(self, start, end, to_position): + tracks = self.playlist.tracks + + if start == end: + end += 1 + + new_tracks = tracks[:start] + tracks[end:] + + for track in tracks[start:end]: + new_tracks.insert(to_position, track) + to_position += 1 + + self.playlist = Playlist(tracks=new_tracks) + class BasePlaybackController(object): PAUSED = 'paused' PLAYING = 'playing' diff --git a/tests/backends/__init__.py b/tests/backends/__init__.py index 6a427cab..e1a257b6 100644 --- a/tests/backends/__init__.py +++ b/tests/backends/__init__.py @@ -54,6 +54,15 @@ class BaseCurrentPlaylistControllerTest(object): self.controller.load(new_playlist) self.assertEqual(new_playlist, self.controller.playlist) + @populate_playlist + def test_move_single(self): + tracks = self.controller.playlist.tracks + self.assertEqual(tracks[0].uri, self.uris[0]) + self.controller.move(0, 0, 2) + + tracks = self.controller.playlist.tracks + self.assertEqual(tracks[2].uri, self.uris[0]) + class BasePlaybackControllerTest(object): uris = [] backend_class = None