diff options
author | Matěj Laitl <matej@laitl.cz> | 2012-11-29 22:50:08 +0100 |
---|---|---|
committer | Matěj Laitl <matej@laitl.cz> | 2012-11-29 22:50:08 +0100 |
commit | a498d5231adb20b8677aee18ea2cd643b1c41bcd (patch) | |
tree | da45dca6f1f0f4852d0031139464d3f57e93397c | |
parent | 6eb0745f2a28cbf60bfbe4feb40f95ddb5b54c46 (diff) | |
download | cython-a498d5231adb20b8677aee18ea2cd643b1c41bcd.tar.gz |
Add test for memoryview of extension type
A test for a bug fixed in commit 478b939a4c99a77c0863cfd.
v2: add commit link above
v3: # tag: instead of # tags:, drop cpp tag as it means something different
that I originally thought
There was a bug that produced C code where gcc emitted warnings:
extension_type_memoryview.c: In function ‘__pyx_pf_25extension_type_memoryview_test_getitem’:
extension_type_memoryview.c:1468:15: warning: assignment from incompatible pointer type
extension_type_memoryview.c: In function ‘__pyx_pf_25extension_type_memoryview_2test_getitem_typed’:
extension_type_memoryview.c:1565:15: warning: assignment from incompatible pointer type
extension_type_memoryview.c:1568:18: warning: assignment from incompatible pointer type
And g++ failed with errors:
extension_type_memoryview.c: In function ‘PyObject* __pyx_pf_25extension_type_memoryview_test_getitem(PyObject*)’:
extension_type_memoryview.c:1468:213: error: cannot convert ‘__pyx_obj_25extension_type_memoryview_ExtensionType*’ to ‘PyObject*’ in assignment
extension_type_memoryview.c: In function ‘PyObject* __pyx_pf_25extension_type_memoryview_2test_getitem_typed(PyObject*)’:
extension_type_memoryview.c:1565:213: error: cannot convert ‘__pyx_obj_25extension_type_memoryview_ExtensionType*’ to ‘PyObject*’ in assignment
extension_type_memoryview.c:1568:20: error: cannot convert ‘PyObject*’ to ‘__pyx_obj_25extension_type_memoryview_ExtensionType*’ in assignment
--HG--
extra : transplant_source : %02N%D4%B99N%D6%FBv%7C%F0%94%E5%BE%CE%C9t%D6%04%11
-rw-r--r-- | tests/memoryview/extension_type_memoryview.pyx | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/memoryview/extension_type_memoryview.pyx b/tests/memoryview/extension_type_memoryview.pyx new file mode 100644 index 000000000..eae21305b --- /dev/null +++ b/tests/memoryview/extension_type_memoryview.pyx @@ -0,0 +1,35 @@ +# mode: run +# tag: numpy + +import numpy as np + + +cdef class ExtensionType(object): + cdef public int dummy + + def __init__(self, n): + self.dummy = n + +items = [ExtensionType(1), ExtensionType(2)] +cdef ExtensionType[:] view = np.array(items, dtype=ExtensionType) + +def test_getitem(): + """ + >>> test_getitem() + 1 + 2 + """ + for i in range(view.shape[0]): + item = view[i] + print item.dummy + +def test_getitem_typed(): + """ + >>> test_getitem_typed() + 1 + 2 + """ + cdef ExtensionType item + for i in range(view.shape[0]): + item = view[i] + print item.dummy |