Example #1
0
def test_propagation():
    dispatcher = EventDispatcher()

    for event_id in (
            STRING_EVENT_ID,
            OBJECT_EVENT_ID,
            NUMERIC_EVENT_ID,
    ):
        listener1 = mock.MagicMock()

        def listener2(event):
            event.stop_propagation()

        listener3 = mock.MagicMock()

        dispatcher.add_listener(event_id, listener1)
        dispatcher.add_listener(event_id, listener2)
        dispatcher.add_listener(event_id, listener3)

        assert listener1.call_count == 0
        assert listener3.call_count == 0

        e = dispatcher.dispatch(event_id)

        assert listener1.call_count == 1
        assert listener3.call_count == 0
        assert e.propagation_stopped

        e = dispatcher.dispatch(event_id)

        assert listener1.call_count == 2
        assert listener3.call_count == 0
        assert e.propagation_stopped

        assert dispatcher.get_listeners(event_id) == [
            listener1, listener2, listener3
        ]

    listeners = dispatcher.get_listeners()
    assert len(listeners) == 3
    for event_id in (
            STRING_EVENT_ID,
            OBJECT_EVENT_ID,
            NUMERIC_EVENT_ID,
    ):
        assert len(listeners[event_id]) == 3
Example #2
0
def test_register_unregister():
    plugin = ConsoleOutputPlugin()
    dispatcher = EventDispatcher()

    plugin.register(dispatcher)
    assert plugin.setup in dispatcher.get_listeners(events.START)
    assert plugin.tick in dispatcher.get_listeners(events.TICK)
    assert plugin.teardown in dispatcher.get_listeners(events.STOPPED)
    plugin.unregister(dispatcher)
    assert plugin.setup not in dispatcher.get_listeners(events.START)
    assert plugin.tick not in dispatcher.get_listeners(events.TICK)
    assert plugin.teardown not in dispatcher.get_listeners(events.STOPPED)