o
    €e
  ã                   @   sf   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r1d dl
Z
e
 ¡  dS 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 ©N©Úfragment© ©ÚsÚselfr	   úQD:\Projects\ConvertPro\env\Lib\site-packages\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                      r   r   r   r	   r
   r	   r   r      r   z2TestMemviewParsing.not_parseable.<locals>.<lambda>)Zshould_failÚErrorsZCompileErrorÚassertEqualZmessage_only)r   Zexpected_errorr   Úer	   r
   r   Únot_parseable   s   z TestMemviewParsing.not_parseablec                 C   ó   |   d¡ |   d¡ d S )Núcdef int[:] xzcdef short int[:] x©r   ©r   r	   r	   r   Útest_default_1dim   ó   
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   r   )Nzcdef long double[0:] xzcdef int[0:] xr   r   r	   r	   r   Útest_zero_offset   r   z#TestMemviewParsing.test_zero_offsetc                 C   ó   |   d¡ d S )Nzcdef int[0:,0:,0:,0:] xr   r   r	   r	   r   Útest_zero_offset_ndim   ó   z(TestMemviewParsing.test_zero_offset_ndimc                 C   r   )Nzdef foo(int[:,:] x): passr   r   r	   r	   r   Útest_def_arg!   r    zTestMemviewParsing.test_def_argc                 C   r   )Nzcdef foo(int[:,:] x): passr   r   r	   r	   r   Útest_cdef_arg$   r    z TestMemviewParsing.test_cdef_argc                 C   r   )Nz9cdef float[::ptr, ::direct & contig, 0::full & strided] xr   r   r	   r	   r   Útest_general_slice'   r    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    =þ