Example #1
0
def test_registry_class_lookup():
    reg = Registry()

    class Document(object):
        pass

    class SpecialDocument(Document):
        pass

    linecount = 'linecount'

    reg.register_predicates(linecount, [class_predicate('obj')])
    reg.register_value(linecount, [Document], 'document line count')
    reg.register_value(linecount, [SpecialDocument],
                       'special document line count')

    assert (reg.component(linecount, Document) ==
            'document line count')

    assert (reg.component(linecount, SpecialDocument) ==
            'special document line count')

    class AnotherDocument(Document):
        pass

    assert (reg.component(linecount, AnotherDocument) ==
            'document line count')

    class Other(object):
        pass

    assert reg.component(linecount, Other) is None
Example #2
0
def test_registry_target_find_specific():
    reg = Registry()

    class Document(object):
        pass

    class SpecialDocument(Document):
        pass

    def linecount(obj):
        pass

    def special_linecount(obj):
        pass

    reg.register_predicates(linecount, [class_predicate('obj')])
    reg.register_value(linecount, [Document], 'line count')
    reg.register_predicates(special_linecount, [class_predicate('obj')])
    reg.register_value(special_linecount, [Document], 'special line count')

    assert reg.component(linecount, Document) == 'line count'
    assert (reg.component(special_linecount, Document) ==
            'special line count')

    assert reg.component(linecount, SpecialDocument) == 'line count'
    assert (reg.component(special_linecount, SpecialDocument) ==
            'special line count')
Example #3
0
def test_register_twice_without_predicates():
    reg = Registry()

    def linecount(obj):
        pass

    reg.register_predicates(linecount, [])
    reg.register_value(linecount, (), 'once')
    with pytest.raises(RegistrationError):
        reg.register_value(linecount, (), 'twice')
Example #4
0
def test_clear():
    reg = Registry()

    def linecount():
        pass

    reg.register_predicates(linecount, [])
    reg.register_value(linecount, (), 'once')
    assert reg.component(linecount, ()) == 'once'
    reg.clear()
    reg.register_predicates(linecount, [])
    assert reg.component(linecount, ()) is None
Example #5
0
def test_registry_no_sources():
    reg = Registry()

    class Animal(object):
        pass

    def something():
        pass

    reg.register_predicates(something, [])
    reg.register_value(something, (), 'elephant')
    assert reg.component(something, ()) == 'elephant'
Example #6
0
def test_register_twice_with_predicate():
    reg = Registry()

    class Document(object):
        pass

    def linecount(obj):
        pass

    reg.register_predicates(linecount, [class_predicate('obj')])
    reg.register_value(linecount, [Document], 'document line count')
    with pytest.raises(RegistrationError):
        reg.register_value(linecount, [Document], 'another line count')