U
    Ã9%e_  ã                   @   sj   d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZ G dd„ dee
ƒZedkrfe ¡  dS )	z<
Tests issues or edge cases for producing invalid NRT refct
é    N)Únjit)Úrtsys)ÚTestCaseÚEnableNRTStatsMixinc                       s<   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Z‡  ZS )ÚTestNrtRefCtc                    s   t  ¡  tt| ƒ ¡  d S )N)ÚgcZcollectÚsuperr   ÚsetUp)Úself©Ú	__class__© úY/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_nrt_refct.pyr	      s    zTestNrtRefCt.setUpc                 C   sT   t dd„ ƒ}d}t ¡ }||ƒ t ¡ }|  |j|j |¡ |  |j|j |¡ dS )z"
        Test issue #1291
        c                 S   s   t | ƒD ]}t d¡}qdS ©Né   r   )ÚrangeÚnpÚzeros)ÚnÚiÚtempr   r   r   Úfoo   s    z(TestNrtRefCt.test_no_return.<locals>.fooé
   N©r   r   Úget_allocation_statsÚassertEqualÚallocÚfree)r
   r   r   Ú
init_statsÚ	cur_statsr   r   r   Útest_no_return   s    
zTestNrtRefCt.test_no_returnc                 C   sP   t dd„ ƒ}t ¡ }|dƒ t ¡ }|  |j|j d¡ |  |j|j d¡ dS )z"
        Test issue #1297
        c                 S   s>   t  | df¡}t| ƒD ]}|| }qt| ƒD ]}|| }q,dS r   )r   r   r   )r   Úxr   Úyr   r   r   Úg.   s    

z6TestNrtRefCt.test_escaping_var_init_in_loop.<locals>.gr   é   Nr   )r
   r#   r   r   r   r   r   Útest_escaping_var_init_in_loop)   s    
z+TestNrtRefCt.test_escaping_var_init_in_loopc                 C   sR   t dd„ ƒ}tj d¡}t ¡ }||dƒ t ¡ }|  |j|j |j|j ¡ dS )z"
        Test issue #1573
        c                 S   s0   t  | ¡}t|jd ƒD ]}q|r,t  | ¡ |S )Nr   )r   Z
zeros_liker   Úshape)Zarr1Ztest1Ztmp_arrr   r   r   r   Ú%if_with_allocation_and_initializationE   s    

z`TestNrtRefCt.test_invalid_computation_of_lifetime.<locals>.if_with_allocation_and_initialization)é   r(   FN)r   r   Úrandomr   r   r   r   r   )r
   r'   Úarrr   r   r   r   r   Ú$test_invalid_computation_of_lifetimeA   s    


ÿz1TestNrtRefCt.test_invalid_computation_of_lifetimec                 C   sN   t dd„ ƒ}t d¡}t ¡ }||ƒ t ¡ }|  |j|j |j|j ¡ dS )z"
        Test issue #1734
        c                 S   s2   d}dD ]$}| | }|| dkr||| 7 }q|S )Nr   )r   r$   r$   r   )r*   Úresr   Útr   r   r   Úf]   s    z5TestNrtRefCt.test_del_at_beginning_of_loop.<locals>.f)r   r   N)r   r   Zonesr   r   r   r   r   )r
   r.   r*   r   r   r   r   r   Útest_del_at_beginning_of_loopY   s    


ÿz*TestNrtRefCt.test_del_at_beginning_of_loop)	Ú__name__Ú
__module__Ú__qualname__r	   r    r%   r+   r/   Ú__classcell__r   r   r   r   r      s
   r   Ú__main__)Ú__doc__r   Únumpyr   ZunittestZnumbar   Znumba.core.runtimer   Znumba.tests.supportr   r   r   r0   Úmainr   r   r   r   Ú<module>   s   b