U
    iâËdÖ  ã                   @   sp   d dl mZmZmZ d dlZd dlZd dlmZ d dl	m
Z
 dd„ Zdd„ ZG d	d
„ d
e
ƒZedkrle ¡  dS )é    )Úprint_functionÚabsolute_importÚdivisionN)Úguvectorize)ÚTestCasec                 C   s(   t d| jd dƒD ]}|d | |< qd S )Nr   é   ©ÚrangeÚshape)Úx_tÚy_1Út© r   úa/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/npyufunc/test_update_inplace.pyÚpy_replace_2nd   s    r   c                 C   sF   t d| jd ƒD ]0}|d | |< d|d  ||< d|d  ||< qd S )Nr   r   é   r   )Úx0_tÚx1_tZx2_tr   r   r   r   r   Úpy_update_3   s    r   c                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ ZdS )ÚTestUpdateInplaceTr   c                    sº   dd|ffD ]¨\‰ }‡ fdd„t |jd ƒD ƒ}dd„ |D ƒ}|||fžŽ  ||t |g¡fžŽ  tt||ƒƒD ]B\}\}	}
|r˜tjj|	|
d| d� qp| j|	|
k 	¡ d| d	� qpqd S )
N)Zf8TZf4c                    s   g | ]}t  d ˆ ¡‘qS )é
   )ÚnpZzeros)Ú.0Ú_©Zdtyper   r   Ú
<listcomp>   s     z:TestUpdateInplace._run_test_for_gufunc.<locals>.<listcomp>é   c                 S   s   g | ]}|  ¡ ‘qS r   )Úcopy)r   r   r   r   r   r      s     zinput %s)Úerr_msg)Úmsg)
r	   Zninr   ÚarrayÚ	enumerateÚzipÚtestingZassert_equalZassertFalseÚall)ÚselfÚgufuncZpy_funcÚexpect_f4_to_passÚzZexpect_to_passÚinputsZ	ex_inputsÚir   Zex_x_tr   r   r   Ú_run_test_for_gufunc   s    z&TestUpdateInplace._run_test_for_gufuncc                 C   sl   t dgddd�tƒ}| j|tdd� t dgdddd�tƒ}|  |t¡ t dgddd	d�tƒ}|  |t¡ d S )
Núvoid(f8[:], f8[:])ú(t),()T©ÚnopythonF©r'   ©r   ©r/   Úwritable_args)r   ©r   r   r+   ©r%   r&   r   r   r   Útest_update_inplace(   s*    ÿÿÿ ÿÿ
ÿÿz%TestUpdateInplace.test_update_inplacec                 C   s@   t dgddddd�tƒ}t dgddddd�tƒ}|  |t¡ d S )Nr,   r-   Tr1   )r/   r3   Úcacher4   r5   r   r   r   Útest_update_inplace_with_cache9   s     þþ þþz0TestUpdateInplace.test_update_inplace_with_cachec                 C   s(   t dgddddd�tƒ}|  |t¡ d S )Nr,   r-   Tr1   Úparallel©r/   r3   Útargetr4   r5   r   r   r   Útest_update_inplace_parallelD   s     þþz.TestUpdateInplace.test_update_inplace_parallelc                 C   sl   t dgddd�tƒ}| j|tdd� t dgdddd�tƒ}|  |t¡ t dgddd	d�tƒ}|  |t¡ d S )
Nz void(f8[:], f8[:], f8[:], f8[:])z(t),(t),(t),()Tr.   Fr0   )r   r   r   r2   )r   r   r   )r   r   r+   r5   r   r   r   Útest_update_inplace_3K   s.    þþ þþ þþz'TestUpdateInplace.test_update_inplace_3c              	   C   sâ   |   t¡� tdgdddd�tƒ W 5 Q R X |   t¡� tdgdddd�tƒ W 5 Q R X |   t¡� tdgdddd�tƒ W 5 Q R X |   t¡� tdgdddd�tƒ W 5 Q R X |   t¡� tdgddd	d
d�tƒ W 5 Q R X d S )Nr,   r-   T)r   r   r   é   r2   )r>   )éÿÿÿÿ)Zz_tr1   Úcudar:   )ÚassertRaisesÚ
ValueErrorr   r   ÚRuntimeErrorÚ	TypeError)r%   r   r   r   Útest_exceptions^   sF    
ÿÿ ÿÿ ÿÿ ÿÿ þþz!TestUpdateInplace.test_exceptionsN)Tr   )	Ú__name__Ú
__module__Ú__qualname__r+   r6   r8   r<   r=   rE   r   r   r   r   r      s     ÿ
r   Ú__main__)Ú
__future__r   r   r   ZunittestÚnumpyr   Znumbar   Znumba.tests.supportr   r   r   r   rF   Úmainr   r   r   r   Ú<module>   s   b