Ejemplo n.º 1
0
    def test_register_interface_module(self):
        """
        Registering and deregistering API interfaces
        
        Verifies:
            * only specified API interfaces are added and removed
            * existing attributes and functions are added to the new API
        """
        manager = ModuleManager()
        api0 = TestAPI()
        api1 = TestAPI()
        module = Bar()

        interfaces = ((module, module.foo), (module, module.bar), (module, "xoo"), (module, "zoo"))
        interface_names = ("foo", "bar", "xoo", "zoo")

        for interface in interfaces:
            manager.register_interface(*interface)

        manager.register_interface_module(api0)
        manager.register_interface_module(api1)

        self.assert_(api0 in manager._interface_modules)
        for name in interface_names:
            self.assert_(name in api0._registered_interfaces)
            self.assert_(name in api1._registered_interfaces)
Ejemplo n.º 2
0
    def test_register_interface(self):
        """
        Registering and deregistering attributes and functions exposed to the
        API
        
        Verifies:
            * only specified functions and attributes are added and removed
            * functions are added to all registered interfaces
            * name can be given as a param
            * functions can be replaced
        """
        manager = ModuleManager()
        api0 = TestAPI()
        api1 = TestAPI()
        module = Bar()

        manager.register_interface_module(api0)
        manager.register_interface_module(api1)

        interfaces = (
            (module, module.foo),
            (module, module.bar),
            (module, "xoo"),
            (module, "zoo"),
            (module, (module.foo, {"name": "foo2"})),
        )

        interface_names = ("foo", "bar", "xoo", "zoo")

        for interface in interfaces:
            manager.register_interface(*interface)

        for interface in interfaces:
            self.assert_(interface in manager._interfaces)

        for name in interface_names:
            self.assert_(name in api0._registered_interfaces)
            self.assert_(name in api1._registered_interfaces)

        for interface in interfaces:
            manager.deregister_interface(*interface)

        for interface in interfaces:
            self.assertFalse(interface in manager._interfaces)

        self.assertFalse(api0._interfaces)
        self.assertFalse(api1._interfaces)