U
    ?h                     @   sZ   d dl Zd dlmZ d dlZd dlmZ ejdd ZG dd deZ	e
dkrVe  dS )	    N)cuda)CUDATestCasec                 C   s(   t d}|| jk r$| |  d7  < d S N   r   gridsize)xi r   U/var/www/html/venv/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_forall.pyfoo   s    

r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestForAllc                 C   s8   t d}| }t|j| t j||d  d S )N   r   )nparangecopyr   forallr   testingassert_array_almost_equal)selfarrorigr   r   r   test_forall_1   s    
zTestForAll.test_forall_1c                 C   sp   t ddd }tjdtjd}tjdtjd}| }d}||j||| tjj	||| | dd d S )	Nz%void(float32, float32[:], float32[:])c                 S   s0   t d}||jk r,| ||  ||  ||< d S r   r   )ar	   yr
   r   r   r   bar   s    

z%TestForAll.test_forall_2.<locals>.bar   )ZdtypegX9v?   )decimal)
r   jitr   r   Zfloat32r   r   r   r   r   )r   r   r	   r   Zoldyr   r   r   r   test_forall_2   s    
zTestForAll.test_forall_2c                 C   s   t d}td| d S )Nr   r   )r   r   r   r   )r   r   r   r   r   test_forall_no_work$   s    
zTestForAll.test_forall_no_workc              	   C   s6   |  t}td W 5 Q R X | dt|j d S )Nz,Can't create ForAll with negative task count)ZassertRaises
ValueErrorr   r   ZassertInstr	exception)r   Zraisesr   r   r   test_forall_negative_work*   s
    z$TestForAll.test_forall_negative_workN)__name__
__module____qualname__r   r!   r"   r'   r   r   r   r   r      s   r   __main__)numpyr   Znumbar   ZunittestZnumba.cuda.testingr   r    r   r   r(   mainr   r   r   r   <module>   s   
$