Handle next at end of playlist properly

This commit is contained in:
Thomas Adamcik 2010-02-13 22:36:42 +01:00
parent 83e8fba854
commit 827305ad00
2 changed files with 24 additions and 3 deletions

View File

@ -73,7 +73,10 @@ class GStreamerPlaybackController(BasePlaybackController):
def next(self):
playlist = self.backend.current_playlist.playlist
self.playlist_position += 1
self.current_track = playlist.tracks[self.playlist_position]
if self.playlist_position + 1 >= len(playlist.tracks):
self.stop()
else:
self.playlist_position += 1
self.current_track = playlist.tracks[self.playlist_position]
self.play()
self.play()

View File

@ -203,3 +203,21 @@ class BasePlaybackControllerTest(object):
def test_next_triggers_playback(self):
self.playback.next()
self.assertEqual(self.playback.state, self.playback.PLAYING)
@populate_playlist
def test_next_at_end_of_playlist(self):
playback = self.backend.playback
tracks = self.backend.current_playlist.playlist.tracks
playback.play()
for i, track in enumerate(tracks):
self.assertEqual(playback.state, playback.PLAYING)
self.assertEqual(playback.current_track, track)
self.assertEqual(playback.playlist_position, i)
playback.next()
self.assertEqual(playback.state, playback.STOPPED)
self.assertEqual(playback.current_track, tracks[-1])
self.assertEqual(playback.playlist_position, len(tracks) - 1)