
    Ae	                         d dl mZ d dlmc mZ d dl d dl d dl  G d de      Ze	dk(  rd dl
Z
 e
j                          yy)    )
CythonTestN)*c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestMemviewParsingc                 D      j                   fd      j                  S )Nc                  &    j                         S Nfragmentsselfs   Alib/python3.12/site-packages/Cython/Compiler/Tests/TestMemView.py<lambda>z*TestMemviewParsing.parse.<locals>.<lambda>   s    DMM!,<     )should_not_failroot)r   r   s   ``r   parsezTestMemviewParsing.parse
   s    ##$<=BBBr   c                       j                   fdt        j                        } j                  ||j                         y )Nc                  &    j                         S r	   r
   r   s   r   r   z2TestMemviewParsing.not_parseable.<locals>.<lambda>   s    T]]1%5 r   )should_failErrorsCompileErrorassertEqualmessage_only)r   expected_errorr   es   ` ` r   not_parseablez TestMemviewParsing.not_parseable   s0    58K8KL8r   c                 H    | j                  d       | j                  d       y )Ncdef int[:] xzcdef short int[:] xr   r   s    r   test_default_1dimz$TestMemviewParsing.test_default_1dim   s    

#$

)*r   c                 j    | j                  d       | j                  d       | j                  d       y )Nzcdef int[:,:,:,:,:] xz#cdef unsigned long int[:,:,:,:,:] xzcdef unsigned int[:,:,:,:,:] xr!   r"   s    r   test_default_ndimz$TestMemviewParsing.test_default_ndim   s)    

+,

9:

45r   c                 H    | j                  d       | j                  d       y )Nzcdef long double[0:] xzcdef int[0:] xr!   r"   s    r   test_zero_offsetz#TestMemviewParsing.test_zero_offset   s    

,-

$%r   c                 &    | j                  d       y )Nzcdef int[0:,0:,0:,0:] xr!   r"   s    r   test_zero_offset_ndimz(TestMemviewParsing.test_zero_offset_ndim   s    

-.r   c                 &    | j                  d       y )Nzdef foo(int[:,:] x): passr!   r"   s    r   test_def_argzTestMemviewParsing.test_def_arg!   s    

/0r   c                 &    | j                  d       y )Nzcdef foo(int[:,:] x): passr!   r"   s    r   test_cdef_argz TestMemviewParsing.test_cdef_arg$   s    

01r   c                 &    | j                  d       y )Nz9cdef float[::ptr, ::direct & contig, 0::full & strided] xr!   r"   s    r   test_general_slicez%TestMemviewParsing.test_general_slice'   s    

OPr   c                 L    | j                  dd       | j                  dd       y )NzDAn axis specification in memoryview declaration does not have a ':'.zcdef double[:foo, bar] xzcdef double[0:foo, bar] xr   r"   s    r   test_non_slice_memviewz)TestMemviewParsing.test_non_slice_memview*   s*    b+	-b,	.r   c                     | j                  d      }|j                  d   j                  }| j                  t	        |t
                     y )Nr    r   )r   stats	base_type
assertTrue
isinstanceMemoryViewSliceTypeNode)r   t	memv_nodes      r   
test_basiczTestMemviewParsing.test_basic0   s8    JJ'(GGAJ((	
9.EFGr   c                 (    | j                  dd       y )NExpected ']'z$cdef extern foo(object[int, ndim=2])r1   r"   s    r   disable_test_no_buf_argz*TestMemviewParsing.disable_test_no_buf_arg8   s    ?7	9r   c                     | j                  d       | j                  d       | j                  d       | j                  dd       | j                  dd       y )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"   s    r   disable_test_parse_sizeofz,TestMemviewParsing.disable_test_parse_sizeof<   sP    

%&

#$

'(?#	%?(	*r   N)__name__
__module____qualname__r   r   r#   r%   r'   r)   r+   r-   r/   r2   r;   r>   r@    r   r   r   r      sF    C9+6
&/12Q.H9*r   r   __main__)Cython.TestUtilsr   Cython.Compiler.ErrorsCompilerr   Cython.Compiler.Nodes#Cython.Compiler.ParseTreeTransformsCython.Compiler.Bufferr   rA   unittestmainrD   r   r   <module>rN      sA    ' ' ' # 1 $;* ;*z zHMMO r   