Make tracklist.add() only take and return lists

This commit is contained in:
Stein Magnus Jodal 2012-11-20 22:12:09 +01:00
parent 3dc1586213
commit ae9a257091
5 changed files with 19 additions and 33 deletions

View File

@ -3,7 +3,7 @@ from __future__ import unicode_literals
import logging
import random
from mopidy.models import TlTrack, Track
from mopidy.models import TlTrack
from . import listener
@ -70,26 +70,17 @@ class TracklistController(object):
the tracklist. If ``at_position`` is not given, the tracks are appended
to the end of the tracklist.
If ``tracks`` is a track object, a single
:class:`mopidy.models.TlTrack` object is returned. If ``tracks`` is a
list, a list of :class:`mopidy.models.TlTrack` is returned.
Triggers the :meth:`mopidy.core.CoreListener.tracklist_changed` event.
:param track: track to add
:type track: :class:`mopidy.models.Track`
:param tracks: tracks to add
:type tracks: list of :class:`mopidy.models.Track`
:param at_position: position in tracklist to add track
:type at_position: int or :class:`None`
:rtype: a single or a list of :class:`mopidy.models.TlTrack`
:rtype: list of :class:`mopidy.models.TlTrack`
"""
assert at_position is None or at_position <= len(self._tl_tracks), \
'at_position can not be greater than tracklist length'
single_add = False
if isinstance(tracks, Track):
tracks = [tracks]
single_add = True
tl_tracks = []
for track in tracks:
tl_track = TlTrack(self._next_tlid, track)
@ -104,10 +95,7 @@ class TracklistController(object):
if tl_tracks:
self._increase_version()
if single_add:
return tl_tracks[0]
else:
return tl_tracks
return tl_tracks
def clear(self):
"""

View File

@ -3,9 +3,7 @@ from __future__ import unicode_literals
def populate_tracklist(func):
def wrapper(self):
self.tl_tracks = []
for track in self.tracks:
self.tl_tracks.append(self.core.tracklist.add(track))
self.tl_tracks = self.core.tracklist.add(self.tracks)
return func(self)
wrapper.__name__ = func.__name__

View File

@ -36,17 +36,17 @@ class TracklistControllerTest(object):
def test_add(self):
for track in self.tracks:
tl_track = self.controller.add(track)
tl_tracks = self.controller.add([track])
self.assertEqual(track, self.controller.tracks[-1])
self.assertEqual(tl_track, self.controller.tl_tracks[-1])
self.assertEqual(track, tl_track.track)
self.assertEqual(tl_tracks[0], self.controller.tl_tracks[-1])
self.assertEqual(track, tl_tracks[0].track)
def test_add_at_position(self):
for track in self.tracks[:-1]:
tl_track = self.controller.add(track, 0)
tl_tracks = self.controller.add([track], 0)
self.assertEqual(track, self.controller.tracks[0])
self.assertEqual(tl_track, self.controller.tl_tracks[0])
self.assertEqual(track, tl_track.track)
self.assertEqual(tl_tracks[0], self.controller.tl_tracks[0])
self.assertEqual(track, tl_tracks[0].track)
@populate_tracklist
def test_add_at_position_outside_of_playlist(self):

View File

@ -27,7 +27,7 @@ class LocalPlaybackControllerTest(PlaybackControllerTest, unittest.TestCase):
def add_track(self, path):
uri = path_to_uri(path_to_data_dir(path))
track = Track(uri=uri, length=4464)
self.tracklist.add(track)
self.tracklist.add([track])
def test_uri_scheme(self):
self.assertIn('file', self.core.uri_schemes)

View File

@ -26,14 +26,14 @@ class BackendEventsTest(unittest.TestCase):
self.assertEqual(send.call_args[0][0], 'playlists_loaded')
def test_pause_sends_track_playback_paused_event(self, send):
self.core.tracklist.add(Track(uri='dummy:a'))
self.core.tracklist.add([Track(uri='dummy:a')])
self.core.playback.play().get()
send.reset_mock()
self.core.playback.pause().get()
self.assertEqual(send.call_args[0][0], 'track_playback_paused')
def test_resume_sends_track_playback_resumed(self, send):
self.core.tracklist.add(Track(uri='dummy:a'))
self.core.tracklist.add([Track(uri='dummy:a')])
self.core.playback.play()
self.core.playback.pause().get()
send.reset_mock()
@ -41,20 +41,20 @@ class BackendEventsTest(unittest.TestCase):
self.assertEqual(send.call_args[0][0], 'track_playback_resumed')
def test_play_sends_track_playback_started_event(self, send):
self.core.tracklist.add(Track(uri='dummy:a'))
self.core.tracklist.add([Track(uri='dummy:a')])
send.reset_mock()
self.core.playback.play().get()
self.assertEqual(send.call_args[0][0], 'track_playback_started')
def test_stop_sends_track_playback_ended_event(self, send):
self.core.tracklist.add(Track(uri='dummy:a'))
self.core.tracklist.add([Track(uri='dummy:a')])
self.core.playback.play().get()
send.reset_mock()
self.core.playback.stop().get()
self.assertEqual(send.call_args_list[0][0][0], 'track_playback_ended')
def test_seek_sends_seeked_event(self, send):
self.core.tracklist.add(Track(uri='dummy:a', length=40000))
self.core.tracklist.add([Track(uri='dummy:a', length=40000)])
self.core.playback.play().get()
send.reset_mock()
self.core.playback.seek(1000).get()
@ -62,7 +62,7 @@ class BackendEventsTest(unittest.TestCase):
def test_tracklist_add_sends_tracklist_changed_event(self, send):
send.reset_mock()
self.core.tracklist.add(Track(uri='dummy:a')).get()
self.core.tracklist.add([Track(uri='dummy:a')]).get()
self.assertEqual(send.call_args[0][0], 'tracklist_changed')
def test_tracklist_clear_sends_tracklist_changed_event(self, send):