o
    8Î®c  ã                   @   sh   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
 G dd„ de
ƒZedkr2e ¡  dS dS )	z<
Tests issues or edge cases for producing invalid NRT refct
é    N)Únjit)Úrtsys)ÚTestCasec                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestNrtRefCtc                 C   s   t  ¡  d S )N)ÚgcÚcollect)Úself© r	   úA/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_nrt_refct.pyÚsetUp   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   Ú
zeros_liker   Úshape)Úarr1Útest1Útmp_arrr   r	   r	   r
   Ú%if_with_allocation_and_initializationD   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_lifetime@   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   Úonesr   r   r   r   r   )r   r/   r+   r   r   r	   r	   r
   Útest_del_at_beginning_of_loopX   s   


ÿz*TestNrtRefCt.test_del_at_beginning_of_loopN)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r,   r1   r	   r	   r	   r
   r      s    r   Ú__main__)Ú__doc__r   Únumpyr   ÚunittestÚnumbar   Únumba.core.runtimer   Únumba.tests.supportr   r   r2   Úmainr	   r	   r	   r
   Ú<module>   s    aÿ