112391Sjason@lowepower.comfrom pybind11_tests import modules as m 212391Sjason@lowepower.comfrom pybind11_tests.modules import subsubmodule as ms 312391Sjason@lowepower.comfrom pybind11_tests import ConstructorStats 412391Sjason@lowepower.com 511986Sandreas.sandberg@arm.com 611986Sandreas.sandberg@arm.comdef test_nested_modules(): 711986Sandreas.sandberg@arm.com import pybind11_tests 812391Sjason@lowepower.com assert pybind11_tests.__name__ == "pybind11_tests" 912391Sjason@lowepower.com assert pybind11_tests.modules.__name__ == "pybind11_tests.modules" 1012391Sjason@lowepower.com assert pybind11_tests.modules.subsubmodule.__name__ == "pybind11_tests.modules.subsubmodule" 1112391Sjason@lowepower.com assert m.__name__ == "pybind11_tests.modules" 1212391Sjason@lowepower.com assert ms.__name__ == "pybind11_tests.modules.subsubmodule" 1311986Sandreas.sandberg@arm.com 1412391Sjason@lowepower.com assert ms.submodule_func() == "submodule_func()" 1511986Sandreas.sandberg@arm.com 1611986Sandreas.sandberg@arm.com 1711986Sandreas.sandberg@arm.comdef test_reference_internal(): 1812391Sjason@lowepower.com b = ms.B() 1911986Sandreas.sandberg@arm.com assert str(b.get_a1()) == "A[1]" 2011986Sandreas.sandberg@arm.com assert str(b.a1) == "A[1]" 2111986Sandreas.sandberg@arm.com assert str(b.get_a2()) == "A[2]" 2211986Sandreas.sandberg@arm.com assert str(b.a2) == "A[2]" 2311986Sandreas.sandberg@arm.com 2412391Sjason@lowepower.com b.a1 = ms.A(42) 2512391Sjason@lowepower.com b.a2 = ms.A(43) 2611986Sandreas.sandberg@arm.com assert str(b.get_a1()) == "A[42]" 2711986Sandreas.sandberg@arm.com assert str(b.a1) == "A[42]" 2811986Sandreas.sandberg@arm.com assert str(b.get_a2()) == "A[43]" 2911986Sandreas.sandberg@arm.com assert str(b.a2) == "A[43]" 3011986Sandreas.sandberg@arm.com 3112391Sjason@lowepower.com astats, bstats = ConstructorStats.get(ms.A), ConstructorStats.get(ms.B) 3211986Sandreas.sandberg@arm.com assert astats.alive() == 2 3311986Sandreas.sandberg@arm.com assert bstats.alive() == 1 3411986Sandreas.sandberg@arm.com del b 3511986Sandreas.sandberg@arm.com assert astats.alive() == 0 3611986Sandreas.sandberg@arm.com assert bstats.alive() == 0 3711986Sandreas.sandberg@arm.com assert astats.values() == ['1', '2', '42', '43'] 3811986Sandreas.sandberg@arm.com assert bstats.values() == [] 3911986Sandreas.sandberg@arm.com assert astats.default_constructions == 0 4011986Sandreas.sandberg@arm.com assert bstats.default_constructions == 1 4111986Sandreas.sandberg@arm.com assert astats.copy_constructions == 0 4211986Sandreas.sandberg@arm.com assert bstats.copy_constructions == 0 4311986Sandreas.sandberg@arm.com # assert astats.move_constructions >= 0 # Don't invoke any 4411986Sandreas.sandberg@arm.com # assert bstats.move_constructions >= 0 # Don't invoke any 4511986Sandreas.sandberg@arm.com assert astats.copy_assignments == 2 4611986Sandreas.sandberg@arm.com assert bstats.copy_assignments == 0 4711986Sandreas.sandberg@arm.com assert astats.move_assignments == 0 4811986Sandreas.sandberg@arm.com assert bstats.move_assignments == 0 4911986Sandreas.sandberg@arm.com 5011986Sandreas.sandberg@arm.com 5111986Sandreas.sandberg@arm.comdef test_importing(): 5212391Sjason@lowepower.com from pybind11_tests.modules import OD 5311986Sandreas.sandberg@arm.com from collections import OrderedDict 5411986Sandreas.sandberg@arm.com 5511986Sandreas.sandberg@arm.com assert OD is OrderedDict 5611986Sandreas.sandberg@arm.com assert str(OD([(1, 'a'), (2, 'b')])) == "OrderedDict([(1, 'a'), (2, 'b')])" 5712037Sandreas.sandberg@arm.com 5812037Sandreas.sandberg@arm.com 5912037Sandreas.sandberg@arm.comdef test_pydoc(): 6012037Sandreas.sandberg@arm.com """Pydoc needs to be able to provide help() for everything inside a pybind11 module""" 6112037Sandreas.sandberg@arm.com import pybind11_tests 6212037Sandreas.sandberg@arm.com import pydoc 6312037Sandreas.sandberg@arm.com 6412391Sjason@lowepower.com assert pybind11_tests.__name__ == "pybind11_tests" 6512391Sjason@lowepower.com assert pybind11_tests.__doc__ == "pybind11 test module" 6612037Sandreas.sandberg@arm.com assert pydoc.text.docmodule(pybind11_tests) 6712391Sjason@lowepower.com 6812391Sjason@lowepower.com 6912391Sjason@lowepower.comdef test_duplicate_registration(): 7012391Sjason@lowepower.com """Registering two things with the same name""" 7112391Sjason@lowepower.com 7212391Sjason@lowepower.com assert m.duplicate_registration() == [] 73