示例#1
0
 def test_skip_nodes(self):
     from generic.registry import Registry
     from generic.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 generic.registry import Registry
     from generic.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_two_axes(self):
        from generic.registry import Registry
        from generic.registry import SimpleAxis
        from generic.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)
示例#4
0
 def test_override(self):
     from generic.registry import Registry
     from generic.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_bad_lookup(self):
     from generic.registry import Registry
     from generic.registry import SimpleAxis
     registry = Registry(('name', SimpleAxis()), ('grade', SimpleAxis()))
     self.assertRaises(ValueError, registry.register, 1, foo=1)
     self.assertRaises(ValueError, registry.lookup, foo=1)
     self.assertRaises(ValueError, registry.register, 1, 'foo', name='foo')
示例#6
0
 def test_get_registration(self):
     from generic.registry import Registry
     from generic.registry import SimpleAxis
     from generic.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)
示例#7
0
    def test_one_axis_no_specificity(self):
        from generic.registry import Registry
        from generic.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)
示例#8
0
    def __init__(self, argspec, params_arity):
        """ Initialize dispatcher with ``argspec`` of type
        :class:`inspect.ArgSpec` and ``params_arity`` that represent number
        params."""
        # Check if we have enough positional arguments for number of type params
        if arity(argspec) < params_arity:
            raise TypeError("Not enough positional arguments "
                            "for number of type parameters provided.")

        self.argspec = argspec
        self.params_arity = params_arity

        axis = [("arg_%d" % n, TypeAxis()) for n in range(params_arity)]
        self.registry = Registry(*axis)
示例#9
0
 def test_conflict_error(self):
     from generic.registry import Registry
     from generic.registry import SimpleAxis
     registry = Registry(('name', SimpleAxis()))
     registry.register(object(), name='foo')
     self.assertRaises(ValueError, registry.register, object(), 'foo')
示例#10
0
 def test_lookup_too_many_keys(self):
     from generic.registry import Registry
     from generic.registry import SimpleAxis
     registry = Registry(('name', SimpleAxis()))
     self.assertRaises(ValueError, registry.lookup, 'one', 'two')
示例#11
0
 def __init__(self):
     axes = (("event_type", TypeAxis()), )
     self.registry = Registry(*axes)