B
     \                 @   s   d dl mZ d dlZd dlZd dlm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ed e
 Zed	 G d
d deZedkre  dS )    )print_functionN)compile_isolatedFlags)typesutils)usecases   )TestCasetagZenable_pyobjectZforce_pyobjectc               @   s   e Zd Zeddd Zeddd Zdd Zeddd	 Zedd
d Zdd Z	ed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 )TestUsecasesZ	importantc             C   s\   t j}t|tjtjf}|j}d}d}x0t||D ] }| || || d|f  q4W d S )N)r   r   	   
      zargs %s)	r   Zandorr   r   int32entry_point	itertoolsproductassertEqual)selfpyfunccrcfuncxsysargs r   8lib/python3.7/site-packages/numba/tests/test_usecases.py
test_andor   s    zTestUsecases.test_andorc             C   sV   t j}t|tjtjf}|j}d}d}x*t||D ]}| || || | q4W 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"   s    zTestUsecases.test_sum1dc                s   t jttjtjftd}|jd}d}x*t||D ] | 	      q8W d  fdd} fdd}t
tj|dd	 t
tj|dd	 d S )
N)flags)r   r   r   r   r    )r   i  c                  s      d S )Nr   r   )r   r   r   r   	bm_python<   s    z0TestUsecases.test_sum1d_pyobj.<locals>.bm_pythonc                  s      d S )Nr   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   sV   t j}t|tjtjf}|j}d}d}x*t||D ]}| || || | q4W d S )N)r   r   r   r   r    )	r   Zsum2dr   r   r   r   r   r   r   )r   r   r   r   r"   r#   r   r   r   r   
test_sum2dE   s    zTestUsecases.test_sum2dc             C   sV   t j}t|tjtjf}|j}d}d}x*t||D ]}| || || | q4W d S )N)r   r   r   r   r    )	r   Zwhile_countr   r   r   r   r   r   r   )r   r   r   r   r"   r#   r   r   r   r   test_while_countQ   s    zTestUsecases.test_while_countc       
      C   s|   t j}ttjdd}t|||f}|j}d}xH|D ]@}tj|dd}t	|}||f}	||	  | j
||t|	d q4W d S )Nr   A)r   r   r   r   r   )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_arrays]   s    

zTestUsecases.test_copy_arraysc             C   s   t j}ttjdd}t|||f}|j}d}x\|D ]T}|\}}tj|| dd	||}	t
|	}
|	|
f}||  | j|	|
t|d q4W d S )N   r-   ))r   r   )r   r   )r<      )      r   )r.   )r/   )r   Zcopy_arrays2dr   r0   r   r   r   r1   r2   Zreshaper3   r4   r5   )r   r   r6   r   r   r7   r8   Zd1Zd2r9   r:   r   r   r   r   test_copy_arrays2dm   s    

zTestUsecases.test_copy_arrays2dc       	      C   s\   t |tjtjf}|j}d}d}x6t||D ]&\}}||f}| || || | q.W 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_ifelse   s    zTestUsecases.run_ifelsec       	      C   sf   t j}t|tjtjftd}|j}d}d}x6t||D ]&\}}||f}| 	|| || | q8W d S )N)r%   )r   r   r   )
r   Zstring_concatr   r   r   enable_pyobj_flagsr   r   r   r   )	r   r   r   r   r   r   rA   rB   r   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 )N)r%   1234561 )r   Z
string_lenr   r   pyobjectrD   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%   rF   r   r   r=   r<   )r   Zstring_slicingr   r   rI   rD   r   r   )r   r   r   r   rJ   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 )N)r%   r   g?)	r   Zstring_conversionr   r   r   rD   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   rI   rD   r   eqr   ne)r   rP   r   r   r   Z	test_str1Z	test_str2opr   r   r   test_string_comparisons   s2    z$TestUsecases.test_string_comparisonsc             C   sL   t j}t|tjf}|j}d}x(|D ] }|f}| || || | q$W d S )N)g      r   g      ?)r   Zblackscholes_cndr   r   rN   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*   r+   r,   r;   r@   rC   rE   rK   rM   rO   rT   rV   r   r   r   r   r      s   r   __main__)Z
__future__r   r   Znumpyr1   Znumba.unittest_supportZunittest_supportZunittestZnumba.compilerr   r   Znumbar   r   Znumba.testsr   Zsupportr	   r
   rD   setr(   r   rW   mainr   r   r   r   <module>   s   

 U