mirror of
https://github.com/pybind/pybind11.git
synced 2025-01-19 09:25:51 +00:00
Add tests for py::dtype ctors
This commit is contained in:
parent
e19980cc10
commit
611e614619
@ -200,6 +200,28 @@ py::array_t<int32_t, 0> test_array_ctors(int i) {
|
|||||||
return arr_t();
|
return arr_t();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
py::list test_dtype_ctors() {
|
||||||
|
py::list list;
|
||||||
|
list.append(py::dtype("int32"));
|
||||||
|
list.append(py::dtype(std::string("float64")));
|
||||||
|
list.append(py::dtype::from_args(py::str("bool")));
|
||||||
|
py::list names, offsets, formats;
|
||||||
|
py::dict dict;
|
||||||
|
names.append(py::str("a")); names.append(py::str("b")); dict["names"] = names;
|
||||||
|
offsets.append(py::int_(1)); offsets.append(py::int_(10)); dict["offsets"] = offsets;
|
||||||
|
formats.append(py::dtype("int32")); formats.append(py::dtype("float64")); dict["formats"] = formats;
|
||||||
|
dict["itemsize"] = py::int_(20);
|
||||||
|
list.append(py::dtype::from_args(dict));
|
||||||
|
list.append(py::dtype(names, formats, offsets, 20));
|
||||||
|
list.append(py::dtype(py::buffer_info((void *) 0, 1, "I", 1)));
|
||||||
|
list.append(py::dtype(py::buffer_info((void *) 0, 1, "T{i:a:f:b:}", 1)));
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_dtype_methods() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void init_ex_numpy_dtypes(py::module &m) {
|
void init_ex_numpy_dtypes(py::module &m) {
|
||||||
PYBIND11_NUMPY_DTYPE(SimpleStruct, x, y, z);
|
PYBIND11_NUMPY_DTYPE(SimpleStruct, x, y, z);
|
||||||
PYBIND11_NUMPY_DTYPE(PackedStruct, x, y, z);
|
PYBIND11_NUMPY_DTYPE(PackedStruct, x, y, z);
|
||||||
@ -222,6 +244,8 @@ void init_ex_numpy_dtypes(py::module &m) {
|
|||||||
m.def("create_string_array", &create_string_array);
|
m.def("create_string_array", &create_string_array);
|
||||||
m.def("print_string_array", &print_recarray<StringStruct>);
|
m.def("print_string_array", &print_recarray<StringStruct>);
|
||||||
m.def("test_array_ctors", &test_array_ctors);
|
m.def("test_array_ctors", &test_array_ctors);
|
||||||
|
m.def("test_dtype_ctors", &test_dtype_ctors);
|
||||||
|
m.def("test_dtype_methods", &test_dtype_methods);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef PYBIND11_PACKED
|
#undef PYBIND11_PACKED
|
||||||
|
@ -7,7 +7,7 @@ from example import (
|
|||||||
create_rec_simple, create_rec_packed, create_rec_nested, print_format_descriptors,
|
create_rec_simple, create_rec_packed, create_rec_nested, print_format_descriptors,
|
||||||
print_rec_simple, print_rec_packed, print_rec_nested, print_dtypes, get_format_unbound,
|
print_rec_simple, print_rec_packed, print_rec_nested, print_dtypes, get_format_unbound,
|
||||||
create_rec_partial, create_rec_partial_nested, create_string_array, print_string_array,
|
create_rec_partial, create_rec_partial_nested, create_string_array, print_string_array,
|
||||||
test_array_ctors
|
test_array_ctors, test_dtype_ctors
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -86,3 +86,9 @@ data = np.arange(1, 7, dtype='int32')
|
|||||||
for i in range(13):
|
for i in range(13):
|
||||||
expected = data if i >= 8 else data.reshape((3, 2))
|
expected = data if i >= 8 else data.reshape((3, 2))
|
||||||
np.testing.assert_array_equal(test_array_ctors(i), expected)
|
np.testing.assert_array_equal(test_array_ctors(i), expected)
|
||||||
|
|
||||||
|
d1 = np.dtype({'names': ['a', 'b'], 'formats': ['int32', 'float64'],
|
||||||
|
'offsets': [1, 10], 'itemsize': 20})
|
||||||
|
d2 = np.dtype([('a', 'i4'), ('b', 'f4')])
|
||||||
|
assert test_dtype_ctors() == [np.dtype('int32'), np.dtype('float64'),
|
||||||
|
np.dtype('bool'), d1, d1, np.dtype('uint32'), d2]
|
||||||
|
Loading…
Reference in New Issue
Block a user