6 from pybind11_tests
import ConstructorStats
7 from pybind11_tests
import modules
as m
8 from pybind11_tests.modules
import subsubmodule
as ms
14 assert pybind11_tests.__name__ ==
"pybind11_tests"
15 assert pybind11_tests.modules.__name__ ==
"pybind11_tests.modules"
17 pybind11_tests.modules.subsubmodule.__name__
18 ==
"pybind11_tests.modules.subsubmodule"
20 assert m.__name__ ==
"pybind11_tests.modules"
21 assert ms.__name__ ==
"pybind11_tests.modules.subsubmodule"
23 assert ms.submodule_func() ==
"submodule_func()"
28 assert str(b.get_a1()) ==
"A[1]"
29 assert str(b.a1) ==
"A[1]"
30 assert str(b.get_a2()) ==
"A[2]"
31 assert str(b.a2) ==
"A[2]"
35 assert str(b.get_a1()) ==
"A[42]"
36 assert str(b.a1) ==
"A[42]"
37 assert str(b.get_a2()) ==
"A[43]"
38 assert str(b.a2) ==
"A[43]"
41 assert astats.alive() == 2
42 assert bstats.alive() == 1
44 assert astats.alive() == 0
45 assert bstats.alive() == 0
46 assert astats.values() == [
"1",
"2",
"42",
"43"]
47 assert bstats.values() == []
48 assert astats.default_constructions == 0
49 assert bstats.default_constructions == 1
50 assert astats.copy_constructions == 0
51 assert bstats.copy_constructions == 0
54 assert astats.copy_assignments == 2
55 assert bstats.copy_assignments == 0
56 assert astats.move_assignments == 0
57 assert bstats.move_assignments == 0
61 from collections
import OrderedDict
63 from pybind11_tests.modules
import OD
65 assert OD
is OrderedDict
69 """Pydoc needs to be able to provide help() for everything inside a pybind11 module"""
74 assert pybind11_tests.__name__ ==
"pybind11_tests"
75 assert pybind11_tests.__doc__ ==
"pybind11 test module"
76 assert pydoc.text.docmodule(pybind11_tests)
80 """Registering two things with the same name"""
82 assert m.duplicate_registration() == []
86 """Test that all the keys in the builtin modules have type str.
88 Previous versions of pybind11 would add a unicode key in python 2.
90 assert all(
type(k) == str
for k
in dir(builtins))
93 @pytest.mark.xfail(
"env.PYPY", reason=
"PyModule_GetName()")
95 sm = m.def_submodule(m, b
"ScratchSubModuleName")
96 assert sm.__name__ == m.__name__ +
"." +
"ScratchSubModuleName"
97 malformed_utf8 = b
"\x80"
100 pytest.skip(
"Sufficiently exercised on platforms other than PyPy.")
103 sm_name_orig = sm.__name__
104 sm.__name__ = malformed_utf8
109 with pytest.raises(SystemError):
110 m.def_submodule(sm, b
"SubSubModuleName")
113 sm.__name__ = sm_name_orig
115 with pytest.raises(UnicodeDecodeError):
116 m.def_submodule(sm, malformed_utf8)