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")
def test_listeners__1(): """ Returns an empty list when asking for an unknown event. """ emitter = Emitter() assert isinstance(emitter.listeners(""), list) assert emitter.listeners("") == []
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)
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)
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")
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")
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]
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
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")
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")
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
def test_listeners__4(): """ Get the listeners for the False event. """ emitter = Emitter() emitter.on(False, callable) assert callable in emitter.listeners(False)
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")
def test_listeners__5(): """ Get the listeners for the True event. """ emitter = Emitter() emitter.on(True, callable) assert callable in emitter.listeners(True)
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")
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
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]
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]
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")