예제 #1
0
 def test_skip_nodes(self):
     from happy.registry import Registry
     from happy.registry import SimpleAxis
     registry = Registry(
         ('one', SimpleAxis()),
         ('two', SimpleAxis()),
         ('three', SimpleAxis())
         )
     registry.register('foo', one=1, three=3)
     self.assertEqual(registry.lookup(1, three=3), 'foo')
예제 #2
0
 def test_miss(self):
     from happy.registry import Registry
     from happy.registry import SimpleAxis
     registry = Registry(
         ('one', SimpleAxis()),
         ('two', SimpleAxis()),
         ('three', SimpleAxis())
         )
     registry.register('foo', 1, 2)
     self.assertEqual(registry.lookup(one=1, three=3), None)
예제 #3
0
 def test_get_registration(self):
     from happy.registry import Registry
     from happy.registry import SimpleAxis
     from happy.registry import TypeAxis
     registry = Registry(('type', TypeAxis()),
                         ('name', SimpleAxis()))
     registry.register('one', object)
     registry.register('two', DummyA, 'foo')
     self.assertEqual(registry.get_registration(object), 'one')
     self.assertEqual(registry.get_registration(DummyA, 'foo'), 'two')
     self.assertEqual(registry.get_registration(object, 'foo'), None)
     self.assertEqual(registry.get_registration(DummyA), None)
예제 #4
0
 def test_override(self):
     from happy.registry import Registry
     from happy.registry import SimpleAxis
     registry = Registry(('name', SimpleAxis()))
     registry.register(1, name='foo')
     registry.override(2, name='foo')
     self.assertEqual(registry.lookup('foo'), 2)
예제 #5
0
    def test_one_axis_no_specificity(self):
        from happy.registry import Registry
        from happy.registry import SimpleAxis
        registry = Registry(('foo', SimpleAxis()))
        a = object()
        b = object()
        registry.register(a)
        registry.register(b, 'foo')

        self.assertEqual(registry.lookup(), a)
        self.assertEqual(registry.lookup('foo'), b)
        self.assertEqual(registry.lookup('bar'), None)
예제 #6
0
 def test_conflict_error(self):
     from happy.registry import Registry
     from happy.registry import SimpleAxis
     registry = Registry(('name', SimpleAxis()))
     registry.register(object(), name='foo')
     self.assertRaises(ValueError, registry.register, object(), 'foo')
예제 #7
0
    def test_two_axes(self):
        from happy.registry import Registry
        from happy.registry import SimpleAxis
        from happy.registry import TypeAxis
        registry = Registry(('type', TypeAxis()),
                            ('name', SimpleAxis()))

        target1 = Target('one')
        registry.register(target1, object)

        target2 = Target('two')
        registry.register(target2, DummyA)

        target3 = Target('three')
        registry.register(target3, DummyA, 'foo')

        context1 = object()
        self.assertEqual(registry.lookup(context1), target1)

        context2 = DummyB()
        self.assertEqual(registry.lookup(context2), target2)
        self.assertEqual(registry.lookup(context2, 'foo'), target3)

        target4 = object()
        registry.register(target4, DummyB)

        self.assertEqual(registry.lookup(context2), target4)
        self.assertEqual(registry.lookup(context2, 'foo'), target3)