def test_register_listener(self): """ Registering and deregistering signal listeners Verifies: * only specified functions are added * removing the last function for a signal removes the signal """ manager = ModuleManager() module = Foo() manager.register_listener("SIGNAL", module.foo) manager.register_listener("SIGNAL", module.bar) manager.register_listener("SIGNAL2", module.xoo) self.assert_("SIGNAL" in manager._listeners) self.assert_(module.foo in manager._listeners["SIGNAL"]) self.assert_(module.bar in manager._listeners["SIGNAL"]) self.assert_("SIGNAL2" in manager._listeners) self.assert_(module.xoo in manager._listeners["SIGNAL2"]) manager.deregister_listener("SIGNAL", module.foo) self.assert_("SIGNAL" in manager._listeners) self.assert_(module.bar in manager._listeners["SIGNAL"]) self.assert_("SIGNAL2" in manager._listeners) self.assert_(module.xoo in manager._listeners["SIGNAL2"]) manager.deregister_listener("SIGNAL", module.bar) manager.deregister_listener("SIGNAL2", module.xoo) self.assertFalse("SIGNAL" in manager._listeners, "signal should be removed when no listeners") self.assertFalse("SIGNAL2" in manager._listeners, "signal should be removed when no listeners")
def test_emit(self): """ Tests signals Verifies: * emitting registered signal calls mapped functions * emitting unregistered signal doesn't raise an exception """ manager = ModuleManager() module0 = Foo() module1 = Xoo() manager.register_listener("FOO", module0.foo) manager.register_listener("FOO", module1.foo) manager.register_listener("BAR", module0.bar) args = (1, 2, 3) kwargs = {"a": 1, "b": 2} manager.emit_signal("FOO") manager.emit_signal("BAR", *args, **kwargs) module0.foo.assertCalled(self) module1.foo.assertCalled(self) module0.bar.assertCalled(self, *args, **kwargs)