Commit 000aabb2 by Axel Huebl Committed by Wenzel Jakob

Test: Numpy Scalar Creation (#1530)

I found that the numpy array tests already contained an empty-shaped
array test, but none with data in it.

Following PEP 3118, scalars have an empty shape and ndim 0. This
works already and is now also documented/covered by a test.
parent 41f29ccd
...@@ -68,6 +68,9 @@ template <typename T, typename T2> py::handle auxiliaries(T &&r, T2 &&r2) { ...@@ -68,6 +68,9 @@ template <typename T, typename T2> py::handle auxiliaries(T &&r, T2 &&r2) {
return l.release(); return l.release();
} }
// note: declaration at local scope would create a dangling reference!
static int data_i = 42;
TEST_SUBMODULE(numpy_array, sm) { TEST_SUBMODULE(numpy_array, sm) {
try { py::module::import("numpy"); } try { py::module::import("numpy"); }
catch (...) { return; } catch (...) { return; }
...@@ -104,6 +107,8 @@ TEST_SUBMODULE(numpy_array, sm) { ...@@ -104,6 +107,8 @@ TEST_SUBMODULE(numpy_array, sm) {
// test_empty_shaped_array // test_empty_shaped_array
sm.def("make_empty_shaped_array", [] { return py::array(py::dtype("f"), {}, {}); }); sm.def("make_empty_shaped_array", [] { return py::array(py::dtype("f"), {}, {}); });
// test numpy scalars (empty shape, ndim==0)
sm.def("scalar_int", []() { return py::array(py::dtype("i"), {}, {}, &data_i); });
// test_wrap // test_wrap
sm.def("wrap", [](py::array a) { sm.def("wrap", [](py::array a) {
......
...@@ -138,6 +138,11 @@ def test_make_c_f_array(): ...@@ -138,6 +138,11 @@ def test_make_c_f_array():
def test_make_empty_shaped_array(): def test_make_empty_shaped_array():
m.make_empty_shaped_array() m.make_empty_shaped_array()
# empty shape means numpy scalar, PEP 3118
assert m.scalar_int().ndim == 0
assert m.scalar_int().shape == ()
assert m.scalar_int() == 42
def test_wrap(): def test_wrap():
def assert_references(a, b, base=None): def assert_references(a, b, base=None):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment