o
    &[h<                     @   sv   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G dd deZ	e
dkr9d dlZe  dS dS )	    )
CythonTestN)*c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestBufferParsingc                    s     fddjS )Nc                      
     S Nfragment sselfr	   U/var/www/vscode/pina/lib/python3.10/site-packages/Cython/Compiler/Tests/TestBuffer.py<lambda>      
 z)TestBufferParsing.parse.<locals>.<lambda>)should_not_failroot)r   r   r	   r
   r   parse   s   zTestBufferParsing.parsec                    s*     fddtj}||j d S )Nc                      r   r   r   r	   r
   r	   r   r      r   z1TestBufferParsing.not_parseable.<locals>.<lambda>)should_failErrorsCompileErrorassertEqualmessage_only)r   expected_errorr   er	   r
   r   not_parseable   s   zTestBufferParsing.not_parseablec                 C   s<   |  d}|jd j}| t|t | dt|j d S )Nz(cdef object[float, 4, ndim=2, foo=foo] xr      )	r   stats	base_type
assertTrue
isinstanceTemplatedTypeNoder   lenpositional_args)r   tbufnoder	   r	   r   
test_basic   s   
zTestBufferParsing.test_basicc                 C      |  d d S )Nz$cdef object[short unsigned int, 3] xr   r   r	   r	   r   test_type_pos      zTestBufferParsing.test_type_posc                 C   r&   )Nz0cdef object[foo=foo, dtype=short unsigned int] xr'   r(   r	   r	   r   test_type_keyword    r*   z#TestBufferParsing.test_type_keywordc                 C   s   |  dd d S )Nz%Non-keyword arg following keyword argzcdef object[foo=1, 2] x)r   r(   r	   r	   r   test_pos_after_key#   s   z$TestBufferParsing.test_pos_after_keyN)	__name__
__module____qualname__r   r   r%   r)   r+   r,   r	   r	   r	   r   r      s    r   c                   @   sF   e Zd Zdd ZdddZdd Zdd	 Zd
d Zdd Zdd Z	dS )TestBufferOptionsc                 C   s   || _ | | j d S r   )errorr   expect_error)r   r1   r	   r	   r   nonfatal_error.   s   z TestBufferOptions.nonfatal_errorFc                 C   s   |dksJ d| }|| _ | j|t| t| gdj}|sK|jd jjd }t|ts-J |j	}| 
t|t | 
t|jt | d|jj |S | 
t|jd jjdk d S )N zdef f():
  cdef object[%s] xpipeliner   object)r2   r   NormalizeTree	PostParser   r   bodyr   CVarDefNoder   r   r    base_type_nodeCSimpleBaseTypeNoder   namer!   )r   optsr2   r   r   vardefbuftyper	   r	   r   
parse_opts3   s    zTestBufferOptions.parse_optsc                 C   s"   | j |dd | || jj d S )NT)r2   )rB   r   r1   r   )r   expected_errr?   r	   r	   r   	non_parseC   s   zTestBufferOptions.non_parsec                 C   L   |  d}| t|jt | |jjdko|jjdk | d|j d S )Nzunsigned short int, 3r      	rB   r   r   
dtype_noder=   signedlongnessr   ndimr   bufr	   r	   r   __test_basicH      
zTestBufferOptions.__test_basicc                 C   rE   )Nz ndim=3, dtype=unsigned short intr   rF   rG   rH   rM   r	   r	   r   __test_dictN   rP   zTestBufferOptions.__test_dictc                 C   s&   |  d | td | td d S )Nzint, 2zint, 'a'zint, -34)rB   rD   ERR_BUF_NDIMr(   r	   r	   r   __test_ndimT   s   
zTestBufferOptions.__test_ndimc                 C   sZ   | j dt| t| gdj}|jd jj}| |d jjdk | |d jjdk d S )Nz
        DEF ndim = 3
        def f():
            cdef object[int, ndim] x
            cdef object[ndim=ndim, dtype=int] y
        r5   r   rG      )	r   r8   r9   r   r   r:   r   r   rL   )r   r#   r   r	   r	   r   __test_use_DEFY   s   z TestBufferOptions.__test_use_DEFN)F)
r-   r.   r/   r3   rB   rD   _TestBufferOptions__test_basic_TestBufferOptions__test_dict_TestBufferOptions__test_ndim _TestBufferOptions__test_use_DEFr	   r	   r	   r   r0   +   s    
r0   __main__)Cython.TestUtilsr   Cython.Compiler.ErrorsCompilerr   Cython.Compiler.Nodes#Cython.Compiler.ParseTreeTransformsCython.Compiler.Bufferr   r0   r-   unittestmainr	   r	   r	   r   <module>   s    #<