a
    b;                     @   sr   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rnd dlZe  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
     S Nfragment sselfr   p/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/Cython/Compiler/Tests/TestBuffer.py<lambda>       z)TestBufferParsing.parse.<locals>.<lambda>)Zshould_not_failroot)r   r
   r   r	   r   parse   s    zTestBufferParsing.parsec                    s*     fddtj}||j d S )Nc                      s
     S r   r   r   r	   r   r   r      r   z1TestBufferParsing.not_parseable.<locals>.<lambda>)Zshould_failErrorsCompileErrorassertEqualmessage_only)r   Z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   lenZpositional_args)r   tZbufnoder   r   r   
test_basic   s    
zTestBufferParsing.test_basicc                 C   s   |  d d S )Nz$cdef object[short unsigned int, 3] xr   r   r   r   r   test_type_pos   s    zTestBufferParsing.test_type_posc                 C   s   |  d d S )Nz0cdef object[foo=foo, dtype=short unsigned int] xr    r!   r   r   r   test_type_keyword    s    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   r)   r   r   r   nonfatal_error.   s    z TestBufferOptions.nonfatal_errorFc                 C   s   |dksJ d| }|| _ | j|t| t| gdj}|s|jd jjd }t|tsZJ |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Zpipeliner   object)r*   r   NormalizeTree	PostParser   r   bodyr   ZCVarDefNoder   r   r   Zbase_type_nodeCSimpleBaseTypeNoder   namer   )r   optsr*   r
   r   Zvardefbuftyper   r   r   
parse_opts3   s    zTestBufferOptions.parse_optsc                 C   s"   | j |dd | || jj d S )NT)r*   )r6   r   r)   r   )r   Zexpected_errr4   r   r   r   	non_parseC   s    zTestBufferOptions.non_parsec                 C   sL   |  d}| t|jt | |jjdko6|jjdk | d|j d S )Nzunsigned short int, 3r      	r6   r   r   Z
dtype_noder2   signedZlongnessr   ndimr   bufr   r   r   Z__test_basicH   s    
zTestBufferOptions.__test_basicc                 C   sL   |  d}| t|jt | |jjdko6|jjdk | d|j d S )Nz ndim=3, dtype=unsigned short intr   r8   r9   r:   r=   r   r   r   Z__test_dictN   s    
zTestBufferOptions.__test_dictc                 C   s&   |  d | td | td d S )Nzint, 2zint, 'a'zint, -34)r6   r7   ZERR_BUF_NDIMr!   r   r   r   Z__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
        r-   r   r9      )	r   r/   r0   r   r   r1   r   r   r<   )r   r   r   r   r   r   Z__test_use_DEFY   s    z TestBufferOptions.__test_use_DEFN)F)
r%   r&   r'   r+   r6   r7   Z_TestBufferOptions__test_basicZ_TestBufferOptions__test_dictZ_TestBufferOptions__test_ndimZ _TestBufferOptions__test_use_DEFr   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(   r%   Zunittestmainr   r   r   r   <module>   s   #;