core: Merged tracklist_position to index inside TracklistController

docs: Updated changelog.rst
This commit is contained in:
Javier Domingo Cansino 2013-08-09 09:14:28 +02:00
parent fac2c8af7d
commit 11d82056a9
7 changed files with 34 additions and 52 deletions

View File

@ -21,8 +21,8 @@ v0.15.0 (UNRELEASED)
mark songs, some Playback properties have been converted into functions and
both functions and properties have been moved into Tracklist to have more
modularity:
- Properties converted into functions that need arguments:
:meth:`tracklist_position`
- Properties merged into functions: :attr:`tracklist_position` merged to
:meth:`index`
- Properties moved: :attr:`random`, :attr:`repeat`, :attr:`consume` and
:attr:`single`
- Method created from properties: :meth:`next_track` from

View File

@ -133,14 +133,14 @@ class TracklistController(object):
Playback continues after current song.
"""
def tracklist_position(self, tl_track):
def index(self, tl_track):
"""
The position of the given track in the tracklist.
"""
if tl_track is None:
return None
try:
return self.tl_tracks.index(tl_track)
return self._tl_tracks.index(tl_track)
except ValueError:
return None
@ -172,7 +172,7 @@ class TracklistController(object):
if tl_track is None:
return self.tl_tracks[0]
position = self.tracklist_position(tl_track)
position = self.index(tl_track)
if self.repeat and self.single:
return self.tl_tracks[position]
@ -214,7 +214,7 @@ class TracklistController(object):
if tl_track is None:
return self.tl_tracks[0]
position = self.tracklist_position(tl_track)
position = self.index(tl_track)
if self.repeat:
return self.tl_tracks[(position + 1) % len(self.tl_tracks)]
@ -240,7 +240,7 @@ class TracklistController(object):
if self.repeat or self.consume or self.random:
return tl_track
position = self.tracklist_position(tl_track)
position = self.index(tl_track)
if position in (None, 0):
return None
@ -335,18 +335,6 @@ class TracklistController(object):
lambda ct: getattr(ct.track, key) == value, matches)
return matches
def index(self, tl_track):
"""
Get index of the given :class:`mopidy.models.TlTrack` in the tracklist.
Raises :exc:`ValueError` if not found.
:param tl_track: track to find the index of
:type tl_track: :class:`mopidy.models.TlTrack`
:rtype: int
"""
return self._tl_tracks.index(tl_track)
def move(self, start, end, to_position):
"""
Move the tracks in the slice ``[start:end]`` to ``to_position``.

View File

