U
    b»{jÖ  ã                   @   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   úg/var/www/html/bwave/python/venv/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ÚzipZ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,   Tr0   )r.   r2   Úcacher3   r4   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,   Tr0   Úparallel©r.   r2   Útargetr3   r4   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-   Fr/   )r   r   r   r1   )r   r   r   )r   r   r*   r4   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   é   r1   )r=   )éÿÿÿÿ)Zz_tr0   Úcudar9   )ZassertRaisesÚ
ValueErrorr   r   ÚRuntimeErrorÚ	TypeError)r$   r   r   r   Útest_exceptions^   sF    
ÿÿ ÿÿ ÿÿ ÿÿ þþz!TestUpdateInplace.test_exceptionsN)Tr   )	Ú__name__Ú
__module__Ú__qualname__r*   r5   r7   r;   r<   rC   r   r   r   r   r      s     ÿ
r   Ú__main__)Ú
__future__r   r   r   ZunittestÚnumpyr   Znumbar   Znumba.tests.supportr   r   r   r   rD   Úmainr   r   r   r   Ú<module>   s   b