示例#1
0
def test_listeners__6():
    """
    Should not return the original object, but a copy.
    """
    emitter = Emitter()
    emitter.on("event", callable)
    assert emitter.listeners("event") is not emitter.listeners("event")
示例#2
0
def test_listeners__6():
    """
    Should not return the original object, but a copy.
    """
    emitter = Emitter()
    emitter.on("event", callable)
    assert emitter.listeners("event") is not emitter.listeners("event")
示例#3
0
def test_listeners__1():
    """
    Returns an empty list when asking for an unknown event.
    """
    emitter = Emitter()

    assert isinstance(emitter.listeners(""), list)
    assert emitter.listeners("") == []
示例#4
0
def test_listeners__1():
    """
    Returns an empty list when asking for an unknown event.
    """
    emitter = Emitter()

    assert isinstance(emitter.listeners(""), list)
    assert emitter.listeners("") == []
示例#5
0
def test_off__7():
    """
    A listener of the True event can be removed.
    """
    emitter = Emitter()
    emitter.on(True, callable)
    assert callable in emitter.listeners(True)

    emitter.off(True, callable)
    assert callable not in emitter.listeners(True)
示例#6
0
def test_off__7():
    """
    A listener of the True event can be removed.
    """
    emitter = Emitter()
    emitter.on(True, callable)
    assert callable in emitter.listeners(True)

    emitter.off(True, callable)
    assert callable not in emitter.listeners(True)
示例#7
0
def test_off__6():
    """
    A listener of the False event can be removed.
    """
    emitter = Emitter()
    emitter.on(False, callable)
    assert callable in emitter.listeners(False)

    emitter.off(False, callable)
    assert callable not in emitter.listeners(False)
示例#8
0
def test_off__6():
    """
    A listener of the False event can be removed.
    """
    emitter = Emitter()
    emitter.on(False, callable)
    assert callable in emitter.listeners(False)

    emitter.off(False, callable)
    assert callable not in emitter.listeners(False)
示例#9
0
def test_once__2():
    """
    Listener should be removed after call.
    """
    emitter = Emitter()
    emitter.once("event", callable)
    emitter.on("event", bool)
    emitter.emit("event")

    assert callable not in emitter.listeners("event")
    assert bool in emitter.listeners("event")
示例#10
0
def test_once__2():
    """
    Listener should be removed after call.
    """
    emitter = Emitter()
    emitter.once("event", callable)
    emitter.on("event", bool)
    emitter.emit("event")

    assert callable not in emitter.listeners("event")
    assert bool in emitter.listeners("event")
示例#11
0
def test_on__7():
    """
    Multiple listeners can be registered for an event.
    """
    emitter = Emitter()

    emitter.on("event", callable)
    emitter.on("event", bool)

    assert callable in emitter.listeners("event")
    assert bool in emitter.listeners("event")
示例#12
0
def test_on__7():
    """
    Multiple listeners can be registered for an event.
    """
    emitter = Emitter()

    emitter.on("event", callable)
    emitter.on("event", bool)

    assert callable in emitter.listeners("event")
    assert bool in emitter.listeners("event")
示例#13
0
class TestEmitter(TestCase):
    def setUp(self):
        self.emitter = Emitter()

    def test_call_listeners(self):
        called = [False]

        def cb():
            called[0] = True

        self.emitter.on('hello.*', cb)
        self.emitter.emit('hello.foo')
        assert called[0]
        self.emitter.remove('hello.*', cb)
        assert self.emitter.listeners('hello') == []

    def test_pass_data_to_listeners(self):
        def cb(*args):
            assert args == ('a', 'b')

        self.emitter.on('data', cb)
        self.emitter.emit('data', 'a', 'b')

    def test_call_listeners_once(self):
        called = [False]

        def cb():
            called[0] = not called[0]

        self.emitter.on('once', cb, True)
        self.emitter.emit('*')
        self.emitter.emit('on*')
        assert called[0]

    def test_remove_listeners(self):
        self.emitter.on('foo', lambda x: x)
        self.emitter.on('bar', lambda x: x)

        self.emitter.remove('bar')
        self.emitter.remove('*')
        assert self.emitter.listeners('foo') == []
        assert self.emitter.listeners('bar') == []

    def test_emit_unknown_events(self):
        self.emitter.emit('quux')
        self.emitter.remove('wut')

    def test_provide_listeners(self):
        def cb(): pass

        self.emitter.on('quux', cb)
        assert self.emitter.listeners('*') == [cb]
示例#14
0
def test_error__4(spy):
    """
    One time listener is removed even if it raises exception.
    """
    emitter = Emitter()

    emitter.once("event", raise_error)

    assert len(emitter.listeners("event")) == 1

    emitter.emit("event")

    assert len(emitter.listeners("event")) == 0
示例#15
0
def test_on__8():
    """
    Listeners are not shared between events.
    """
    emitter = Emitter()

    emitter.on("event1", str)
    emitter.on("event2", callable)

    assert str in emitter.listeners("event1")
    assert str not in emitter.listeners("event2")

    assert callable in emitter.listeners("event2")
    assert callable not in emitter.listeners("event1")
示例#16
0
def test_on__8():
    """
    Listeners are not shared between events.
    """
    emitter = Emitter()

    emitter.on("event1", str)
    emitter.on("event2", callable)

    assert str in emitter.listeners("event1")
    assert str not in emitter.listeners("event2")

    assert callable in emitter.listeners("event2")
    assert callable not in emitter.listeners("event1")
