U
    {±Ëh¼	  ã                   @   sb   d dl mZ d dlm  mZ d dlT d dlT d dlT G dd„ deƒZe	dkr^d dl
Z
e
 ¡  dS )é    )Ú
CythonTestN)Ú*c                   @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestMemviewParsingc                    s   ˆ  ‡ ‡fdd„¡jS )Nc                      s
   ˆ  ˆ ¡S ©N©Úfragment© ©ÚsÚselfr   úE/tmp/pip-unpacked-wheel-fhl22ezh/Cython/Compiler/Tests/TestMemView.pyÚ<lambda>   ó    z*TestMemviewParsing.parse.<locals>.<lambda>)Zshould_not_failÚroot)r   r
   r   r	   r   Úparse
   s    zTestMemviewParsing.parsec                    s*   ˆ  ‡ ‡fdd„tj¡}ˆ ||j¡ d S )Nc                      s
   ˆ  ˆ ¡S r   r   r   r	   r   r   r      r   z2TestMemviewParsing.not_parseable.<locals>.<lambda>)Zshould_failÚErrorsÚCompileErrorÚassertEqualZmessage_only)r   Zexpected_errorr
   Úer   r	   r   Únot_parseable   s    z TestMemviewParsing.not_parseablec                 C   s   |   d¡ |   d¡ d S )Núcdef int[:] xzcdef short int[:] x©r   ©r   r   r   r   Útest_default_1dim   s    
z$TestMemviewParsing.test_default_1dimc                 C   s"   |   d¡ |   d¡ |   d¡ d S )Nzcdef int[:,:,:,:,:] xz#cdef unsigned long int[:,:,:,:,:] xzcdef unsigned int[:,:,:,:,:] xr   r   r   r   r   Útest_default_ndim   s    

z$TestMemviewParsing.test_default_ndimc                 C   s   |   d¡ |   d¡ d S )Nzcdef long double[0:] xzcdef int[0:] xr   r   r   r   r   Útest_zero_offset   s    
z#TestMemviewParsing.test_zero_offsetc                 C   s   |   d¡ d S )Nzcdef int[0:,0:,0:,0:] xr   r   r   r   r   Útest_zero_offset_ndim   s    z(TestMemviewParsing.test_zero_offset_ndimc                 C   s   |   d¡ d S )Nzdef foo(int[:,:] x): passr   r   r   r   r   Útest_def_arg!   s    zTestMemviewParsing.test_def_argc                 C   s   |   d¡ d S )Nzcdef foo(int[:,:] x): passr   r   r   r   r   Útest_cdef_arg$   s    z TestMemviewParsing.test_cdef_argc                 C   s   |   d¡ d S )Nz9cdef float[::ptr, ::direct & contig, 0::full & strided] xr   r   r   r   r   Útest_general_slice'   s    z%TestMemviewParsing.test_general_slicec                 C   s   |   dd¡ |   dd¡ d S )NzDAn axis specification in memoryview declaration does not have a ':'.zcdef double[:foo, bar] xzcdef double[0:foo, bar] x©r   r   r   r   r   Útest_non_slice_memview*   s    ÿÿz)TestMemviewParsing.test_non_slice_memviewc                 C   s*   |   d¡}|jd j}|  t|tƒ¡ d S )Nr   r   )r   ÚstatsZ	base_typeÚ
assertTrueÚ
isinstanceZMemoryViewSliceTypeNode)r   ÚtZ	memv_noder   r   r   Ú
test_basic0   s    
zTestMemviewParsing.test_basicc                 C   s   |   dd¡ d S )NúExpected ']'z$cdef extern foo(object[int, ndim=2])r    r   r   r   r   Údisable_test_no_buf_arg8   s    ÿz*TestMemviewParsing.disable_test_no_buf_argc                 C   s:   |   d¡ |   d¡ |   d¡ |  dd¡ |  dd¡ d S )Nzsizeof(int[NN])zsizeof(int[])zsizeof(int[][NN])z!Expected an identifier or literalzsizeof(int[:NN])r'   zsizeof(foo[dtype=bar])r   r   r   r   r   r   Údisable_test_parse_sizeof<   s    


ÿÿz,TestMemviewParsing.disable_test_parse_sizeofN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r!   r&   r(   r)   r   r   r   r   r      s   r   Ú__main__)ZCython.TestUtilsr   ZCython.Compiler.ErrorsZCompilerr   ZCython.Compiler.NodesZ#Cython.Compiler.ParseTreeTransformsZCython.Compiler.Bufferr   r*   ZunittestÚmainr   r   r   r   Ú<module>   s   =