Commit f0a69791 authored by Stefan Behnel's avatar Stefan Behnel

unicode fixes for numpy test (untested, hopefully not breaking everything)

parent fb48d396
...@@ -4,7 +4,7 @@ cimport numpy as np ...@@ -4,7 +4,7 @@ cimport numpy as np
try: try:
import numpy as np import numpy as np
__doc__ = """ __doc__ = u"""
>>> basic() >>> basic()
[[0 1 2 3 4] [[0 1 2 3 4]
...@@ -155,27 +155,27 @@ try: ...@@ -155,27 +155,27 @@ try:
""" """
except: except:
__doc__ = "" __doc__ = u""
def ndarray_str(arr): def ndarray_str(arr):
""" u"""
Since Py2.3 doctest don't support <BLANKLINE>, manually replace blank lines Since Py2.3 doctest don't support <BLANKLINE>, manually replace blank lines
with <_BLANKLINE_> with <_BLANKLINE_>
""" """
return str(arr).replace('\n\n', '\n<_BLANKLINE_>\n') return unicode(arr).replace(u'\n\n', u'\n<_BLANKLINE_>\n')
def basic(): def basic():
cdef object[int, ndim=2] buf = np.arange(10, dtype='i').reshape((2, 5)) cdef object[int, ndim=2] buf = np.arange(10, dtype=u'i').reshape((2, 5))
print buf print buf
print buf[0, 2], buf[0, 0], buf[1, 4], buf[1, 0] print buf[0, 2], buf[0, 0], buf[1, 4], buf[1, 0]
def three_dim(): def three_dim():
cdef object[double, ndim=3] buf = np.arange(24, dtype='d').reshape((3,2,4)) cdef object[double, ndim=3] buf = np.arange(24, dtype=u'd').reshape((3,2,4))
print ndarray_str(buf) print ndarray_str(buf)
print buf[0, 1, 2], buf[0, 0, 0], buf[1, 1, 1], buf[1, 0, 0] print buf[0, 1, 2], buf[0, 0, 0], buf[1, 1, 1], buf[1, 0, 0]
def obj_array(): def obj_array():
cdef object[object, ndim=1] buf = np.array(["a", 1, {}]) cdef object[object, ndim=1] buf = np.array([u"a", 1, {}])
print buf print buf
print buf[0], buf[1], buf[2] print buf[0], buf[1], buf[2]
...@@ -183,24 +183,24 @@ def obj_array(): ...@@ -183,24 +183,24 @@ def obj_array():
def print_long_2d(np.ndarray[long, ndim=2] arr): def print_long_2d(np.ndarray[long, ndim=2] arr):
cdef int i, j cdef int i, j
for i in range(arr.shape[0]): for i in range(arr.shape[0]):
print " ".join([str(arr[i, j]) for j in range(arr.shape[1])]) print u" ".join([unicode(arr[i, j]) for j in range(arr.shape[1])])
def put_range_long_1d(np.ndarray[long] arr): def put_range_long_1d(np.ndarray[long] arr):
"""Writes 0,1,2,... to array and returns array""" u"""Writes 0,1,2,... to array and returns array"""
cdef int value = 0, i cdef int value = 0, i
for i in range(arr.shape[0]): for i in range(arr.shape[0]):
arr[i] = value arr[i] = value
value += 1 value += 1
def test_c_contig(np.ndarray[int, ndim=2, mode='c'] arr): def test_c_contig(np.ndarray[int, ndim=2, mode=u'c'] arr):
cdef int i, j cdef int i, j
for i in range(arr.shape[0]): for i in range(arr.shape[0]):
print " ".join([str(arr[i, j]) for j in range(arr.shape[1])]) print u" ".join([unicode(arr[i, j]) for j in range(arr.shape[1])])
def test_f_contig(np.ndarray[int, ndim=2, mode='fortran'] arr): def test_f_contig(np.ndarray[int, ndim=2, mode=u'fortran'] arr):
cdef int i, j cdef int i, j
for i in range(arr.shape[0]): for i in range(arr.shape[0]):
print " ".join([str(arr[i, j]) for j in range(arr.shape[1])]) print u" ".join([unicode(arr[i, j]) for j in range(arr.shape[1])])
# Exhaustive dtype tests -- increments element [1] by 1 (or 1+1j) for all dtypes # Exhaustive dtype tests -- increments element [1] by 1 (or 1+1j) for all dtypes
def inc1_byte(np.ndarray[char] arr): arr[1] += 1 def inc1_byte(np.ndarray[char] arr): arr[1] += 1
...@@ -250,33 +250,33 @@ def inc1_float64_t(np.ndarray[np.float64_t] arr): arr[1] += 1 ...@@ -250,33 +250,33 @@ def inc1_float64_t(np.ndarray[np.float64_t] arr): arr[1] += 1
def test_dtype(dtype, inc1): def test_dtype(dtype, inc1):
if dtype in ('F', 'D', 'G'): if dtype in (u'F', u'D', u'G'):
a = np.array([0, 10+10j], dtype=dtype) a = np.array([0, 10+10j], dtype=dtype)
inc1(a) inc1(a)
if a[1] != (11 + 11j): print "failed!", a[1] if a[1] != (11 + 11j): print u"failed!", a[1]
else: else:
a = np.array([0, 10], dtype=dtype) a = np.array([0, 10], dtype=dtype)
inc1(a) inc1(a)
if a[1] != 11: print "failed!" if a[1] != 11: print u"failed!"
cdef struct DoubleInt: cdef struct DoubleInt:
int x, y int x, y
def test_recordarray(): def test_recordarray():
cdef object[DoubleInt] arr cdef object[DoubleInt] arr
arr = np.array([(5,5), (4, 6)], dtype=np.dtype('i,i')) arr = np.array([(5,5), (4, 6)], dtype=np.dtype(u'i,i'))
cdef DoubleInt rec cdef DoubleInt rec
rec = arr[0] rec = arr[0]
if rec.x != 5: print "failed" if rec.x != 5: print u"failed"
if rec.y != 5: print "failed" if rec.y != 5: print u"failed"
rec.y += 5 rec.y += 5
arr[1] = rec arr[1] = rec
arr[0].x -= 2 arr[0].x -= 2
arr[0].y += 3 arr[0].y += 3
if arr[0].x != 3: print "failed" if arr[0].x != 3: print u"failed"
if arr[0].y != 8: print "failed" if arr[0].y != 8: print u"failed"
if arr[1].x != 5: print "failed" if arr[1].x != 5: print u"failed"
if arr[1].y != 10: print "failed" if arr[1].y != 10: print u"failed"
cdef struct NestedStruct: cdef struct NestedStruct:
DoubleInt a DoubleInt a
...@@ -304,10 +304,10 @@ def test_bad_nested_dtypes(): ...@@ -304,10 +304,10 @@ def test_bad_nested_dtypes():
def test_good_cast(): def test_good_cast():
# Check that a signed int can round-trip through casted unsigned int access # Check that a signed int can round-trip through casted unsigned int access
cdef np.ndarray[unsigned int, cast=True] arr = np.array([-100], dtype='i') cdef np.ndarray[unsigned int, cast=True] arr = np.array([-100], dtype=u'i')
cdef unsigned int data = arr[0] cdef unsigned int data = arr[0]
return -100 == <int>data return -100 == <int>data
def test_bad_cast(): def test_bad_cast():
# This should raise an exception # This should raise an exception
cdef np.ndarray[long, cast=True] arr = np.array([1], dtype='b') cdef np.ndarray[long, cast=True] arr = np.array([1], dtype=u'b')
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