B
      ›\t  ã               @   sÆ   d dl mZ d dlmZ d dlZd dlZd dl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lmZ dd„ Zdd„ ZG dd„ dejƒZedkrÂe ¡  dS )é    )Úprint_functionN)Úcompile_isolated)Útypesé   )Útagc             C   s"   d}xt | ƒD ]}||7 }qW |S )Nr   )Úrange)ÚnÚsÚi© r   ú5lib/python3.7/site-packages/numba/tests/test_range.pyÚloop1   s    r   c             C   s$   d}xt | |ƒD ]}||7 }qW |S )Nr   )r   )ÚaÚbr	   r
   r   r   r   Úloop2   s    r   c             C   s&   d}xt | ||ƒD ]}||7 }qW |S )Nr   )r   )r   r   Úcr	   r
   r   r   r   Úloop3   s    r   c             C   s"   d}xt | ƒD ]}||7 }qW |S )Nr   )Zxrange)r   r	   r
   r   r   r   Úxrange_usecase#   s    r   c             C   s   t t| ƒƒS )N)Úlenr   )r   r   r   r   Ú
range_len1)   s    r   c             C   s   t t| |ƒƒS )N)r   r   )r   r   r   r   r   Ú
range_len2,   s    r   c             C   s   t t| ||ƒƒS )N)r   r   )r   r   r   r   r   r   Ú
range_len3/   s    r   )Úrange_iter_lenc             C   s   t tt| ƒƒƒS )N)r   Úiterr   )r   r   r   r   Úrange_iter_len13   s    r   c             C   s   t t| ƒƒS )N)r   r   )r   r   r   r   Úrange_iter_len26   s    r   c               @   s®   e Zd Zedƒdd„ ƒZedƒdd„ ƒZedƒdd„ ƒZedƒe e	j
dkd	¡d
d„ ƒƒZedƒdd„ ƒZedƒdd„ ƒZedƒdd„ ƒZedƒdd„ ƒZedƒdd„ ƒZdS )Ú	TestRangeZ	importantc             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_int16;   s    zTestRange.test_loop1_int16c             C   s8   t }t|tjtjgƒ}|j}|  |ddƒ|ddƒ¡ d S )Nr   é   )r   r   r   r   r   r    )r!   r"   r#   r$   r   r   r   Útest_loop2_int16B   s    zTestRange.test_loop2_int16c             C   sN   t }t|tjgd ƒ}|j}ddddg}x |D ]}|  ||Ž ||Ž ¡ q.W d S )Né   )r   é   r   )r)   é   r(   )iöÿÿÿiõÿÿÿiöÿÿÿ)iöÿÿÿiöÿÿÿéþÿÿÿ)r   r   r   Úint32r   ÚassertEqual)r!   r"   r#   r$   ÚarglistÚargsr   r   r   Útest_loop3_int32I   s    
zTestRange.test_loop3_int32)r(   ztest is Python 2-specificc             C   s0   t }t|tjfƒ}|j}|  |dƒ|dƒ¡ d S )Nr   )r   r   r   r,   r   r-   )r!   r"   r#   r$   r   r   r   Útest_xrangeW   s    zTestRange.test_xrangec             C   sl   t }tjtjtjg}dddg}xH|D ]@}t||gƒ}|j}x(|D ] }|  |||ƒƒ|||ƒƒ¡ q@W q$W d S )Nr   r   éûÿÿÿ)r   r   r   r,   Úint64r   r   r-   )r!   r"   Útypelistr.   Útypr#   r$   Úargr   r   r   Útest_range_len1_   s    


zTestRange.test_range_len1c                s~   t }tjtjtjg}dddg}xZ|D ]R‰ t|ˆ gd ƒ}|j}x6|D ].}t‡ fdd„|D ƒƒ}|  ||Ž ||Ž ¡ qDW q$W d S )N)r   r&   )r&   r   )r2   éÿÿÿÿr)   c             3   s   | ]}ˆ |ƒV  qd S )Nr   )Ú.0Úx)r5   r   r   ú	<genexpr>s   s    z,TestRange.test_range_len2.<locals>.<genexpr>)	r   r   r   r,   r3   r   r   Útupler-   )r!   r"   r4   r.   r#   r$   r/   Úargs_r   )r5   r   Útest_range_len2j   s    


zTestRange.test_range_len2c                s€   t }tjtjtjg}ddddg}xZ|D ]R‰ t|ˆ gd ƒ}|j}x6|D ].}t‡ fdd„|D ƒƒ}|  ||Ž ||Ž ¡ qFW q&W d S )N)r   r)   r   )r)   r*   r(   )iöÿÿÿiõÿÿÿiöÿÿÿ)iöÿÿÿiöÿÿÿr+   r(   c             3   s   | ]}ˆ |ƒV  qd S )Nr   )r9   r:   )r5   r   r   r;   „   s    z,TestRange.test_range_len3.<locals>.<genexpr>)	r   r   r   r,   r3   r   r   r<   r-   )r!   r"   r4   r.   r#   r$   r/   r=   r   )r5   r   Útest_range_len3v   s    

zTestRange.test_range_len3c       	      C   sp   t }t}tjtjtjg}dddg}xH|D ]@}t||gƒ}|j}x(|D ] }|  |||ƒƒ|||ƒƒ¡ qDW q(W d S )Nr   r   r2   )	r   r   r   r   r,   r3   r   r   r-   )	r!   Z
range_funcÚrange_iter_funcr4   r.   r5   r#   r$   r6   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(   é   r   )r   r   r   ZListZintpr   r-   r   )r!   r@   r#   r$   r.   r   r   r   Útest_range_iter_list“   s
    zTestRange.test_range_iter_listN)Ú__name__Ú
__module__Ú__qualname__r   r%   r'   r0   ÚunittestZskipIfÚsysÚversion_infor1   r7   r>   r?   rA   rC   r   r   r   r   r   9   s   r   Ú__main__)Z
__future__r   Znumba.unittest_supportZunittest_supportrG   rH   ZnumpyZnumba.compilerr   Znumbar   Zsupportr   r   r   r   r   r   r   r   Znumba.targets.rangeobjr   r   r   ZTestCaser   rD   Úmainr   r   r   r   Ú<module>   s&   b