def test_nested(): """ #328: first member in a class can't be used in operators""" from pybind11_tests.issues import NestA, NestB, NestC, get_NestA, get_NestB, get_NestC a = NestA() b = NestB() c = NestC() a += 10 if get_NestA(a) != 13: raise AssertionError b.a += 100 if get_NestA(b.a) != 103: raise AssertionError c.b.a += 1000 if get_NestA(c.b.a) != 1003: raise AssertionError b -= 1 if get_NestB(b) != 3: raise AssertionError c.b -= 3 if get_NestB(c.b) != 1: raise AssertionError c *= 7 if get_NestC(c) != 35: raise AssertionError abase = a.as_base() if abase.value != -2: raise AssertionError a.as_base().value += 44 if abase.value != 42: raise AssertionError if c.b.a.as_base().value != -2: raise AssertionError c.b.a.as_base().value += 44 if c.b.a.as_base().value != 42: raise AssertionError del c pytest.gc_collect() del a # Should't delete while abase is still alive pytest.gc_collect() if abase.value != 42: raise AssertionError del abase, b pytest.gc_collect()
def test_nested(): """ #328: first member in a class can't be used in operators""" from pybind11_tests.issues import NestA, NestB, NestC, get_NestA, get_NestB, get_NestC a = NestA() b = NestB() c = NestC() a += 10 assert get_NestA(a) == 13 b.a += 100 assert get_NestA(b.a) == 103 c.b.a += 1000 assert get_NestA(c.b.a) == 1003 b -= 1 assert get_NestB(b) == 3 c.b -= 3 assert get_NestB(c.b) == 1 c *= 7 assert get_NestC(c) == 35 abase = a.as_base() assert abase.value == -2 a.as_base().value += 44 assert abase.value == 42 assert c.b.a.as_base().value == -2 c.b.a.as_base().value += 44 assert c.b.a.as_base().value == 42 del c pytest.gc_collect() del a # Should't delete while abase is still alive pytest.gc_collect() assert abase.value == 42 del abase, b pytest.gc_collect()
def test_nested(): """ #328: first member in a class can't be used in operators""" from pybind11_tests.issues import NestA, NestB, NestC, get_NestA, get_NestB, get_NestC a = NestA() b = NestB() c = NestC() a += 10 assert get_NestA(a) == 13 b.a += 100 assert get_NestA(b.a) == 103 c.b.a += 1000 assert get_NestA(c.b.a) == 1003 b -= 1 assert get_NestB(b) == 3 c.b -= 3 assert get_NestB(c.b) == 1 c *= 7 assert get_NestC(c) == 35 abase = a.as_base() assert abase.value == -2 a.as_base().value += 44 assert abase.value == 42 assert c.b.a.as_base().value == -2 c.b.a.as_base().value += 44 assert c.b.a.as_base().value == 42 del c gc.collect() del a # Should't delete while abase is still alive gc.collect() assert abase.value == 42 del abase, b gc.collect()