1# tag: numpy_old
2
3cimport numpy as np
4cimport cython
5
6import numpy as py_numpy
7
8__doc__ = u"""
9
10    >>> test_record_subarray()
11
12"""
13
14def test_record_subarray():
15    cdef np.ndarray x = py_numpy.zeros((2,2),
16                                       dtype=[('a', py_numpy.int32),
17                                              ('b', py_numpy.float64, (3, 3))])
18    cdef np.dtype descr   = x.dtype
19    cdef np.dtype a_descr = descr.fields['a'][0]
20    cdef np.dtype b_descr = descr.fields['b'][0]
21
22    # Make sure the dtype looks like we expect
23    assert descr.fields == {'a': (py_numpy.dtype('int32'), 0),
24                            'b': (py_numpy.dtype(('=f8', (3, 3))), 4)}, descr.fields
25
26    # Make sure that HASSUBARRAY is working
27    assert not np.PyDataType_HASSUBARRAY(descr)
28    assert not np.PyDataType_HASSUBARRAY(a_descr)
29    assert np.PyDataType_HASSUBARRAY(b_descr)
30
31    # Make sure the direct field access works
32    assert <tuple>b_descr.subarray.shape == (3, 3), <tuple>b_descr.subarray.shape
33
34    # Make sure the safe high-level helper function works
35    assert np.PyDataType_SHAPE(descr) == (), np.PyDataType_SHAPE(descr)
36    assert np.PyDataType_SHAPE(a_descr) == (), np.PyDataType_SHAPE(a_descr)
37    assert np.PyDataType_SHAPE(b_descr) == (3, 3), np.PyDataType_SHAPE(b_descr)
38