Implement _current_playlist_plchangesposid

This commit is contained in:
Stein Magnus Jodal 2010-02-28 22:26:18 +01:00
parent e3b407c709
commit 1a7fbe671b
2 changed files with 23 additions and 2 deletions

View File

@ -443,6 +443,7 @@ class MpdHandler(object):
To detect songs that were deleted at the end of the playlist, use
``playlistlength`` returned by status command.
"""
# XXX Naive implementation that returns all tracks as changed
if int(version) < self.backend.current_playlist.version:
return self.backend.current_playlist.playlist.mpd_format()
@ -460,7 +461,14 @@ class MpdHandler(object):
To detect songs that were deleted at the end of the playlist, use
``playlistlength`` returned by status command.
"""
raise MpdNotImplemented # TODO
# XXX Naive implementation that returns all tracks as changed
if int(version) != self.backend.current_playlist.version:
result = []
for position, track in enumerate(
self.backend.current_playlist.playlist.tracks):
result.append((u'cpos', position))
result.append((u'Id', track.id))
return result
@handle_pattern(r'^shuffle$')
@handle_pattern(r'^shuffle "(?P<start>\d+):(?P<end>\d+)*"$')

View File

@ -699,12 +699,25 @@ class CurrentPlaylistHandlerTest(unittest.TestCase):
self.assert_(u'ACK Not implemented' in result)
def test_plchanges(self):
self.b.current_playlist.load(Playlist(
tracks=[Track(name='a'), Track(name='b'), Track(name='c')]))
result = self.h.handle_request(u'plchanges "0"')
self.assert_(u'Title: a' in result)
self.assert_(u'Title: b' in result)
self.assert_(u'Title: c' in result)
self.assert_(u'OK' in result)
def test_plchangesposid(self):
self.b.current_playlist.load(Playlist(
tracks=[Track(id=11), Track(id=12), Track(id=13)]))
result = self.h.handle_request(u'plchangesposid "0"')
self.assert_(u'ACK Not implemented' in result)
self.assert_(u'cpos: 0' in result)
self.assert_(u'Id: 11' in result)
self.assert_(u'cpos: 2' in result)
self.assert_(u'Id: 12' in result)
self.assert_(u'cpos: 2' in result)
self.assert_(u'Id: 13' in result)
self.assert_(u'OK' in result)
def test_shuffle_without_range(self):
result = self.h.handle_request(u'shuffle')