From d1b91117b43fbcaa6d67e8589bb83f14e52c50c0 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Tue, 28 Jan 2014 21:34:31 +0100 Subject: [PATCH] audio: Update dummy audio used for testing --- mopidy/audio/dummy.py | 31 +++++++++++++++++++++++++++---- tests/audio/test_actor.py | 1 + 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/mopidy/audio/dummy.py b/mopidy/audio/dummy.py index ad14390f..272fe346 100644 --- a/mopidy/audio/dummy.py +++ b/mopidy/audio/dummy.py @@ -17,12 +17,12 @@ class DummyAudio(pykka.ThreadingActor): super(DummyAudio, self).__init__() self.state = PlaybackState.STOPPED self._position = 0 - - def set_on_end_of_track(self, callback): - pass + self._callback = None + self._uri = None def set_uri(self, uri): - pass + assert self._uri is None, 'prepare change not called before set' + self._uri = uri def set_appsrc(self, *args, **kwargs): pass @@ -38,6 +38,7 @@ class DummyAudio(pykka.ThreadingActor): def set_position(self, position): self._position = position + AudioListener.send('position_changed', position=position) return True def start_playback(self): @@ -47,6 +48,7 @@ class DummyAudio(pykka.ThreadingActor): return self._change_state(PlaybackState.PAUSED) def prepare_change(self): + self._uri = None return True def stop_playback(self): @@ -61,8 +63,29 @@ class DummyAudio(pykka.ThreadingActor): def set_metadata(self, track): pass + def set_about_to_finish_callback(self, callback): + self._callback = callback + def _change_state(self, new_state): + if not self._uri: + return False + + if self.state == PlaybackState.STOPPED and self._uri: + AudioListener.send('stream_changed', uri=self._uri) + old_state, self.state = self.state, new_state AudioListener.send( 'state_changed', old_state=old_state, new_state=new_state) + return True + + def trigger_fake_end_of_stream(self): + AudioListener.send('reached_end_of_stream') + + def trigger_fake_about_to_finish(self): + if not self._callback: + return + self.prepare_change() + self._callback() + if not self._uri: + self.trigger_fake_end_of_stream() diff --git a/tests/audio/test_actor.py b/tests/audio/test_actor.py index 756c4d62..55b79a97 100644 --- a/tests/audio/test_actor.py +++ b/tests/audio/test_actor.py @@ -138,6 +138,7 @@ class AudioEventTest(unittest.TestCase): pykka.ActorRegistry.stop_all() # TODO: test wihtout uri set, with bad uri and gapless... + # TODO: playing->playing triggered by seek should be removed def test_state_change_stopped_to_playing_event(self, send_mock): self.audio.prepare_change()