chore: Add pytests for constructing pytypes from iterable (#4138)

* Add some additional pytests

* Reorder tests

* Further reorder tests

* remove stray lines

* remove unused fixtures
This commit is contained in:
Aaron Gokaslan 2022-08-11 16:14:17 -04:00 committed by GitHub
parent bbb89da152
commit b884b9dc6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View File

@ -109,6 +109,11 @@ TEST_SUBMODULE(pytypes, m) {
m.def("get_iterator", [] { return py::iterator(); }); m.def("get_iterator", [] { return py::iterator(); });
// test_iterable // test_iterable
m.def("get_iterable", [] { return py::iterable(); }); m.def("get_iterable", [] { return py::iterable(); });
m.def("get_frozenset_from_iterable",
[](const py::iterable &iter) { return py::frozenset(iter); });
m.def("get_list_from_iterable", [](const py::iterable &iter) { return py::list(iter); });
m.def("get_set_from_iterable", [](const py::iterable &iter) { return py::set(iter); });
m.def("get_tuple_from_iterable", [](const py::iterable &iter) { return py::tuple(iter); });
// test_float // test_float
m.def("get_float", [] { return py::float_(0.0f); }); m.def("get_float", [] { return py::float_(0.0f); });
// test_list // test_list

View File

@ -26,6 +26,22 @@ def test_iterator(doc):
assert doc(m.get_iterator) == "get_iterator() -> Iterator" assert doc(m.get_iterator) == "get_iterator() -> Iterator"
@pytest.mark.parametrize(
"pytype, from_iter_func",
[
(frozenset, m.get_frozenset_from_iterable),
(list, m.get_list_from_iterable),
(set, m.get_set_from_iterable),
(tuple, m.get_tuple_from_iterable),
],
)
def test_from_iterable(pytype, from_iter_func):
my_iter = iter(range(10))
s = from_iter_func(my_iter)
assert type(s) == pytype
assert s == pytype(range(10))
def test_iterable(doc): def test_iterable(doc):
assert doc(m.get_iterable) == "get_iterable() -> Iterable" assert doc(m.get_iterable) == "get_iterable() -> Iterable"