U
    iâËd¹  ã                   @   sÒ   d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZG dd„ de jƒZedkrÎe  ¡  dS )é    N)Úcompile_isolated)ÚjitÚnjit)ÚtypesÚutils)Útag)Úlength_of_iteratorc                 C   s   d}t | ƒD ]}||7 }q|S ©Nr   ©Úrange)ÚnÚsÚi© r   úO/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_range.pyÚloop1   s    
r   c                 C   s    d}t | |ƒD ]}||7 }q|S r	   r
   )ÚaÚbr   r   r   r   r   Úloop2   s    
r   c                 C   s"   d}t | ||ƒD ]}||7 }q|S r	   r
   )r   r   Úcr   r   r   r   r   Úloop3   s    
r   c                 C   s   t t| ƒƒS ©N©Úlenr   )r   r   r   r   Ú
range_len1"   s    r   c                 C   s   t t| |ƒƒS r   r   )r   r   r   r   r   Ú
range_len2%   s    r   c                 C   s   t t| ||ƒƒS r   r   )r   r   r   r   r   r   Ú
range_len3(   s    r   c                 C   s   t tt| ƒƒƒS r   )r   Úiterr   ©r   r   r   r   Úrange_iter_len1*   s    r   c                 C   s   t t| ƒƒS r   )r   r   r   r   r   r   Úrange_iter_len2-   s    r    c                 C   sL   t | ƒ}t | |ƒ}t | ||ƒ}g }|||fD ]}| |j|j|jf¡ q,|S r   )r   ÚappendÚstartÚstopÚstep)r"   r#   r$   Úr1Úr2Úr3ÚtmpÚrr   r   r   Úrange_attrs0   s    
r*   c                    s6   t |ƒ}t ||ƒ}t |||ƒ}‡ fdd„|||fD ƒS )Nc                    s   g | ]}ˆ |k‘qS r   r   )Ú.0r)   ©Úvalr   r   Ú
<listcomp>=   s     z"range_contains.<locals>.<listcomp>r
   )r-   r"   r#   r$   r%   r&   r'   r   r,   r   Úrange_contains9   s    
