def test_register_attribute(self):
     """
     Registering an interface
     
     Verifies:
         * registering an attribute
         * deregistering interface
     """
     module = Bar()
     api = TestAPI()
     
     api.register_interface(module, 'xoo')
     self.assert_('xoo' in api._registered_interfaces)
     api.deregister_interface(module, 'xoo')
     self.assertFalse('xoo' in api._registered_interfaces)
 def test_register_function(self):
     """
     Registering an interface
     
     Verifies:
         * registering a function
         * deregistering interface
     """
     module = Bar()
     api = TestAPI()
     
     api.register_interface(module, module.foo)
     self.assert_('foo' in api._registered_interfaces)
     api.deregister_interface(module, module.foo)
     self.assertFalse('foo' in api._registered_interfaces)
 def test_register_attribute_alternate_name(self):
     """
     Registering an interface
     
     Verifies:
         * registering an attribute with an alternate name
         * deregistering interface
     """
     module = Bar()
     api = TestAPI()
     
     api.register_interface(module, module.foo, name='TEST_NAME')
     self.assert_('TEST_NAME' in api._registered_interfaces)
     api.deregister_interface(module, module.foo, name='TEST_NAME')
     self.assertFalse('TEST_NAME' in api._registered_interfaces)
 def test_replace_interface(self):
     """
     Registering interface with existing name
     
     Verifies:
         * existing interface is replaced
     """
     module = Bar()
     api = TestAPI()
     api.register_interface(module, module.foo)
     
     # replace with named function
     api.register_interface(module, module.bar, name='foo')
     self.assert_('foo' in api._registered_interfaces)
     self.assertEqual(module.bar, api._registered_interfaces['foo'])
     
     # replace with function
     api.register_interface(module, module.foo)
     self.assert_('foo' in api._registered_interfaces)
     self.assertEqual(module.foo, api._registered_interfaces['foo'])