14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
"""Tests for the LazyFactory class"""
17
"""Tests for the Registry classes"""
22
22
from bzrlib import (
27
from bzrlib.tests import TestCaseInTempDir
30
class TestLazyFactory(TestCaseInTempDir):
27
from bzrlib.tests import TestCase, TestCaseInTempDir
30
class TestRegistry(TestCase):
31
def register_stuff(self, registry):
32
registry.register('one', 1)
33
registry.register('two', 2)
34
registry.register('four', 4)
35
registry.register('five', 5)
37
def test_registry(self):
38
registry_ = registry.Registry()
39
self.register_stuff(registry_)
41
self.failUnless(registry_.default_key is None)
43
# test get() (self.default_key == None)
44
self.assertRaises(KeyError, registry_.get)
45
self.assertEqual(2, registry_.get('two'))
46
self.assertRaises(KeyError, registry_.get, 'three')
47
self.assertEqual(4, registry_.get('three', 'four'))
48
self.assertRaises(KeyError, registry_.get, 'three', 'no-such-key')
50
# test _set_default_key
51
registry_.default_key = 'five'
52
self.failUnless(registry_.default_key == 'five')
53
self.assertEqual(5, registry_.get('six'))
54
self.assertRaises(KeyError, registry_._set_default_key, 'six')
57
self.assertEqual(['five', 'four', 'one', 'two'], registry_.keys())
59
def test_registry_with_first_is_default(self):
60
registry_ = registry.Registry(True)
61
self.register_stuff(registry_)
63
self.failUnless(registry_.default_key == 'one')
65
# test get() (self.default_key == 'one')
66
self.assertEqual(1, registry_.get())
67
self.assertEqual(2, registry_.get('two'))
68
self.assertEqual(1, registry_.get('three'))
69
self.assertEqual(4, registry_.get('three', 'four'))
70
self.assertRaises(KeyError, registry_.get, 'three', 'no-such-key')
72
# test _set_default_key
73
registry_.default_key = 'five'
74
self.failUnless(registry_.default_key == 'five')
75
self.assertEqual(5, registry_.get('six'))
76
self.assertRaises(KeyError, registry_._set_default_key, 'six')
78
class TestLazyImportRegistry(TestCaseInTempDir):
32
80
def create_plugin_file(self, contents):
33
81
plugin_name = 'bzr_plugin_a_%s' % (osutils.rand_chars(4),)
50
def test_lazy_factory(self):
98
def test_lazy_import_registry(self):
51
99
plugin_name = self.create_simple_plugin()
52
factory = lazy_factory.LazyFactory()
100
factory = registry.LazyImportRegistry()
53
101
factory.register('obj', plugin_name, 'object1')
54
102
factory.register('function', plugin_name, 'function')
55
103
factory.register('klass', plugin_name, 'MyClass')