~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_registry.py

  • Committer: Adeodato Simó
  • Date: 2006-08-10 21:47:27 UTC
  • mto: (1911.4.3 registry)
  • mto: This revision was merged to the branch mainline in revision 2074.
  • Revision ID: dato@net.com.org.es-20060810214727-155eb44860689725
Morph John's LazyFactory into a generalized Registry class, and
implement LazyImportRegistry as a subclass.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
16
16
 
17
 
"""Tests for the LazyFactory class"""
 
17
"""Tests for the Registry classes"""
18
18
 
19
19
import os
20
20
import sys
21
21
 
22
22
from bzrlib import (
23
23
    errors,
24
 
    lazy_factory,
 
24
    registry,
25
25
    osutils,
26
26
    )
27
 
from bzrlib.tests import TestCaseInTempDir
28
 
 
29
 
 
30
 
class TestLazyFactory(TestCaseInTempDir):
 
27
from bzrlib.tests import TestCase, TestCaseInTempDir
 
28
 
 
29
 
 
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)
 
36
 
 
37
    def test_registry(self):
 
38
        registry_ = registry.Registry()
 
39
        self.register_stuff(registry_)
 
40
 
 
41
        self.failUnless(registry_.default_key is None)
 
42
 
 
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')
 
49
 
 
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')
 
55
 
 
56
        # test keys()
 
57
        self.assertEqual(['five', 'four', 'one', 'two'], registry_.keys())
 
58
 
 
59
    def test_registry_with_first_is_default(self):
 
60
        registry_ = registry.Registry(True)
 
61
        self.register_stuff(registry_)
 
62
 
 
63
        self.failUnless(registry_.default_key == 'one')
 
64
 
 
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')
 
71
 
 
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')
 
77
 
 
78
class TestLazyImportRegistry(TestCaseInTempDir):
31
79
 
32
80
    def create_plugin_file(self, contents):
33
81
        plugin_name = 'bzr_plugin_a_%s' % (osutils.rand_chars(4),)
47
95
            '\n\n'
48
96
        )
49
97
 
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')