@ -330,7 +330,7 @@ def seek(context, songpos, seconds):
- issues ``seek 1 120`` without quotes around the arguments.
"""
tl_track = context.core.playback.current_tl_track.get()
if context.core.tracklist.tracklist_position(tl_track).get() != int(songpos):
if context.core.tracklist.index(tl_track).get() != int(songpos):
playpos(context, songpos)
context.core.playback.seek(int(seconds) * 1000).get()

View File

@ -38,7 +38,7 @@ def currentsong(context):
"""
tl_track = context.core.playback.current_tl_track.get()
if tl_track is not None:
position = context.core.tracklist.tracklist_position(tl_track).get()
position = context.core.tracklist.index(tl_track).get()
return track_to_mpd_format(tl_track, position=position)
@ -184,8 +184,8 @@ def status(context):
'tracklist.single': context.core.tracklist.single,
'playback.state': context.core.playback.state,
'playback.current_tl_track': context.core.playback.current_tl_track,
'tracklist.tracklist_position': (
context.core.tracklist.tracklist_position(
'tracklist.index': (
context.core.tracklist.index(
context.core.playback.current_tl_track.get())),
'playback.time_position': context.core.playback.time_position,
}
@ -254,7 +254,7 @@ def _status_songid(futures):
def _status_songpos(futures):
return futures['tracklist.tracklist_position'].get()
return futures['tracklist.index'].get()
def _status_state(futures):

View File

@ -180,14 +180,14 @@ class PlaybackControllerTest(object):
self.playback.play()
tl_track = self.playback.current_tl_track
old_position = self.tracklist.tracklist_position(tl_track)
old_position = self.tracklist.index(tl_track)
old_uri = tl_track.track.uri
self.playback.next()
tl_track = self.playback.current_tl_track
self.assertEqual(
self.tracklist.tracklist_position(tl_track), old_position + 1)
self.tracklist.index(tl_track), old_position + 1)
self.assertNotEqual(self.playback.current_track.uri, old_uri)
@populate_tracklist
@ -208,7 +208,7 @@ class PlaybackControllerTest(object):
self.assertEqual(self.playback.state, PlaybackState.PLAYING)
self.assertEqual(self.playback.current_track, track)
tl_track = self.playback.current_tl_track
self.assertEqual(self.tracklist.tracklist_position(tl_track), i)
self.assertEqual(self.tracklist.index(tl_track), i)
self.playback.next()
@ -328,14 +328,14 @@ class PlaybackControllerTest(object):
self.playback.play()
tl_track = self.playback.current_tl_track
old_position = self.tracklist.tracklist_position(tl_track)
old_position = self.tracklist.index(tl_track)
old_uri = tl_track.track.uri
self.playback.on_end_of_track()
tl_track = self.playback.current_tl_track
self.assertEqual(
self.tracklist.tracklist_position(tl_track), old_position + 1)
self.tracklist.index(tl_track), old_position + 1)
self.assertNotEqual(self.playback.current_track.uri, old_uri)
@populate_tracklist
@ -356,7 +356,7 @@ class PlaybackControllerTest(object):
self.assertEqual(self.playback.state, PlaybackState.PLAYING)
self.assertEqual(self.playback.current_track, track)
tl_track = self.playback.current_tl_track
self.assertEqual(self.tracklist.tracklist_position(tl_track), i)
self.assertEqual(self.tracklist.index(tl_track), i)
self.playback.on_end_of_track()
@ -528,29 +528,29 @@ class PlaybackControllerTest(object):
self.assertEqual(self.playback.current_track, self.tracks[1])
@populate_tracklist
def test_initial_tracklist_position(self):
def test_initial_index(self):
tl_track = self.playback.current_tl_track
self.assertEqual(self.tracklist.tracklist_position(tl_track), None)
self.assertEqual(self.tracklist.index(tl_track), None)
@populate_tracklist
def test_tracklist_position_during_play(self):
def test_index_during_play(self):
self.playback.play()
tl_track = self.playback.current_tl_track
self.assertEqual(self.tracklist.tracklist_position(tl_track), 0)
self.assertEqual(self.tracklist.index(tl_track), 0)
@populate_tracklist
def test_tracklist_position_after_next(self):
def test_index_after_next(self):
self.playback.play()
self.playback.next()
tl_track = self.playback.current_tl_track
self.assertEqual(self.tracklist.tracklist_position(tl_track), 1)
self.assertEqual(self.tracklist.index(tl_track), 1)
@populate_tracklist
def test_tracklist_position_at_end_of_playlist(self):
def test_index_at_end_of_playlist(self):
self.playback.play(self.tracklist.tl_tracks[-1])
self.playback.on_end_of_track()
tl_track = self.playback.current_tl_track
self.assertEqual(self.tracklist.tracklist_position(tl_track), None)
self.assertEqual(self.tracklist.index(tl_track), None)
def test_on_tracklist_change_gets_called(self):
callback = self.playback.on_tracklist_change

View File

@ -165,9 +165,9 @@ class TracklistControllerTest(object):
self.assertEquals(1, self.controller.index(tl_tracks[1]))
self.assertEquals(2, self.controller.index(tl_tracks[2]))
def test_index_raises_value_error_if_item_not_found(self):
test = lambda: self.controller.index(TlTrack(0, Track()))
self.assertRaises(ValueError, test)
def test_index_returns_none_if_item_not_found(self):
index = self.controller.index(TlTrack(0, Track()))
self.assertEquals(None, index)
@populate_tracklist
def test_move_single(self):

View File

@ -313,7 +313,7 @@ class JsonRpcBatchTest(JsonRpcTestBase):
class JsonRpcSingleCommandErrorTest(JsonRpcTestBase):
def test_application_error_response(self):
def test_application_error_response_is_none(self):
request = {
'jsonrpc': '2.0',
'method': 'core.tracklist.index',
@ -322,17 +322,11 @@ class JsonRpcSingleCommandErrorTest(JsonRpcTestBase):
}
response = self.jrw.handle_data(request)
self.assertNotIn('result', response)
print response
self.assertIn('result', response)
error = response['error']
self.assertEqual(error['code'], 0)
self.assertEqual(error['message'], 'Application error')
data = error['data']
self.assertEqual(data['type'], 'ValueError')
self.assertIn('not in list', data['message'])
self.assertIn('traceback', data)
self.assertIn('Traceback (most recent call last):', data['traceback'])
result = response['result']
self.assertEqual(result, None)
def test_missing_jsonrpc_member_causes_invalid_request_error(self):
request = {