From e2bdec5a4b3a83168355f51106264067f747eb11 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sat, 14 Aug 2010 15:23:27 +0200 Subject: [PATCH] Start adding gstreamer output tests --- mopidy/outputs/gstreamer.py | 11 +++++------ tests/outputs/__init__.py | 0 tests/outputs/gstreamer_test.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 tests/outputs/__init__.py create mode 100644 tests/outputs/gstreamer_test.py diff --git a/mopidy/outputs/gstreamer.py b/mopidy/outputs/gstreamer.py index 5e64378f..19f56c59 100644 --- a/mopidy/outputs/gstreamer.py +++ b/mopidy/outputs/gstreamer.py @@ -43,7 +43,7 @@ class GStreamerProcess(BaseProcess): """ pipeline_description = \ - 'appsrc name=data ! volume name=volume ! autoaudiosink name=sink' + 'uridecodebin name=uri ! volume name=volume ! autoaudiosink name=sink' def __init__(self, core_queue, output_queue): super(GStreamerProcess, self).__init__() @@ -52,7 +52,7 @@ class GStreamerProcess(BaseProcess): self.gst_pipeline = None self.gst_bus = None self.gst_bus_id = None - self.gst_uri_src = None + self.gst_uri_bin = None self.gst_data_src = None self.gst_volume = None self.gst_sink = None @@ -72,7 +72,7 @@ class GStreamerProcess(BaseProcess): messages_thread.start() self.gst_pipeline = gst.parse_launch(self.pipeline_description) - self.gst_data_src = self.gst_pipeline.get_by_name('data') + self.gst_uri_bin = self.gst_pipeline.get_by_name('uri') self.gst_volume = self.gst_pipeline.get_by_name('volume') self.gst_sink = self.gst_pipeline.get_by_name('sink') @@ -121,9 +121,8 @@ class GStreamerProcess(BaseProcess): def play_uri(self, uri): """Play audio at URI""" self.set_state('READY') - self.gst_uri_src.set_property('uri', uri) - self.set_state('PLAYING') - # TODO Return status + self.gst_uri_bin.set_property('uri', uri) + return self.set_state('PLAYING') def deliver_data(self, caps_string, data): """Deliver audio data to be played""" diff --git a/tests/outputs/__init__.py b/tests/outputs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/outputs/gstreamer_test.py b/tests/outputs/gstreamer_test.py new file mode 100644 index 00000000..a75eef0d --- /dev/null +++ b/tests/outputs/gstreamer_test.py @@ -0,0 +1,30 @@ +import multiprocessing +import unittest + +from mopidy.utils import path_to_uri +from mopidy.process import pickle_connection +from mopidy.outputs.gstreamer import GStreamerOutput + +from tests import data_folder + +class GStreamerOutputTest(unittest.TestCase): + def setUp(self): + self.song_uri = path_to_uri(data_folder('song1.wav')) + self.output_queue = multiprocessing.Queue() + self.core_queue = multiprocessing.Queue() + self.output = GStreamerOutput(self.core_queue, self.output_queue) + + def tearDown(self): + self.output.destroy() + + def send(self, message): + (my_end, other_end) = multiprocessing.Pipe() + message.update({'reply_to': pickle_connection(other_end)}) + self.output_queue.put(message) + my_end.poll(None) + return my_end.recv() + + def test_play_uri_existing_file_returns_true(self): + message = {'command': 'play_uri', 'uri': self.song_uri} + self.assertEqual(True, self.send(message)) +