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")