示例#17
0
def test_off__2():
    """
    When called with 1 argument, it removes only the listeners of the
    specified event.
    """
    emitter = Emitter()
    emitter.on("event", callable)
    emitter.on("event", str)
    emitter.on("raccoon", callable)
    emitter.on("raccoon", str)
    emitter.off("event")

    assert emitter.listeners("event") == []
    assert callable in emitter.listeners("raccoon")
    assert str in emitter.listeners("raccoon")
示例#18
0
def test_error__5(spy):
    """
    One time ERROR listener is removed even if it raises exception.
    """
    emitter = Emitter()

    emitter.once(Emitter.ERROR, spy.throw)
    emitter.on("event", raise_error)

    assert len(emitter.listeners(Emitter.ERROR)) == 1

    with pytest.raises(Exception):
        emitter.emit("event")

    assert len(emitter.listeners(Emitter.ERROR)) == 0
示例#19
0
def test_off__2():
    """
    When called with 1 argument, it removes only the listeners of the
    specified event.
    """
    emitter = Emitter()
    emitter.on("event", callable)
    emitter.on("event", str)
    emitter.on("raccoon", callable)
    emitter.on("raccoon", str)
    emitter.off("event")

    assert emitter.listeners("event") == []
    assert callable in emitter.listeners("raccoon")
    assert str in emitter.listeners("raccoon")
示例#20
0
def test_listeners__4():
    """
    Get the listeners for the False event.
    """
    emitter = Emitter()
    emitter.on(False, callable)
    assert callable in emitter.listeners(False)
示例#21
0
def test_on__9():
    """
    Returns True when event has been successfully registered.
    """
    emitter = Emitter()
    assert emitter.on("event", callable) is True
    assert callable in emitter.listeners("event")
示例#22
0
def test_listeners__5():
    """
    Get the listeners for the True event.
    """
    emitter = Emitter()
    emitter.on(True, callable)
    assert callable in emitter.listeners(True)
示例#23
0
def test_on__9():
    """
    Returns True when event has been successfully registered.
    """
    emitter = Emitter()
    assert emitter.on("event", callable) is True
    assert callable in emitter.listeners("event")
示例#24
0
def test_listeners__5():
    """
    Get the listeners for the True event.
    """
    emitter = Emitter()
    emitter.on(True, callable)
    assert callable in emitter.listeners(True)
示例#25
0
def test_listeners__4():
    """
    Get the listeners for the False event.
    """
    emitter = Emitter()
    emitter.on(False, callable)
    assert callable in emitter.listeners(False)
示例#26
0
def test_once__4():
    """
    Allow updating an event from once() to on().
    """
    emitter = Emitter()
    emitter.on("event", callable)
    emitter.once("event", callable)

    emitter.emit("event")

    assert callable not in emitter.listeners("event")
示例#27
0
def test_once__4():
    """
    Allow updating an event from once() to on().
    """
    emitter = Emitter()
    emitter.on("event", callable)
    emitter.once("event", callable)

    emitter.emit("event")

    assert callable not in emitter.listeners("event")
示例#28
0
def test_off__3():
    """
    Called with 2 arguments, it removes the specified listener of the specified
    event.
    """
    emitter = Emitter()
    emitter.on("event", callable)
    emitter.on("event", str)
    emitter.off("event", callable)
    listeners = emitter.listeners("event")
    assert callable not in listeners
    assert str in listeners
示例#29
0
def test_listeners__2():
    """
    Returns a list containing all the listeners of the given event.
    """
    emitter = Emitter()
    emitter.on("event", callable)
    emitter.on("event", list)

    listeners = emitter.listeners("event")

    assert isinstance(listeners, list)
    assert listeners == [callable, list]
示例#30
0
def test_listeners__3():
    """
    The insertion order of the listeners should be conserved.
    """
    emitter = Emitter()
    emitter.on("raccoon", bool)
    emitter.on("raccoon", callable)
    emitter.on("raccoon", dict)

    listeners = emitter.listeners("raccoon")

    assert listeners == [bool, callable, dict]
示例#31
0
def test_listeners__3():
    """
    The insertion order of the listeners should be conserved.
    """
    emitter = Emitter()
    emitter.on("raccoon", bool)
    emitter.on("raccoon", callable)
    emitter.on("raccoon", dict)

    listeners = emitter.listeners("raccoon")

    assert listeners == [bool, callable, dict]
示例#32
0
def test_listeners__2():
    """
    Returns a list containing all the listeners of the given event.
    """
    emitter = Emitter()
    emitter.on("event", callable)
    emitter.on("event", list)

    listeners = emitter.listeners("event")

    assert isinstance(listeners, list)
    assert listeners == [callable, list]
示例#33
0
def test_off__3():
    """
    Called with 2 arguments, it removes the specified listener of the specified
    event.
    """
    emitter = Emitter()
    emitter.on("event", callable)
    emitter.on("event", str)
    emitter.off("event", callable)
    listeners = emitter.listeners("event")
    assert callable not in listeners
    assert str in listeners
示例#34
0
def test_once__5():
    """
    One time listeners should be removed even if an error happens.
    """
    emitter = Emitter()

    def listener(*args, **kwargs):
        raise Exception()

    emitter.once("event", listener)

    emitter.emit("event")

    assert listener not in emitter.listeners("event")
示例#35
0
def test_once__5():
    """
    One time listeners should be removed even if an error happens.
    """
    emitter = Emitter()

    def listener(*args, **kwargs):
        raise Exception()

    emitter.once("event", listener)

    emitter.emit("event")

    assert listener not in emitter.listeners("event")