curds: Add a function for moving tracks in a playlist
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
214ffab2b7
commit
8acd119630
|
@ -76,6 +76,24 @@ class Playlist(node.PlaylistNode):
|
|||
return i
|
||||
return None
|
||||
|
||||
def move(self, track, new):
|
||||
old = self.index(track)
|
||||
if old == None:
|
||||
return
|
||||
|
||||
self.list.remove(track)
|
||||
self.list.insert(new, track)
|
||||
self.sort_order.clear()
|
||||
|
||||
if old == self.current:
|
||||
self.current = new
|
||||
elif new < old and new <= self.current:
|
||||
self.current += 1
|
||||
elif new > old and new == self.current:
|
||||
self.current += 1
|
||||
elif new > old and new > self.current:
|
||||
self.current -= 1
|
||||
|
||||
def next(self):
|
||||
max = len(self) - 1
|
||||
if max == -1:
|
||||
|
|
|
@ -131,6 +131,54 @@ class TestPlaylist(unittest.TestCase):
|
|||
self.assertIsNone(self.plist.index(track))
|
||||
self.assertIsNone(self.plist.index(None))
|
||||
|
||||
def test_playlist_move_up(self):
|
||||
tracks = self.add_tracks(range(1, 11))
|
||||
self.plist.current = 5
|
||||
self.plist.sort("tracknumber")
|
||||
|
||||
self.plist.move(tracks[8], 6)
|
||||
self.assertEqual(self.plist.current, 5)
|
||||
self.assertEqual(self.plist.list[6], tracks[8])
|
||||
self.assertEqual(self.plist.sort_order, [ ])
|
||||
|
||||
self.plist.move(tracks[8], 5)
|
||||
self.assertEqual(self.plist.current, 6)
|
||||
self.assertEqual(self.plist.list[5], tracks[8])
|
||||
|
||||
self.plist.move(tracks[9], 0)
|
||||
self.assertEqual(self.plist.current, 7)
|
||||
self.assertEqual(self.plist.list[0], tracks[9])
|
||||
|
||||
def test_playlist_move_down(self):
|
||||
tracks = self.add_tracks(range(1, 11))
|
||||
self.plist.current = 5
|
||||
|
||||
self.plist.move(tracks[1], 4)
|
||||
self.assertEqual(self.plist.current, 5)
|
||||
self.assertEqual(self.plist.list[4], tracks[1])
|
||||
|
||||
self.plist.move(tracks[1], 5)
|
||||
self.assertEqual(self.plist.current, 6)
|
||||
self.assertEqual(self.plist.list[5], tracks[1])
|
||||
|
||||
self.plist.move(tracks[0], 9)
|
||||
self.assertEqual(self.plist.current, 5)
|
||||
self.assertEqual(self.plist.list[9], tracks[0])
|
||||
|
||||
self.plist.move(42, 0)
|
||||
|
||||
def test_playlist_move_current(self):
|
||||
tracks = self.add_tracks(range(1, 11))
|
||||
self.plist.current = 5
|
||||
|
||||
self.plist.move(tracks[5], 8)
|
||||
self.assertEqual(self.plist.current, 8)
|
||||
self.assertEqual(self.plist.list[8], tracks[5])
|
||||
|
||||
self.plist.move(tracks[5], 0)
|
||||
self.assertEqual(self.plist.current, 0)
|
||||
self.assertEqual(self.plist.list[0], tracks[5])
|
||||
|
||||
def test_playlist_next_empty_one(self):
|
||||
self.assertIsNone(self.plist.next())
|
||||
self.assertEqual(self.plist.current, -1)
|
||||
|
|
Loading…
Reference in New Issue
Block a user