U
    ,d                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZmZ e Zde_e Zde_G dd deZed	kre  dS )
    N)compile_isolatedFlags)typesutils)usecases)TestCasetagTc                   @   s|   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d ZdS )TestUsecasesc                 C   sX   t j}t|tjtjf}|j}d}d}t||D ] }| || || d|f  q2d S )N)r      	   
      zargs %s)	r   Zandorr   r   int32entry_point	itertoolsproductassertEqual)selfpyfunccrcfuncxsysargs r   =/tmp/pip-unpacked-wheel-eu7e0c37/numba/tests/test_usecases.py
test_andor   s    zTestUsecases.test_andorc                 C   sR   t j}t|tjtjf}|j}d}d}t||D ]}| || || | q2d S Nr
   r   r   d      )	r   sum1dr   r   r   r   r   r   r   r   r   r   r   ssesr   r   r   r   
test_sum1d   s    zTestUsecases.test_sum1dc                    s   t jttjtjftd}|jd}d}t||D ] | 	      q6d  fdd} fdd}t
tj|dd	 t
tj|dd	 d S )
Nflagsr   )r   i  c                      s      d S Nr   r   )r   r   r   r   	bm_python8   s    z0TestUsecases.test_sum1d_pyobj.<locals>.bm_pythonc                      s      d S r)   r   r   )r   r   r   r   bm_numba;   s    z/TestUsecases.test_sum1d_pyobj.<locals>.bm_numbag?)Zmaxsec)r   r"   r   r   r   force_pyobj_flagsr   r   r   r   printr   Z	benchmark)r   r   r$   r%   r*   r+   r   )r   r   r   r   test_sum1d_pyobj*   s    zTestUsecases.test_sum1d_pyobjc                 C   sR   t j}t|tjtjf}|j}d}d}t||D ]}| || || | q2d S r   )	r   Zsum2dr   r   r   r   r   r   r   r#   r   r   r   
test_sum2dA   s    zTestUsecases.test_sum2dc                 C   sR   t j}t|tjtjf}|j}d}d}t||D ]}| || || | q2d S r   )	r   Zwhile_countr   r   r   r   r   r   r   r#   r   r   r   test_while_countL   s    zTestUsecases.test_while_countc           
      C   sx   t j}ttjdd}t|||f}|j}d}|D ]@}tj|dd}t	|}||f}	||	  | j
||t|	d q2d S )Nr   A)r   r   r   r    r   Zdtypemsg)r   Zcopy_arraysr   Arrayr   r   r   nparange
empty_likeassertPreciseEqualstr)
r   r   	arraytyper   r   ndandabr   r   r   r   test_copy_arraysW   s    
zTestUsecases.test_copy_arraysc                 C   s   t j}ttjdd}t|||f}|j}d}|D ]T}|\}}tj|| dd	||}	t
|	}
|	|
f}||  | j|	|
t|d q2d S )N   r1   ))r   r   )r   r   )rA      )      r   r2   r3   )r   Zcopy_arrays2dr   r5   r   r   r   r6   r7   Zreshaper8   r9   r:   )r   r   r;   r   r   r<   r=   d1Zd2r>   r?   r   r   r   r   test_copy_arrays2dg   s    
zTestUsecases.test_copy_arrays2dc           	      C   sX   t |tjtjf}|j}d}d}t||D ]&\}}||f}| || || | q,d S )Nr
   r   r   )r   r   r   r   r   r   r   	r   r   r   r   r   r   xyr   r   r   r   
run_ifelsex   s    zTestUsecases.run_ifelsec           	      C   sb   t j}t|tjtjftd}|j}d}d}t||D ]&\}}||f}| 	|| || | q6d S )Nr'   rG   )
r   Zstring_concatr   r   r   enable_pyobj_flagsr   r   r   r   rH   r   r   r   test_string_concat   s    zTestUsecases.test_string_concatc                 C   sj   t j}t|tjftd}|j}d}| |||| d}| |||| d}| |||| d S )Nr'   1234561 )r   Z
string_lenr   r   pyobjectrL   r   r   r   r   r   r   Ztest_strr   r   r   test_string_len   s    
zTestUsecases.test_string_lenc                 C   s~   t j}t|tjfd td}|j}d}| ||dd||dd | ||dd||dd | ||dd||dd d S )N   r'   rN   r   r   rB   rA   )r   Zstring_slicingr   r   rQ   rL   r   r   rR   r   r   r   test_string_slicing   s    z TestUsecases.test_string_slicingc                 C   sb   t j}t|tjftd}|j}| |d|d t|tjftd}|j}| |d|d d S )Nr'   r   g?)	r   Zstring_conversionr   r   r   rL   r   r   float32)r   r   r   r   r   r   r   test_string_conversion   s    

z#TestUsecases.test_string_conversionc                 C   s   dd l }tj}t|tjtjtjftd}|j}d}d}|j}| 	|||||||| d}d}|j}| 	|||||||| d}d}|j
}| 	|||||||| d}d}|j
}| 	|||||||| d S )Nr   r'   Z123Z456)operatorr   Zstring_comparisonr   r   rQ   rL   r   eqr   ne)r   rX   r   r   r   Z	test_str1Z	test_str2opr   r   r   test_string_comparisons   s<    



z$TestUsecases.test_string_comparisonsc                 C   sH   t j}t|tjf}|j}d}|D ] }|f}| || || | q"d S )N)g      r   g      ?)r   Zblackscholes_cndr   r   rV   r   r   )r   r   r   r   Zdsdr   r   r   r   test_blackscholes_cnd   s    z"TestUsecases.test_blackscholes_cndN)__name__
__module____qualname__r   r&   r.   r/   r0   r@   rF   rK   rM   rS   rU   rW   r\   r^   r   r   r   r   r	      s   r	   __main__)r   Znumpyr6   ZunittestZnumba.core.compilerr   r   Z
numba.corer   r   Znumba.testsr   Znumba.tests.supportr   r   rL   Zenable_pyobjectr,   Zforce_pyobjectr	   r_   mainr   r   r   r   <module>   s    P