def test_20_load_implementation(self):
        """Test if the register contains the correct classes:
        """
        name = IMPLEMENTATION1
        implementation = BaseClass.load_implementation(name)
        self.assertTrue(issubclass(implementation, BaseClass))
        self.assertIsNot(implementation, BaseClass)

        implementations = BaseClass.implementations(loaded=True, as_str=True)
        self.assertIn(name, implementations)
 def test_10_register(self):
     """Test if the register contains the correct classes:
     """
     implementations = list(BaseClass.implementations(as_str=True))
     self.assertEqual(len(implementations), 2)
     self.assertIn(IMPLEMENTATION1, implementations)
     self.assertIn(IMPLEMENTATION2, implementations)
 def test_02_canonical_module_name1(self):
     """Passing a module name to
     :py:meth:`Implementable._canonical_module_name`
     should return that name.
     """
     # pylint: disable=protected-access
     self.assertEqual(BaseClass._canonical_module_name(MODULE1), MODULE1)
 def test_02_canonical_module_name3(self):
     """Passing a module to :py:meth:`Implementable._canonical_module_name`
     should return the module name.
     """
     # pylint: disable=protected-access
     module0 = sys.modules[MODULE0]
     self.assertEqual(BaseClass._canonical_module_name(module0), MODULE0)
 def test_30_initialization(self):
     """Instantiating the (abstract) BaseClass class should yield an
     instance of a subclass.
     """
     obj = BaseClass()
     self.assertTrue(isinstance(obj, BaseClass))
     self.assertIsNot(type(obj), BaseClass)
 def test_01_fully_qualified_name(self):
     """Test the static method
     :py:meth:`Implementable._fully_qualified_name`.
     """
     # pylint: disable=protected-access
     self.assertEqual(Implementable._fully_qualified_name(BaseClass),
                      BaseClass.__module__ + '.BaseClass')
     self.assertEqual(BaseClass._fully_qualified_name(BaseClass),
                      BaseClass.__module__ + '.BaseClass')
    def test_30_initialization2(self):
        """Instantiating the (abstract) BaseClass class with
        `module='extras2'` should yield an instance of a
        `extras2.Myclass2`.

        """
        obj2 = BaseClass(module='extras2')
        self.assertTrue(isinstance(obj2, BaseClass))
        self.assertEqual(type(obj2).__name__, 'MyClass2')
        self.assertEqual(type(obj2).__module__, MODULE2)
 def test_02_canonical_module_name2(self):
     """Passing a registered module alias to
     :py:meth:`Implementable._canonical_module_name` should expand it.
     """
     # pylint: disable=protected-access
     self.assertEqual(BaseClass._canonical_module_name('extras2'), MODULE2)
import sys

# toolbox imports
from dltb.base.implementation import Implementable
from dltb.base.tests.extras0 import BaseClass

PARENT = Implementable.__module__.rsplit('.', maxsplit=1)[0] + '.tests'

MODULE0 = PARENT + '.extras0'
MODULE1 = PARENT + '.extras1'
MODULE2 = PARENT + '.extras2'

IMPLEMENTATION1 = MODULE1 + '.MyClass1'
IMPLEMENTATION2 = MODULE2 + '.MyClass2'

BaseClass.add_implementation(IMPLEMENTATION1)
BaseClass.add_implementation(IMPLEMENTATION2)

BaseClass.register_module_alias(MODULE1, 'extras1')
BaseClass.register_module_alias(MODULE2, 'extras2')


class TestImplementatble(unittest.TestCase):
    """Tests for the :py:class:`Data` class.
    """
    def test_01_fully_qualified_name(self):
        """Test the static method
        :py:meth:`Implementable._fully_qualified_name`.
        """
        # pylint: disable=protected-access
        self.assertEqual(Implementable._fully_qualified_name(BaseClass),