test_multiple_inheritance.py revision 11986
111986Sandreas.sandberg@arm.com
211986Sandreas.sandberg@arm.com
311986Sandreas.sandberg@arm.comdef test_multiple_inheritance_cpp():
411986Sandreas.sandberg@arm.com    from pybind11_tests import MIType
511986Sandreas.sandberg@arm.com
611986Sandreas.sandberg@arm.com    mt = MIType(3, 4)
711986Sandreas.sandberg@arm.com
811986Sandreas.sandberg@arm.com    assert mt.foo() == 3
911986Sandreas.sandberg@arm.com    assert mt.bar() == 4
1011986Sandreas.sandberg@arm.com
1111986Sandreas.sandberg@arm.com
1211986Sandreas.sandberg@arm.comdef test_multiple_inheritance_mix1():
1311986Sandreas.sandberg@arm.com    from pybind11_tests import Base2
1411986Sandreas.sandberg@arm.com
1511986Sandreas.sandberg@arm.com    class Base1:
1611986Sandreas.sandberg@arm.com        def __init__(self, i):
1711986Sandreas.sandberg@arm.com            self.i = i
1811986Sandreas.sandberg@arm.com
1911986Sandreas.sandberg@arm.com        def foo(self):
2011986Sandreas.sandberg@arm.com            return self.i
2111986Sandreas.sandberg@arm.com
2211986Sandreas.sandberg@arm.com    class MITypePy(Base1, Base2):
2311986Sandreas.sandberg@arm.com        def __init__(self, i, j):
2411986Sandreas.sandberg@arm.com            Base1.__init__(self, i)
2511986Sandreas.sandberg@arm.com            Base2.__init__(self, j)
2611986Sandreas.sandberg@arm.com
2711986Sandreas.sandberg@arm.com    mt = MITypePy(3, 4)
2811986Sandreas.sandberg@arm.com
2911986Sandreas.sandberg@arm.com    assert mt.foo() == 3
3011986Sandreas.sandberg@arm.com    assert mt.bar() == 4
3111986Sandreas.sandberg@arm.com
3211986Sandreas.sandberg@arm.com
3311986Sandreas.sandberg@arm.comdef test_multiple_inheritance_mix2():
3411986Sandreas.sandberg@arm.com    from pybind11_tests import Base1
3511986Sandreas.sandberg@arm.com
3611986Sandreas.sandberg@arm.com    class Base2:
3711986Sandreas.sandberg@arm.com        def __init__(self, i):
3811986Sandreas.sandberg@arm.com            self.i = i
3911986Sandreas.sandberg@arm.com
4011986Sandreas.sandberg@arm.com        def bar(self):
4111986Sandreas.sandberg@arm.com            return self.i
4211986Sandreas.sandberg@arm.com
4311986Sandreas.sandberg@arm.com    class MITypePy(Base1, Base2):
4411986Sandreas.sandberg@arm.com        def __init__(self, i, j):
4511986Sandreas.sandberg@arm.com            Base1.__init__(self, i)
4611986Sandreas.sandberg@arm.com            Base2.__init__(self, j)
4711986Sandreas.sandberg@arm.com
4811986Sandreas.sandberg@arm.com    mt = MITypePy(3, 4)
4911986Sandreas.sandberg@arm.com
5011986Sandreas.sandberg@arm.com    assert mt.foo() == 3
5111986Sandreas.sandberg@arm.com    assert mt.bar() == 4
5211986Sandreas.sandberg@arm.com
5311986Sandreas.sandberg@arm.com
5411986Sandreas.sandberg@arm.comdef test_multiple_inheritance_virtbase():
5511986Sandreas.sandberg@arm.com    from pybind11_tests import Base12a, bar_base2a, bar_base2a_sharedptr
5611986Sandreas.sandberg@arm.com
5711986Sandreas.sandberg@arm.com    class MITypePy(Base12a):
5811986Sandreas.sandberg@arm.com        def __init__(self, i, j):
5911986Sandreas.sandberg@arm.com            Base12a.__init__(self, i, j)
6011986Sandreas.sandberg@arm.com
6111986Sandreas.sandberg@arm.com    mt = MITypePy(3, 4)
6211986Sandreas.sandberg@arm.com    assert mt.bar() == 4
6311986Sandreas.sandberg@arm.com    assert bar_base2a(mt) == 4
6411986Sandreas.sandberg@arm.com    assert bar_base2a_sharedptr(mt) == 4
65