a
    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   q/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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                      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   =