MCPcopy Create free account
hub / github.com/pybind/pybind11 / test_init_factory_dual

Function test_init_factory_dual

tests/test_factory_constructors.py:228–307  ·  view source on GitHub ↗

Tests init factory functions with dual main/alias factory functions

()

Source from the content-addressed store, hash-verified

226
227@pytest.mark.skipif("env.GRAALPY", reason="Cannot reliably trigger GC")
228def test_init_factory_dual():
229 """Tests init factory functions with dual main/alias factory functions"""
230 from pybind11_tests.factory_constructors import TestFactory7
231
232 cstats = [TestFactory7.get_cstats(), TestFactory7.get_alias_cstats()]
233 cstats[0].alive() # force gc
234 n_inst = ConstructorStats.detail_reg_inst()
235
236 class PythFactory7(TestFactory7):
237 def get(self):
238 return 100 + TestFactory7.get(self)
239
240 a1 = TestFactory7(1)
241 a2 = PythFactory7(2)
242 assert a1.get() == 1
243 assert a2.get() == 102
244 assert not a1.has_alias()
245 assert a2.has_alias()
246
247 b1 = TestFactory7(tag.pointer, 3)
248 b2 = PythFactory7(tag.pointer, 4)
249 assert b1.get() == 3
250 assert b2.get() == 104
251 assert not b1.has_alias()
252 assert b2.has_alias()
253
254 c1 = TestFactory7(tag.mixed, 5)
255 c2 = PythFactory7(tag.mixed, 6)
256 assert c1.get() == 5
257 assert c2.get() == 106
258 assert not c1.has_alias()
259 assert c2.has_alias()
260
261 d1 = TestFactory7(tag.base, tag.pointer, 7)
262 d2 = PythFactory7(tag.base, tag.pointer, 8)
263 assert d1.get() == 7
264 assert d2.get() == 108
265 assert not d1.has_alias()
266 assert d2.has_alias()
267
268 # Both return an alias; the second multiplies the value by 10:
269 e1 = TestFactory7(tag.alias, tag.pointer, 9)
270 e2 = PythFactory7(tag.alias, tag.pointer, 10)
271 assert e1.get() == 9
272 assert e2.get() == 200
273 assert e1.has_alias()
274 assert e2.has_alias()
275
276 f1 = TestFactory7(tag.shared_ptr, tag.base, 11)
277 f2 = PythFactory7(tag.shared_ptr, tag.base, 12)
278 assert f1.get() == 11
279 assert f2.get() == 112
280 assert not f1.has_alias()
281 assert f2.has_alias()
282
283 g1 = TestFactory7(tag.shared_ptr, tag.invalid_base, 13)
284 assert g1.get() == 13
285 assert not g1.has_alias()

Callers

nothing calls this directly

Calls 9

getMethod · 0.95
getMethod · 0.95
has_aliasMethod · 0.95
TestFactory7Class · 0.90
PythFactory7Class · 0.85
strClass · 0.85
aliveMethod · 0.80
valuesMethod · 0.80
has_aliasMethod · 0.45

Tested by

no test coverage detected