3 from __future__
import annotations
5 import exo_planet_c_api
6 import exo_planet_pybind11
7 import home_planet_very_lonely_traveler
10 from pybind11_tests
import cpp_conduit
as home_planet
14 t_h = home_planet.Traveler(
"home")
15 assert t_h.any_name ==
"Traveler GetAttr: any_name luggage: home"
19 t_h = home_planet.PremiumTraveler(
"home", 7)
20 assert t_h.secret_name ==
"PremiumTraveler GetAttr: secret_name points: 7"
24 t_h = home_planet.Traveler(
"home")
25 cap = t_h._pybind11_conduit_v1_(
26 home_planet.PYBIND11_PLATFORM_ABI_ID,
27 home_planet.cpp_type_info_capsule_Traveler,
28 b
"raw_pointer_ephemeral",
30 assert cap.__class__.__name__ ==
"PyCapsule"
34 t_h = home_planet.Traveler(
"home")
35 cap = t_h._pybind11_conduit_v1_(
36 home_planet.PYBIND11_PLATFORM_ABI_ID + b
"MISMATCH",
37 home_planet.cpp_type_info_capsule_Traveler,
38 b
"raw_pointer_ephemeral",
44 t_h = home_planet.Traveler(
"home")
45 cap = t_h._pybind11_conduit_v1_(
46 home_planet.PYBIND11_PLATFORM_ABI_ID,
47 home_planet.cpp_type_info_capsule_int,
48 b
"raw_pointer_ephemeral",
54 t_h = home_planet.Traveler(
"home")
56 RuntimeError, match=
'^Invalid pointer_kind: "raw_pointer_ephemreal"$'
58 t_h._pybind11_conduit_v1_(
59 home_planet.PYBIND11_PLATFORM_ABI_ID,
60 home_planet.cpp_type_info_capsule_Traveler,
61 b
"raw_pointer_ephemreal",
66 t_h = home_planet.Traveler(
"home")
67 assert t_h.luggage ==
"home"
68 assert home_planet.get_luggage(t_h) ==
"home"
72 p_h = home_planet.PremiumTraveler(
"home", 2)
73 assert p_h.luggage ==
"home"
74 assert home_planet.get_luggage(p_h) ==
"home"
75 assert home_planet.get_points(p_h) == 2
79 t_e = exo_planet_pybind11.Traveler(
"exo")
80 assert t_e.luggage ==
"exo"
81 assert exo_planet_pybind11.get_luggage(t_e) ==
"exo"
85 p_e = exo_planet_pybind11.PremiumTraveler(
"exo", 3)
86 assert p_e.luggage ==
"exo"
87 assert exo_planet_pybind11.get_luggage(p_e) ==
"exo"
88 assert exo_planet_pybind11.get_points(p_e) == 3
92 t_h = home_planet.Traveler(
"home")
93 assert exo_planet_pybind11.get_luggage(t_h) ==
"home"
97 t_e = exo_planet_pybind11.Traveler(
"exo")
98 assert home_planet.get_luggage(t_e) ==
"exo"
102 p_h = home_planet.PremiumTraveler(
"home", 2)
103 assert exo_planet_pybind11.get_luggage(p_h) ==
"home"
104 assert exo_planet_pybind11.get_points(p_h) == 2
108 p_e = exo_planet_pybind11.PremiumTraveler(
"exo", 3)
109 assert home_planet.get_luggage(p_e) ==
"exo"
110 assert home_planet.get_points(p_e) == 3
113 @pytest.mark.parametrize(
114 "traveler_type", [home_planet.Traveler, exo_planet_pybind11.Traveler]
117 t = traveler_type(
"socks")
118 assert exo_planet_c_api.GetLuggage(t) ==
"socks"
121 @pytest.mark.parametrize(
122 "premium_traveler_type",
123 [home_planet.PremiumTraveler, exo_planet_pybind11.PremiumTraveler],
126 pt = premium_traveler_type(
"gucci", 5)
127 assert exo_planet_c_api.GetLuggage(pt) ==
"gucci"
128 assert exo_planet_c_api.GetPoints(pt) == 5
143 assert home_planet.LonelyTraveler
is not None
144 home_planet_very_lonely_traveler.wrap_very_lonely_traveler()
146 assert home_planet_very_lonely_traveler.VeryLonelyTraveler
is not None
156 assert home_planet.LonelyTraveler
is not None
159 match=
'^generic_type: type "VeryLonelyTraveler" referenced unknown base type '
160 '"pybind11_tests::test_cpp_conduit::LonelyTraveler"$',
162 exo_planet_pybind11.wrap_very_lonely_traveler()