B
     \                 @   s   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	m
Z
 ddlmZ dd Zd	d
 ZG dd deZedkr|e  dS )    )print_functiondivisionabsolute_importN)unittest_support)jittypeof   )TestCasec             C   s   | j | j| jfS )N)startstopstep)sl r   6lib/python3.7/site-packages/numba/tests/test_slices.pyslice_passing   s    r   c              G   s   t |  }|j|j|jfS )N)slicer
   r   r   )argsr   r   r   r   slice_constructor   s    r   c               @   s   e Zd Zdd Zdd ZdS )
TestSlicesc          	      s   fdd}t j}| d }tddt dddg}d	|fd
dg}ddg}x:t|||D ](\\}}\}	}
\}}|||	|||
| q\W d	|fddg}d	|fd
dg}ddg}x:t|||D ](\\}}\}	}
\}}|||	|||
| qW t  tddd W d	Q R X d	S )zC
        Check passing a slice object to a Numba function.
        c                s*   t | ||} |}||||f d S )N)r   assertPreciseEqual)abcdefr   got)cfuncselfr   r   check   s    z,TestSlices.test_slice_passing.<locals>.checkr   T)nopython)Nr   )*   r!   )r"   N)	   r#   )ii)Nr   )   r$   )iig      ?)	sysmaxsizer   r   	itertoolsproductZassertRaises	TypeErrorr   )r   r   	maxposint	maxnegintZstart_casesZ
stop_casesZ
step_casesr   r   r   r   r   r   r   )r   r   r   test_slice_passing   s(    

zTestSlices.test_slice_passingc             C   s   t j}| d }tddt}xdd|dffdd|dffdd|dffdd	d
d|dffddd|dffdd||dffdd|dffd|ddffdgD ]\}}|| }| || qW dS )z@
        Test the slice() constructor in nopython mode.
        r   T)r    r   r   )NN)r   N))N   )r   r-   r   ))r   r-   )r   r-   r   )NN   r.   ))Nr-   r.   )r   r-   r.   )r   Nr.   ))r   r-   r.   )r   r-   r.   )NNr"   r"   )
   Nr"   r/   )N   r"   r0   ))r/   r0   r"   )r/   r0   r"   N)r%   r&   r   r   r   )r   r*   r+   r   r   Zexpectedr   r   r   r   test_slice_constructor9   s$    
z!TestSlices.test_slice_constructorN)__name__
__module____qualname__r,   r1   r   r   r   r   r      s   $r   __main__)Z
__future__r   r   r   r'   r%   Znumbar   Zunittestr   r   Zsupportr	   r   r   r   r2   mainr   r   r   r   <module>   s   ?