Fix random tests and impl
This commit is contained in:
parent
6c2adbed3b
commit
96a974ac4d
@ -101,6 +101,7 @@ class BasePlaybackController(object):
|
||||
def __init__(self, backend):
|
||||
self.backend = backend
|
||||
self.current_track = None
|
||||
self._shuffled = []
|
||||
|
||||
def play(self, id=None, position=None):
|
||||
raise NotImplementedError
|
||||
@ -147,6 +148,13 @@ class BasePlaybackController(object):
|
||||
if not playlist.tracks:
|
||||
return None
|
||||
|
||||
if self.random and not self._shuffled:
|
||||
self._shuffled = playlist.tracks
|
||||
random.shuffle(self._shuffled)
|
||||
|
||||
if self._shuffled:
|
||||
return self._shuffled[0]
|
||||
|
||||
if self.current_track is None:
|
||||
return playlist.tracks[0]
|
||||
|
||||
|
||||
@ -77,6 +77,9 @@ class GStreamerPlaybackController(BasePlaybackController):
|
||||
if not self.current_track:
|
||||
return
|
||||
|
||||
if self.random:
|
||||
self._shuffled.pop(0)
|
||||
|
||||
self._bin.set_state(gst.STATE_READY)
|
||||
self._bin.set_property('uri', self.current_track.uri)
|
||||
self._set_state(gst.STATE_PLAYING)
|
||||
|
||||
@ -700,12 +700,14 @@ class BasePlaybackControllerTest(object):
|
||||
@populate_playlist
|
||||
def test_play_with_random(self):
|
||||
random.seed(1)
|
||||
self.playback.random = True
|
||||
self.playback.play()
|
||||
self.assertEqual(self.playback.current_track, self.tracks[2])
|
||||
|
||||
@populate_playlist
|
||||
def test_next_with_random(self):
|
||||
random.seed(1)
|
||||
self.playback.random = True
|
||||
self.playback.play()
|
||||
self.playback.next()
|
||||
self.assertEqual(self.playback.current_track, self.tracks[1])
|
||||
@ -713,6 +715,7 @@ class BasePlaybackControllerTest(object):
|
||||
@populate_playlist
|
||||
def test_previous_with_random(self):
|
||||
random.seed(1)
|
||||
self.playback.random = True
|
||||
self.playback.play()
|
||||
self.playback.next()
|
||||
self.playback.previous()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user