audio: Update dummy and tests to correctly emit stream changed

This commit is contained in:
Thomas Adamcik 2015-09-03 21:39:30 +02:00
parent e12ea662da
commit 71b04213ff
2 changed files with 58 additions and 5 deletions

View File

@ -261,6 +261,37 @@ class AudioEventTest(BaseTest):
self.audio.wait_for_state_change().get()
self.assertEvent('stream_changed', uri=self.uris[0])
def test_stream_changed_event_on_multiple_changes(self):
self.audio.prepare_change()
self.audio.set_uri(self.uris[0])
self.listener.clear_events()
self.audio.start_playback()
self.audio.wait_for_state_change().get()
self.assertEvent('stream_changed', uri=self.uris[0])
self.audio.prepare_change()
self.audio.set_uri(self.uris[1])
self.audio.pause_playback()
self.audio.wait_for_state_change().get()
self.assertEvent('stream_changed', uri=self.uris[1])
def test_stream_changed_event_on_playing_to_paused(self):
self.audio.prepare_change()
self.audio.set_uri(self.uris[0])
self.listener.clear_events()
self.audio.start_playback()
self.audio.wait_for_state_change().get()
self.assertEvent('stream_changed', uri=self.uris[0])
self.listener.clear_events()
self.audio.pause_playback()
self.audio.wait_for_state_change().get()
self.assertNotEvent('stream_changed', uri=self.uris[0])
def test_stream_changed_event_on_paused_to_stopped(self):
self.audio.prepare_change()
self.audio.set_uri(self.uris[0])
@ -282,6 +313,21 @@ class AudioEventTest(BaseTest):
self.audio.wait_for_state_change().get()
self.assertEvent('position_changed', position=0)
def test_stream_changed_event_on_paused_to_playing(self):
self.audio.prepare_change()
self.audio.set_uri(self.uris[0])
self.listener.clear_events()
self.audio.pause_playback()
self.audio.wait_for_state_change().get()
self.assertEvent('stream_changed', uri=self.uris[0])
self.listener.clear_events()
self.audio.start_playback()
self.audio.wait_for_state_change().get()
self.assertNotEvent('stream_changed', uri=self.uris[0])
def test_position_changed_on_play(self):
self.audio.prepare_change()
self.audio.set_uri(self.uris[0])
@ -347,6 +393,8 @@ class AudioEventTest(BaseTest):
if not event.wait(timeout=1.0):
self.fail('Stream changed not reached within deadline')
self.assertEvent('stream_changed', uri=self.uris[0])
def test_reached_end_of_stream_event(self):
event = self.listener.wait('reached_end_of_stream').get()

View File

@ -25,12 +25,14 @@ class DummyAudio(pykka.ThreadingActor):
self._callback = None
self._uri = None
self._state_change_result = True
self._stream_changed = False
self._tags = {}
def set_uri(self, uri):
assert self._uri is None, 'prepare change not called before set'
self._tags = {}
self._uri = uri
self._stream_changed = True
def set_appsrc(self, *args, **kwargs):
pass
@ -88,12 +90,15 @@ class DummyAudio(pykka.ThreadingActor):
if not self._uri:
return False
if self.state == audio.PlaybackState.STOPPED and self._uri:
audio.AudioListener.send('position_changed', position=0)
audio.AudioListener.send('stream_changed', uri=self._uri)
if new_state == audio.PlaybackState.STOPPED:
if new_state == audio.PlaybackState.STOPPED and self._uri:
self._stream_changed = True
self._uri = None
if self._uri is not None:
audio.AudioListener.send('position_changed', position=0)
if self._stream_changed:
self._stream_changed = False
audio.AudioListener.send('stream_changed', uri=self._uri)
old_state, self.state = self.state, new_state