Skip to content

Commit 67c2910

Browse files
committed
Adding copy constructor and move constructor tracking to atyp. Preparation for a follow-up change in smart_holder_type_caster, to make this test sensitive to the changing behavior.
[skip ci]
1 parent 249df7c commit 67c2910

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

tests/test_class_sh_basic.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ namespace class_sh_basic {
1010

1111
struct atyp { // Short for "any type".
1212
std::string mtxt;
13+
atyp() : mtxt("DefaultConstructor") {}
14+
atyp(const std::string &mtxt_) : mtxt(mtxt_) {}
15+
atyp(const atyp &other) { mtxt = other.mtxt + ".CpCtor"; }
16+
atyp(atyp &&other) { mtxt = other.mtxt + ".MvCtor"; }
1317
};
1418

1519
// clang-format off

tests/test_class_sh_basic.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ def test_atyp_constructors():
1414

1515

1616
def test_cast():
17-
assert m.get_mtxt(m.rtrn_valu_atyp()) == "rtrn_valu"
18-
assert m.get_mtxt(m.rtrn_rref_atyp()) == "rtrn_rref"
19-
assert m.get_mtxt(m.rtrn_cref_atyp()) == "rtrn_cref"
20-
assert m.get_mtxt(m.rtrn_mref_atyp()) == "rtrn_mref"
17+
assert m.get_mtxt(m.rtrn_valu_atyp()) == "rtrn_valu.MvCtor"
18+
assert m.get_mtxt(m.rtrn_rref_atyp()) == "rtrn_rref.MvCtor"
19+
assert m.get_mtxt(m.rtrn_cref_atyp()) == "rtrn_cref.CpCtor"
20+
assert m.get_mtxt(m.rtrn_mref_atyp()) == "rtrn_mref.CpCtor"
2121
assert m.get_mtxt(m.rtrn_cptr_atyp()) == "rtrn_cptr"
2222
assert m.get_mtxt(m.rtrn_mptr_atyp()) == "rtrn_mptr"
2323

2424

2525
def test_load():
26-
assert m.pass_valu_atyp(m.atyp("Valu")) == "pass_valu:Valu"
27-
assert m.pass_rref_atyp(m.atyp("Rref")) == "pass_rref:Rref"
28-
assert m.pass_cref_atyp(m.atyp("Cref")) == "pass_cref:Cref"
29-
assert m.pass_mref_atyp(m.atyp("Mref")) == "pass_mref:Mref"
30-
assert m.pass_cptr_atyp(m.atyp("Cptr")) == "pass_cptr:Cptr"
31-
assert m.pass_mptr_atyp(m.atyp("Mptr")) == "pass_mptr:Mptr"
26+
assert m.pass_valu_atyp(m.atyp("Valu")) == "pass_valu:Valu.MvCtor.MvCtor"
27+
assert m.pass_rref_atyp(m.atyp("Rref")) == "pass_rref:Rref.MvCtor"
28+
assert m.pass_cref_atyp(m.atyp("Cref")) == "pass_cref:Cref.MvCtor"
29+
assert m.pass_mref_atyp(m.atyp("Mref")) == "pass_mref:Mref.MvCtor"
30+
assert m.pass_cptr_atyp(m.atyp("Cptr")) == "pass_cptr:Cptr.MvCtor"
31+
assert m.pass_mptr_atyp(m.atyp("Mptr")) == "pass_mptr:Mptr.MvCtor"
3232

3333

3434
def test_cast_shared_ptr():
@@ -37,8 +37,8 @@ def test_cast_shared_ptr():
3737

3838

3939
def test_load_shared_ptr():
40-
assert m.pass_shmp_atyp(m.atyp("Shmp")) == "pass_shmp:Shmp"
41-
assert m.pass_shcp_atyp(m.atyp("Shcp")) == "pass_shcp:Shcp"
40+
assert m.pass_shmp_atyp(m.atyp("Shmp")) == "pass_shmp:Shmp.MvCtor"
41+
assert m.pass_shcp_atyp(m.atyp("Shcp")) == "pass_shcp:Shcp.MvCtor"
4242

4343

4444
def test_cast_unique_ptr():
@@ -47,8 +47,8 @@ def test_cast_unique_ptr():
4747

4848

4949
def test_load_unique_ptr():
50-
assert m.pass_uqmp_atyp(m.atyp("Uqmp")) == "pass_uqmp:Uqmp"
51-
assert m.pass_uqcp_atyp(m.atyp("Uqcp")) == "pass_uqcp:Uqcp"
50+
assert m.pass_uqmp_atyp(m.atyp("Uqmp")) == "pass_uqmp:Uqmp.MvCtor"
51+
assert m.pass_uqcp_atyp(m.atyp("Uqcp")) == "pass_uqcp:Uqcp.MvCtor"
5252

5353

5454
def test_cast_unique_ptr_with_deleter():
@@ -86,7 +86,7 @@ def test_unique_ptr_roundtrip(num_round_trips=1000):
8686
for _ in range(num_round_trips):
8787
id_orig = id(recycled)
8888
recycled = m.unique_ptr_roundtrip(recycled)
89-
assert m.get_mtxt(recycled) == "passenger"
89+
assert m.get_mtxt(recycled) == "passenger.MvCtor"
9090
id_rtrn = id(recycled)
9191
# Ensure the returned object is a different Python instance.
9292
assert id_rtrn != id_orig

0 commit comments

Comments
 (0)