B
    ž†\Ð	  ã               @   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   ú@lib/python3.7/site-packages/Cython/Compiler/Tests/TestMemView.pyÚ<lambda>   s    z*TestMemviewParsing.parse.<locals>.<lambda>)Zshould_not_failÚroot)r   r   r   )r   r   r	   Úparse
   s    zTestMemviewParsing.parsec                s*   ˆ  ‡ ‡fdd„tj¡}ˆ ||j¡ d S )Nc                  s
   ˆ  ˆ ¡S )N)r   r   )r   r   r   r	   r
      s    z2TestMemviewParsing.not_parseable.<locals>.<lambda>)Zshould_failÚErrorsZCompileErrorZassertEqualZmessage_only)r   Zexpected_errorr   Úer   )r   r   r	   Únot_parseable   s    z TestMemviewParsing.not_parseablec             C   s   |   d¡ |   d¡ d S )Nz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[:,:,:,:,:] x)r   )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:] x)r   )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:] x)r   )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): pass)r   )r   r   r   r	   Útest_def_arg!   s    zTestMemviewParsing.test_def_argc             C   s   |   d¡ d S )Nzcdef foo(int[:,:] x): pass)r   )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] x)r   )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 )Nzcdef int[:] xr   )r   ZstatsZ	base_typeZassert_Ú
isinstanceZMemoryViewSliceTypeNode)r   ÚtZ	memv_noder   r   r	   Ú
test_basic0   s    
zTestMemviewParsing.test_basicc             C   s   |   dd¡ d S )Nz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])zExpected ']'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   =