""" Part of the bsie test suite. A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ # standard imports import unittest # bsie imports from bsie.utils import errors # objects to test from bsie.utils.loading import safe_load, unpack_qualified_name ## code ## class TestUtils(unittest.TestCase): def test_safe_load(self): # invalid module self.assertRaises(errors.LoaderError, safe_load, 'dBGHMSAYOoKeKMpywDoKZQycENFPvN', 'foobar') self.assertRaises(errors.LoaderError, safe_load, 'dBGHMSAYOoKeKMpywDoKZQycENFPvN.bar', 'foobar') # partially valid module self.assertRaises(errors.LoaderError, safe_load, 'os.foo', 'foobar') # invalid class self.assertRaises(errors.LoaderError, safe_load, 'os.path', 'foo') # valid module and class cls = safe_load('collections.abc', 'Container') import collections.abc self.assertEqual(cls, collections.abc.Container) def test_unpack_qualified_name(self): self.assertRaises(TypeError, unpack_qualified_name, 123) self.assertRaises(TypeError, unpack_qualified_name, None) self.assertRaises(ValueError, unpack_qualified_name, '') self.assertRaises(ValueError, unpack_qualified_name, 'path') self.assertRaises(ValueError, unpack_qualified_name, '.Path') self.assertEqual(unpack_qualified_name('path.Path'), ('path', 'Path')) self.assertEqual(unpack_qualified_name('path.foo.bar.Path'), ('path.foo.bar', 'Path')) ## main ## if __name__ == '__main__': unittest.main() ## EOF ##