audio: Add AudioListener.on_event()

This commit is contained in:
Stein Magnus Jodal 2012-12-01 11:20:44 +01:00
parent ec66cae784
commit 959bd6cd84
2 changed files with 25 additions and 1 deletions

View File

@ -19,7 +19,20 @@ class AudioListener(object):
"""Helper to allow calling of audio listener events"""
listeners = pykka.ActorRegistry.get_by_class(AudioListener)
for listener in listeners:
getattr(listener.proxy(), event)(**kwargs)
listener.proxy().on_event(event, **kwargs)
def on_event(self, event, **kwargs):
"""
Called on all events.
*MAY* be implemented by actor. By default, this method forwards the
event to the specific event methods.
:param event: the event name
:type event: string
:param kwargs: any other arguments to the specific event handlers
"""
getattr(self, event)(**kwargs)
def reached_end_of_stream(self):
"""

View File

@ -1,5 +1,7 @@
from __future__ import unicode_literals
import mock
from mopidy import audio
from tests import unittest
@ -9,6 +11,15 @@ class AudioListenerTest(unittest.TestCase):
def setUp(self):
self.listener = audio.AudioListener()
def test_on_event_forwards_to_specific_handler(self):
self.listener.state_changed = mock.Mock()
self.listener.on_event(
'state_changed', old_state='stopped', new_state='playing')
self.listener.state_changed.assert_called_with(
old_state='stopped', new_state='playing')
def test_listener_has_default_impl_for_reached_end_of_stream(self):
self.listener.reached_end_of_stream()