3
import array # Python builtin module
4
from cpython cimport array # array.pxd / arrayarray.h
6
a = array.array('f', [1.0, 2.0, 3.0])
10
>>> a = array.array('f', [1.0, 2.0, 3.0])
15
>>> assert len(a) == test_len(a)
17
cdef array.array ca = a # for C-fast array usage
22
>>> a = array.array('f', [1.0, 2.0, 3.0])
24
array('f', [1.0, 2.0, 3.0])
26
cdef array.array ca = a
35
def test_fast_access(a):
37
>>> a = array.array('f', [1.0, 2.0, 3.0])
38
>>> test_fast_access(a)
41
cdef array.array ca = a
45
value = ca.data.as_floats[1]
46
assert value == 2.0, value
48
#assert ca._c[:5] == b'\x00\x00\x80?\x00', repr(ca._c[:5])
51
ca.data.as_floats[1] += 2.0
52
assert ca.data.as_floats[1] == 4.0
55
def test_fast_buffer_access(a):
57
>>> a = array.array('f', [1.0, 2.0, 3.0])
58
>>> test_fast_buffer_access(a)
61
cdef array.array[float] ca = a
66
assert value == 2.0, value
75
>>> a = array.array('f', [1.0, 2.0, 3.0])
77
array('f', [0.0, 0.0, 0.0])
79
cdef array.array cb = array.clone(a, len(a), True)
80
assert len(cb) == len(a)
86
>>> a = array.array('f', [1.0, 2.0, 3.0])
88
array('f', [0.0, 0.0, 0.0])
90
cdef array.array cb = array.copy(a)
93
assert cb[1] == 0.0, cb
98
>>> a = array.array('f', [1.0, 2.0, 3.0])
101
cdef array.array cb = array.copy(a)
104
cb.data.as_floats[i] = i
106
assert cb[9] == cb[-1] == cb.data.as_floats[9] == 9
108
def test_resize_smart(a):
110
>>> a = array.array('d', [1, 2, 3])
111
>>> test_resize_smart(a)
114
cdef array.array cb = array.copy(a)
115
array.resize_smart(cb, 2)
122
cdef object a = array.array('i', [1, 2, 3])
123
cdef object[int] ca = a
127
def test_buffer_typed():
129
>>> test_buffer_typed()
131
cdef array.array a = array.array('i', [1, 2, 3])
132
cdef object[int] ca = a
140
cdef object a = array.array('i', [1, 2, 3])
145
def test_view_typed():
147
>>> test_view_typed()
149
cdef array.array a = array.array('i', [1, 2, 3])
158
cdef array.array ca = array.array('i', [1, 2, 3])
159
cdef array.array cb = array.array('i', [4, 5])
160
cdef array.array cf = array.array('f', [1.0, 2.0, 3.0])
162
assert list(ca) == [1, 2, 3, 4, 5], list(ca)
168
assert False, 'extending incompatible array types did not raise'
172
>>> a = array.array('f', [1.0, 2.0, 3.0])
174
array('f', [0.0, 0.0, 0.0])
176
cdef array.array z = array.clone(a, len(a), True)
177
cdef array.array e = array.clone(a, len(a), False)
178
assert len(e) == len(a)
181
def test_extend_buffer():
183
>>> test_extend_buffer()
184
array('l', [15, 37, 389, 5077])
186
cdef array.array ca = array.array('l', [15, 37])
190
array.extend_buffer(ca, <char*> &s, 2)
192
assert ca.data.as_ulongs[3] == 5077