Skip to content

Commit db17f2d

Browse files
committed
Added tests for sequence caster for noconvert mode
1 parent ee270ab commit db17f2d

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

tests/test_stl.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,10 @@ TEST_SUBMODULE(stl, m) {
651651
m.def("roundtrip_std_vector_int", [](const std::vector<int> &v) { return v; });
652652
m.def("roundtrip_std_map_str_int", [](const std::map<std::string, int> &m) { return m; });
653653
m.def("roundtrip_std_set_int", [](const std::set<int> &s) { return s; });
654+
m.def(
655+
"roundtrip_std_vector_int_noconvert",
656+
[](const std::vector<int> &v) { return v; },
657+
py::arg("v").noconvert());
654658
m.def(
655659
"roundtrip_std_map_str_int_noconvert",
656660
[](const std::map<std::string, int> &m) { return m; },

tests/test_stl.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,7 @@ def __getitem__(self, index):
597597
class FormalSequenceLike(BareSequenceLike, Sequence):
598598
pass
599599

600+
# convert mode
600601
assert (
601602
doc(m.roundtrip_std_vector_int)
602603
== "roundtrip_std_vector_int(arg0: collections.abc.Sequence[typing.SupportsInt]) -> list[int]"
@@ -608,6 +609,22 @@ class FormalSequenceLike(BareSequenceLike, Sequence):
608609
assert m.roundtrip_std_vector_int([]) == []
609610
assert m.roundtrip_std_vector_int(()) == []
610611
assert m.roundtrip_std_vector_int(BareSequenceLike()) == []
612+
# noconvert mode
613+
assert (
614+
doc(m.roundtrip_std_vector_int_noconvert)
615+
== "roundtrip_std_vector_int_noconvert(v: list[int]) -> list[int]"
616+
)
617+
assert m.roundtrip_std_vector_int_noconvert([1, 2, 3]) == [1, 2, 3]
618+
assert m.roundtrip_std_vector_int_noconvert((1, 2, 3)) == [1, 2, 3]
619+
assert m.roundtrip_std_vector_int_noconvert(FormalSequenceLike(1, 2, 3)) == [
620+
1,
621+
2,
622+
3,
623+
]
624+
assert m.roundtrip_std_vector_int_noconvert(BareSequenceLike(1, 2, 3)) == [1, 2, 3]
625+
assert m.roundtrip_std_vector_int_noconvert([]) == []
626+
assert m.roundtrip_std_vector_int_noconvert(()) == []
627+
assert m.roundtrip_std_vector_int_noconvert(BareSequenceLike()) == []
611628

612629

613630
def test_mapping_caster_protocol(doc):

0 commit comments

Comments
 (0)