r/   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú	TestRangec                 C   s0   t }t|tjgƒ}|j}|  |dƒ|dƒ¡ d S )Né   )r   r   r   Úint16Úentry_pointÚ
assertTrue©ÚselfÚpyfuncÚcresÚcfuncr   r   r   Útest_loop1_int16B   s    zTestRange.test_loop1_int16c                 C   s8   t }t|tjtjgƒ}|j}|  |ddƒ|ddƒ¡ d S )Né   é   )r   r   r   r2   r3   r4   r5   r   r   r   Útest_loop2_int16H   s    zTestRange.test_loop2_int16c                 C   sJ   t }t|tjgd ƒ}|j}ddddg}|D ]}|  ||Ž ||Ž ¡ q,d S )Né   ©r;   é   r;   ©r@   é   r>   ©éöÿÿÿiõÿÿÿrD   ©rD   rD   éþÿÿÿ)r   r   r   Úint32r3   ÚassertEqual)r6   r7   r8   r9   ÚarglistÚargsr   r   r   Útest_loop3_int32N   s    üzTestRange.test_loop3_int32c                 C   sd   t }tjtjtjg}dddg}|D ]<}t||gƒ}|j}|D ] }|  |||ƒƒ|||ƒƒ¡ q<q"d S ©Nr1   r   éûÿÿÿ)r   r   r2   rG   Úint64r   r3   rH   )r6   r7   ÚtypelistrI   Útypr8   r9   Úargr   r   r   Útest_range_len1[   s    
zTestRange.test_range_len1c                    sv   t }tjtjtjg}dddg}|D ]N‰ t|ˆ gd ƒ}|j}|D ].}t‡ fdd„|D ƒƒ}|  ||Ž ||Ž ¡ q@q"d S )N)r;   r<   )r<   r;   )rM   éÿÿÿÿr@   c                 3   s   | ]}ˆ |ƒV  qd S r   r   ©r+   Úx©rP   r   r   Ú	<genexpr>m   s     z,TestRange.test_range_len2.<locals>.<genexpr>)	r   r   r2   rG   rN   r   r3   ÚtuplerH   ©r6   r7   rO   rI   r8   r9   rJ   Úargs_r   rV   r   Útest_range_len2e   s    
zTestRange.test_range_len2c                    sx   t }tjtjtjg}ddddg}|D ]N‰ t|ˆ gd ƒ}|j}|D ].}t‡ fdd„|D ƒƒ}|  ||Ž ||Ž ¡ qBq$d S )Nr?   rA   rC   rE   r>   c                 3   s   | ]}ˆ |ƒV  qd S r   r   rT   rV   r   r   rW   }   s     z,TestRange.test_range_len3.<locals>.<genexpr>)	r   r   r2   rG   rN   r   r3   rX   rH   rY   r   rV   r   Útest_range_len3p   s    üzTestRange.test_range_len3c           	      C   sh   t }t}tjtjtjg}dddg}|D ]<}t||gƒ}|j}|D ] }|  |||ƒƒ|||ƒƒ¡ q@q&d S rL   )	r   r   r   r2   rG   rN   r   r3   rH   )	r6   Z
range_funcÚrange_iter_funcrO   rI   rP   r8   r9   rQ   r   r   r   Útest_range_iter_len1€   s    
zTestRange.test_range_iter_len1c                 C   sD   t }t|t tj¡gƒ}|j}dddddg}|  ||ƒt|ƒ¡ d S )Nr;   r@   r>   é   r1   )r    r   r   ÚListZintpr3   rH   r   )r6   r]   r8   r9   rI   r   r   r   Útest_range_iter_list‹   s
    zTestRange.test_range_iter_listc                 C   sN   t }ddddddg}t|tjfd ƒ}|j}|D ]}|  ||Ž ||Ž ¡ q0d S )N©r   r   r;   ©r   rS   r;   ©rS   r;   r;   ©rS   r_   r;   ©rS   r_   é
   ©r1   rM   rF   r>   )r*   r   r   rN   r3   rH   )r6   r7   rI   r8   r9   rQ   r   r   r   Útest_range_attrs’   s    ûzTestRange.test_range_attrsc                 C   sü   t }ddddddddd	g	}d
dg}dddddddddddddg}dddddg}ddd d!g}|| | | }t|ƒ}|D ].}	|D ]$}
|  ||
f|	žŽ ||
f|	žŽ ¡ q~qvd"didgd#d$g}t|d
d%�}|D ].}	|D ]$}
|  ||
f|	žŽ ||
f|	žŽ ¡ qÐqÈd S )&Nrb   )rS   r   r;   )r;   r   rS   rc   )r   r;   rS   rd   re   rf   rh   TFrD   iúÿÿÿrM   éüÿÿÿrF   rS   r   r;   r@   r_   r1   r<   rg   gš™™™™™ñ¿g      ð¿g        g      ð?gš™™™™™ñ?y      ð?        y      ð?      ð?yš™™™™™ñ?        y      ð?š™™™™™ñ?r   Úabc)r;   )Zforceobj)r/   r   rH   r   )r6   r7   rI   Z	bool_valsZint_valsZ
float_valsZcomplex_valsZvallistr9   rQ   r-   Znon_numeric_valsZ	cfunc_objr   r   r   Útest_range_contains    sD    ø
     ÿ
ÿ$zTestRange.test_range_containsN)Ú__name__Ú
__module__Ú__qualname__r:   r=   rK   rR   r[   r\   r^   ra   ri   rl   r   r   r   r   r0   @   s   
r0   Ú__main__)ZunittestÚsysÚnumpyZnumba.core.compilerr   Znumbar   r   Z
numba.corer   r   Znumba.tests.supportr   Znumba.cpython.rangeobjr   r   r   r   r   r   r   r   r    r*   r/   ZTestCaser0   rm   Úmainr   r   r   r   Ú<module>   s*   	 