Add a test for buffer format of unbound struct
diff --git a/example/example20.cpp b/example/example20.cpp
index 77cda6b..662dc47 100644
--- a/example/example20.cpp
+++ b/example/example20.cpp
@@ -44,6 +44,8 @@
return os << "n:a=" << v.a << ";b=" << v.b;
}
+struct UnboundStruct { };
+
template <typename T>
py::array mkarray_via_buffer(size_t n) {
return py::array(py::buffer_info(nullptr, sizeof(T),
@@ -61,6 +63,10 @@
return arr;
}
+std::string get_format_unbound() {
+ return py::format_descriptor<UnboundStruct>::format();
+}
+
py::array_t<NestedStruct> create_nested(size_t n) {
auto arr = mkarray_via_buffer<NestedStruct>(n);
auto ptr = static_cast<NestedStruct*>(arr.request().ptr);
@@ -107,4 +113,5 @@
m.def("print_rec_packed", &print_recarray<PackedStruct>);
m.def("print_rec_nested", &print_recarray<NestedStruct>);
m.def("print_dtypes", &print_dtypes);
+ m.def("get_format_unbound", &get_format_unbound);
}
diff --git a/example/example20.py b/example/example20.py
index c581cf3..e0a0018 100644
--- a/example/example20.py
+++ b/example/example20.py
@@ -1,16 +1,20 @@
#!/usr/bin/env python
from __future__ import print_function
+import unittest
import numpy as np
from example import (
create_rec_simple, create_rec_packed, create_rec_nested, print_format_descriptors,
- print_rec_simple, print_rec_packed, print_rec_nested, print_dtypes
+ print_rec_simple, print_rec_packed, print_rec_nested, print_dtypes, get_format_unbound
)
def check_eq(arr, data, dtype):
np.testing.assert_equal(arr, np.array(data, dtype=dtype))
+unittest.TestCase().assertRaisesRegex(
+ RuntimeError, 'unsupported buffer format', get_format_unbound)
+
print_format_descriptors()
print_dtypes()