U
    iâË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rŒe ¡  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   úR/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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=   Z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'   rF   )
r   Zstring_concatr   r   r   Úenable_pyobj_flagsr   r   r   r   rG   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   ÚpyobjectrK   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'   rM   r   r   rB   rA   )r   Zstring_slicingr   r   rP   rK   r   r   rQ   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   rK   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   rP   rK   r   Úeqr   Úne)r   rW   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   rU   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@   rE   rJ   rL   rR   rT   rV   r[   r]   r   r   r   r   r	      s   r	   Ú__main__)r   Únumpyr6   ZunittestZnumba.core.compilerr   r   Z
numba.corer   r   Znumba.testsr   Znumba.tests.supportr   r   rK   Zenable_pyobjectr,   Zforce_pyobjectr	   r^   Úmainr   r   r   r   Ú<module>   s    P