mirror of
https://github.com/pybind/pybind11.git
synced 2025-01-18 17:05:53 +00:00
tests: check simple iteration of pairs (#3296)
This commit is contained in:
parent
2fa3fcfda5
commit
5f46e47da8
@ -295,6 +295,8 @@ TEST_SUBMODULE(sequences_and_iterators, m) {
|
||||
public:
|
||||
explicit IntPairs(std::vector<std::pair<int, int>> data) : data_(std::move(data)) {}
|
||||
const std::pair<int, int>* begin() const { return data_.data(); }
|
||||
// .end() only required for py::make_iterator(self) overload
|
||||
const std::pair<int, int>* end() const { return data_.data() + data_.size(); }
|
||||
private:
|
||||
std::vector<std::pair<int, int>> data_;
|
||||
};
|
||||
@ -306,6 +308,17 @@ TEST_SUBMODULE(sequences_and_iterators, m) {
|
||||
.def("nonzero_keys", [](const IntPairs& s) {
|
||||
return py::make_key_iterator(NonZeroIterator<std::pair<int, int>>(s.begin()), NonZeroSentinel());
|
||||
}, py::keep_alive<0, 1>())
|
||||
.def("simple_iterator", [](IntPairs& self) {
|
||||
return py::make_iterator(self);
|
||||
}, py::keep_alive<0, 1>())
|
||||
.def("simple_keys", [](IntPairs& self) {
|
||||
return py::make_key_iterator(self);
|
||||
}, py::keep_alive<0, 1>())
|
||||
|
||||
// test iterator with keep_alive (doesn't work so not used at runtime, but tests compile)
|
||||
.def("make_iterator_keep_alive", [](IntPairs& self) {
|
||||
return py::make_iterator(self, py::keep_alive<0, 1>());
|
||||
}, py::keep_alive<0, 1>())
|
||||
;
|
||||
|
||||
|
||||
|
@ -48,6 +48,15 @@ def test_generalized_iterators():
|
||||
next(it)
|
||||
|
||||
|
||||
def test_generalized_iterators_simple():
|
||||
assert list(m.IntPairs([(1, 2), (3, 4), (0, 5)]).simple_iterator()) == [
|
||||
(1, 2),
|
||||
(3, 4),
|
||||
(0, 5),
|
||||
]
|
||||
assert list(m.IntPairs([(1, 2), (3, 4), (0, 5)]).simple_keys()) == [1, 3, 0]
|
||||
|
||||
|
||||
def test_sliceable():
|
||||
sliceable = m.Sliceable(100)
|
||||
assert sliceable[::] == (0, 100, 1)
|
||||
|
Loading…
Reference in New Issue
Block a user