Add test_end_of_song_starts_next_track

This commit is contained in:
Thomas Adamcik 2010-02-18 15:12:17 +01:00
parent 7dbce96bce
commit 613e3b86ba
2 changed files with 24 additions and 1 deletions

View File

@ -1,6 +1,8 @@
import logging
import gst
import gobject
import thread
from mopidy.models import Track, Playlist
from mopidy.backends import (BaseBackend,
@ -9,6 +11,14 @@ from mopidy.backends import (BaseBackend,
logger = logging.getLogger(u'backends.gstreamer')
def loop():
gobject.threads_init()
while True:
gobject.MainLoop().get_context().iteration(True)
thread.start_new_thread(loop, tuple())
class GStreamerBackend(BaseBackend):
def __init__(self, *args, **kwargs):
super(GStreamerBackend, self).__init__(*args, **kwargs)
@ -36,6 +46,9 @@ class GStreamerPlaybackController(BasePlaybackController):
sink = gst.element_factory_make("fakesink", "fakesink")
self.bin.set_property("video-sink", sink)
self.bus.add_signal_watch()
self.bus.connect('message', self._message)
self.stop()
def _set_state(self, state):
@ -50,6 +63,10 @@ class GStreamerPlaybackController(BasePlaybackController):
elif new == gst.STATE_PAUSED:
self.state = self.PAUSED
def _message(self, bus, message):
if message.type == gst.MESSAGE_EOS:
self.next()
def play(self, track=None, position=None):
playlist = self.backend.current_playlist.playlist
@ -107,4 +124,5 @@ class GStreamerPlaybackController(BasePlaybackController):
def destroy(self):
self.bin.set_state(gst.STATE_NULL)
self.bus.remove_signal_watch()
del self.bin

View File

@ -662,8 +662,13 @@ class BasePlaybackControllerTest(object):
def test_previous_track_with_shuffle(self):
raise NotImplementedError
@populate_playlist
def test_end_of_song_starts_next_track(self):
raise NotImplementedError
tracks = self.backend.current_playlist.playlist.tracks
self.playback.play()
self.playback.seek(tracks[0].length - 10)
time.sleep(0.1)
self.assertEqual(self.playback.current_track, tracks[1])
def test_end_of_playlist_stops(self):
raise NotImplementedError