audio: Update dummy and tests to correctly emit stream changed
This commit is contained in:
parent
e12ea662da
commit
71b04213ff
@ -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()
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user