summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatěj Laitl <matej@laitl.cz>2012-11-29 22:50:08 +0100
committerMatěj Laitl <matej@laitl.cz>2012-11-29 22:50:08 +0100
commita498d5231adb20b8677aee18ea2cd643b1c41bcd (patch)
treeda45dca6f1f0f4852d0031139464d3f57e93397c
parent6eb0745f2a28cbf60bfbe4feb40f95ddb5b54c46 (diff)
downloadcython-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.pyx35
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