o
    8ήc                     @   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rHe  dS 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  qd S )N)r      	   
      zargs %s)	r   andorr   r   int32entry_point	itertoolsproductassertEqual)selfpyfunccrcfuncxsysargs r   @/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_usecases.py
test_andor   s   zTestUsecases.test_andorc                 C   R   t j}t|tjtjf}|j}d}d}t||D ]}| || || | qd 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      zTestUsecases.test_sum1dc                    s   t jttjtjftd}|jd}d}t||D ] | 	      qd  fdd} fdd}t
tj|dd	 t
tj|dd	 d S )
Nflagsr!   )r   i  c                            d S Nr   r   )r   r   r   r   	bm_python8      z0TestUsecases.test_sum1d_pyobj.<locals>.bm_pythonc                      r,   r-   r   r   )r   r   r   r   bm_numba;   r/   z/TestUsecases.test_sum1d_pyobj.<locals>.bm_numbag?)maxsec)r   r$   r   r   r   force_pyobj_flagsr   r   r   r   printr   	benchmark)r   r   r&   r'   r.   r0   r   )r   r   r   r   test_sum1d_pyobj*   s   zTestUsecases.test_sum1d_pyobjc                 C   r   r    )	r   sum2dr   r   r   r   r   r   r   r%   r   r   r   
test_sum2dA   r)   zTestUsecases.test_sum2dc                 C   r   r    )	r   while_countr   r   r   r   r   r   r   r%   r   r   r   test_while_countL   r)   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 qd S )Nr   A)r   r   r   r"   r   dtypemsg)r   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j|| dd	||}	t
|	}
|	|
f}||  | j|	|
t|d qd S )N   r:   ))r   r   )r   r   )rL      )      r   r;   r=   )r   copy_arrays2dr   r@   r   r   r   rA   rB   reshaperC   rD   rE   )r   r   rF   r   r   rG   rH   d1d2rI   rJ   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}| 	|| || | qd S )Nr*   rU   )
r   string_concatr   r   r   enable_pyobj_flagsr   r   r   r   rV   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   
string_lenr   r   pyobjectr[   r   r   r   r   r   r   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*   r]   r   r   rM   rL   )r   string_slicingr   r   ra   r[   r   r   rb   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   string_conversionr   r   r   r[   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*   123456)operatorr   string_comparisonr   r   ra   r[   r   eqr   ne)r   rm   r   r   r   	test_str1	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   blackscholes_cndr   r   ri   r   r   )r   r   r   r   dsdr   r   r   r   test_blackscholes_cnd   s   z"TestUsecases.test_blackscholes_cndN)__name__
__module____qualname__r   r(   r5   r7   r9   rK   rT   rY   r\   rd   rg   rj   rt   rx   r   r   r   r   r	      s    r	   __main__)r   numpyrA   unittestnumba.core.compilerr   r   
numba.corer   r   numba.testsr   numba.tests.supportr   r   r[   enable_pyobjectr2   force_pyobjectr	   ry   mainr   r   r   r   <module>   s      P