Ejemplo n.º 1
0
    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")
Ejemplo n.º 2
0
    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)