o
    £øÁfÕ	  ã                   @   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	   ú]/var/www/html/mig_web/myenv/lib/python3.10/site-packages/Cython/Compiler/Tests/TestMemView.pyÚ<lambda>   ó   
 z*TestMemviewParsing.parse.<locals>.<lambda>)Ú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>)Úshould_failÚErrorsÚCompileErrorÚassertEqualÚmessage_only)r   Ú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   ÚstatsÚ	base_typeÚ
assertTrueÚ
isinstanceÚMemoryViewSliceTypeNode)r   ÚtÚ	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])r3   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*   r2   r4   r5   r	   r	   r	   r   r      s    r   Ú__main__)ÚCython.TestUtilsr   ÚCython.Compiler.ErrorsÚCompilerr   ÚCython.Compiler.NodesÚ#Cython.Compiler.ParseTreeTransformsÚCython.Compiler.Bufferr   r6   ÚunittestÚmainr	   r	   r	   r   Ú<module>   s    =þ