Example #1
0
    def type_checks_work(self):
        class Foo(object):
            __metaclass__ = ABCMeta

        class Bar(object):
            pass

        Foo.register(Bar)

        Assert.issubclass(Bar, Foo)
        Assert.isinstance(Bar(), Foo)
Example #2
0
    def type_checks_work(self):
        class Foo(object):
            __metaclass__ = ABCMeta

        class Bar(object):
            pass

        Foo.register(Bar)

        Assert.issubclass(Bar, Foo)
        Assert.isinstance(Bar(), Foo)
Example #3
0
def test_abstract_class_meta():
    class Foo(object):
        __metaclass__ = ABCMeta

    class Bar(object):
        __metaclass__ = AbstractClassMeta

        virtual_superclasses = [Foo]

    class Baz(object):
        __metaclass__ = VirtualSubclassMeta

        virtual_superclasses = [Bar]

    Assert.issubclass(Baz, Foo)
    Assert.issubclass(Baz, Bar)
Example #4
0
def test_abstract_class_meta():
    class Foo(object):
        __metaclass__ = ABCMeta

    class Bar(object):
        __metaclass__ = AbstractClassMeta

        virtual_superclasses = [Foo]

    class Baz(object):
        __metaclass__ = VirtualSubclassMeta

        virtual_superclasses = [Bar]

    Assert.issubclass(Baz, Foo)
    Assert.issubclass(Baz, Bar)
Example #5
0
def issubclass():
    """Assert.issubclass"""

    with Assert.raises(AssertionError) as error:
        Assert.issubclass(str, (int, float))
    error.__str__() == "not issubclass(str, (int, float))"

    with Assert.raises(AssertionError) as error:
        Assert.issubclass(str, int)
    error.__str__() == "not issubclass(str, int)"

    Assert.issubclass(str, str)
Example #6
0
def test_virtual_subclass_meta():
    from abc import ABCMeta

    class Foo(object):
        __metaclass__ = ABCMeta

    class Bar(object):
        __metaclass__ = ABCMeta

    class Simple(object):
        __metaclass__ = VirtualSubclassMeta
        virtual_superclasses = [Foo, Bar]

    class InheritingSimple(Simple):
        pass

    for a, b in product([Simple, InheritingSimple], [Foo, Bar]):
        Assert.issubclass(a, b)
        Assert.isinstance(a(), b)

    Assert.issubclass(InheritingSimple, Simple)
    Assert.isinstance(InheritingSimple(), Simple)

    class Spam(object):
        __metaclass__ = ABCMeta

    class Eggs(object):
        __metaclass__ = ABCMeta

    class SimpleMonty(object):
        __metaclass__ = VirtualSubclassMeta
        virtual_superclasses = [Spam, Eggs]

    class MultiInheritance(Simple, SimpleMonty):
        pass

    class MultiVirtualInheritance(object):
        __metaclass__ = VirtualSubclassMeta
        virtual_superclasses = [Simple, SimpleMonty]

    for virtual_super_cls in [Foo, Bar, Simple, Spam, Eggs, SimpleMonty]:
        Assert.issubclass(MultiInheritance, virtual_super_cls)
        Assert.isinstance(MultiInheritance(), virtual_super_cls)
Example #7
0
def test_virtual_subclass_meta():
    from abc import ABCMeta

    class Foo(object):
        __metaclass__ = ABCMeta

    class Bar(object):
        __metaclass__ = ABCMeta

    class Simple(object):
        __metaclass__ = VirtualSubclassMeta
        virtual_superclasses = [Foo, Bar]

    class InheritingSimple(Simple):
        pass

    for a, b in product([Simple, InheritingSimple], [Foo, Bar]):
        Assert.issubclass(a, b)
        Assert.isinstance(a(), b)

    Assert.issubclass(InheritingSimple, Simple)
    Assert.isinstance(InheritingSimple(), Simple)

    class Spam(object):
        __metaclass__ = ABCMeta

    class Eggs(object):
        __metaclass__ = ABCMeta

    class SimpleMonty(object):
        __metaclass__ = VirtualSubclassMeta
        virtual_superclasses = [Spam, Eggs]

    class MultiInheritance(Simple, SimpleMonty):
        pass

    class MultiVirtualInheritance(object):
        __metaclass__ = VirtualSubclassMeta
        virtual_superclasses = [Simple, SimpleMonty]

    for virtual_super_cls in [Foo, Bar, Simple, Spam, Eggs, SimpleMonty]:
        Assert.issubclass(MultiInheritance, virtual_super_cls)
        Assert.isinstance(MultiInheritance(), virtual_super_cls)