B
     \&                 @   s   d dl mZ d dlmZ d dlZd dlZd dlm	Z	 G dd dej
ZG dd dej
ZG dd	 d	ej
ZG d
d dej
Zedkre  dS )    )print_functionN)Arrayc               @   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 )TestSlicingc             C   sV   d}xL|D ]D}|j | |j | kr
|jdkr8|jdkr8q
| d|j |j f  q
W d S )N)ZC_CONTIGUOUSZF_CONTIGUOUSr   z*contiguous flag mismatch:
got=%s
expect=%s)flagssizeZfail)selfarrnparrZattrsattr r   :lib/python3.7/site-packages/numba/tests/test_dummyarray.pyassertSameContig
   s    
zTestSlicing.assertSameContigc             C   s   t d}td|j|j|jj}| || d}xP|D ]H}||d  }||d  }| || | 	|j|j | 	|j|j q8W d S )N   r   )r         )
npemptyr   	from_descshapestridesdtypeitemsizer   assertEqual)r   r	   r   xxxexpectgotr   r   r   test_slice0_1d   s    


zTestSlicing.test_slice0_1dc             C   s|   t d}td|j|j|jj}d}xP|D ]H}|d | }|d | }| || | 	|j|j | 	|j|j q,W d S )Nr   r   )r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r	   r   r   r   r   r   r   r   r   test_slice1_1d%   s    


zTestSlicing.test_slice1_1dc             C   s   t d}td|j|j|jj}d}x\t	||D ]L\}}||| }||| }| 
|| | |j|j | |j|j q4W d S )Nr   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   	itertoolsproductr   r   )r   r	   r   r   r   yr   r   r   r   r   test_slice2_1d1   s    

zTestSlicing.test_slice2_1dc             C   s   t d}td|j|j|jj}d}xP|D ]H}||d  }||d  }| || | 	|j|j | 	|j|j q,W xlt
||D ]\\}}||d |d f }||d |d f }| || | 	|j|j | 	|j|j qW d S )N)r      r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r!   r"   )r   r	   r   r   r   r   r   r#   r   r   r   test_slice0_2d?   s     


zTestSlicing.test_slice0_2dc             C   s   t d}td|j|j|jj}d}xP|D ]H}|d | }|d | }| |j|j | |j|j | 	|| q,W xlt
||D ]\\}}|d |d |f }|d |d |f }| |j|j | |j|j | 	|| qW d S )N)r   r%   r   )r   r   r   )r   r   r   r   r   r   r   r   r   r   r!   r"   )r   r	   r   r   r   r   r   r#   r   r   r   test_slice1_2dR   s     


zTestSlicing.test_slice1_2dc             C   s  t d}td|j|j|jj}d}xtt	||||D ]`\}}}}|||||f }|||||f }	| 
|	| | |	j|j | |	j|j q8W xlt	||D ]\\}
}|||||f }|||||f }	| 
|	| | |	j|j | |	j|j qW d S )N)r   r%   r   )r   r   r   )r   r   r   r   r   r   r   r   r!   r"   r   r   )r   r	   r   r   stuvr   r   r   r#   r   r   r   test_slice2_2de   s     

zTestSlicing.test_slice2_2dc             C   s   t d}td|j|j|jj}d}xT|D ]L}|d d | }|d d | }| || | 	|j|j | 	|j|j q,W d S )Nr   r   )r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r	   r   r   r   r   r   r   r   r   test_strided_1dz   s    


zTestSlicing.test_strided_1dc             C   s   t d}td|j|j|jj}d}xtt	||D ]d\}}|d d |d d |f }|d d |d d |f }| 
|| | |j|j | |j|j q4W d S )N)r   r%   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r!   r"   r   r   )r   r	   r   r   abr   r   r   r   r   test_strided_2d   s    

zTestSlicing.test_strided_2dc       	      C   s   t d}td|j|j|jj}d}xt	|||D ]v\}}}|d d |d d |d d |f }|d d |d d |d d |f }| 
|| | |j|j | |j|j q6W d S )N)r   r%      r   )r   r   r   r   )r   r   r   r   r   r   r   r   r!   r"   r   r   )	r   r	   r   r   r.   r/   cr   r   r   r   r   test_strided_3d   s    

  zTestSlicing.test_strided_3dN)__name__
__module____qualname__r   r   r    r$   r&   r'   r,   r-   r0   r3   r   r   r   r   r      s   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestReshapec             C   sb   t d}td|j|j|jj}|dd}|ddd }| 	|j|j | 	|j|j d S )N)r   r%   r   r%   r   )
r   r   r   r   r   r   r   r   reshaper   )r   r	   r   r   r   r   r   r   test_reshape_2d2d   s    

zTestReshape.test_reshape_2d2dc             C   s^   t d}td|j|j|jj}|d}|dd }| 	|j|j | 	|j|j d S )N)r   r%   r      )
r   r   r   r   r   r   r   r   r8   r   )r   r	   r   r   r   r   r   r   test_reshape_2d1d   s    


zTestReshape.test_reshape_2d1dc             C   sf   t d}td|j|j|jj}|ddd}|dddd }| 	|j|j | 	|j|j d S )N)   r   r%   r   r%   r<   r   )
r   r   r   r   r   r   r   r   r8   r   )r   r	   r   r   r   r   r   r   test_reshape_3d3d   s    

zTestReshape.test_reshape_3d3dc             C   sb   t d}td|j|j|jj}|dd}|ddd }| 	|j|j | 	|j|j d S )N)r<   r   r%   r      r%   )
r   r   r   r   r   r   r   r   r8   r   )r   r	   r   r   r   r   r   r   test_reshape_3d2d   s    

zTestReshape.test_reshape_3d2dc             C   s^   t d}td|j|j|jj}|d}|dd }| 	|j|j | 	|j|j d S )N)r<   r   r%   r   <   )
r   r   r   r   r   r   r   r   r8   r   )r   r	   r   r   r   r   r   r   test_reshape_3d1d   s    


zTestReshape.test_reshape_3d1dN)r4   r5   r6   r9   r;   r=   r?   rA   r   r   r   r   r7      s
   				r7   c               @   s   e Zd Zdd Zdd ZdS )TestSqueezec                s~   t d}td|j|j|jj} fdd}||| || d |  x*dD ]"}||j|dd |j|d qTW d S )N)r   r   r   r   r   r<   r   c                s$     | j|j   | j|j d S )N)r   r   r   )Zarr1Zarr2)r   r   r   _assert_equal_shape_strides   s    z=TestSqueeze.test_squeeze.<locals>._assert_equal_shape_strides)r   r   r   )r   r   )r   r   )r   r   )r   r   r   )axis)	r   r   r   r   r   r   r   r   squeeze)r   r	   r   rC   rD   r   )r   r   test_squeeze   s    


zTestSqueeze.test_squeezec          	   C   sj   t d}td|j|j|jj}| t	 |j
dd W d Q R X | t	 |j
dd W d Q R X d S )N)r   r   r   r   r   r<   r   r   )rD   )r   r<   )r   r   r   r   r   r   r   r   ZassertRaises
ValueErrorrE   )r   r	   r   r   r   r   test_squeeze_invalid_axis   s    
z%TestSqueeze.test_squeeze_invalid_axisN)r4   r5   r6   rF   rH   r   r   r   r   rB      s   rB   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestExtentc             C   sJ   t d}td|j|j|jj}|j\}}| 	|| |j
|jj  d S )Nr   r   )r   r   r   r   r   r   r   r   extentr   r   )r   r	   r   r(   er   r   r   test_extent_1d   s
    


zTestExtent.test_extent_1dc             C   sJ   t d}td|j|j|jj}|j\}}| 	|| |j
|jj  d S )N)r   r%   r   )r   r   r   r   r   r   r   r   rJ   r   r   )r   r	   r   r(   rK   r   r   r   test_extent_2d   s
    


zTestExtent.test_extent_2dc             C   sB   t d}td|j|j|jj}t|	 \}| 
||j d S )Nr   r   )r   r   r   r   r   r   r   r   listiter_contiguous_extentr   rJ   )r   r	   r   extr   r   r   test_extent_iter_1d   s
    

zTestExtent.test_extent_iter_1dc             C   sd   t d}td|j|j|jj}t|	 \}| 
||j | 
tt|d d d 	 d d S )N)r   r%   r   r   )r   r   r   r   r   r   r   r   rN   rO   r   rJ   len)r   r	   r   rP   r   r   r   test_extent_iter_2d   s    

zTestExtent.test_extent_iter_2dN)r4   r5   r6   rL   rM   rQ   rS   r   r   r   r   rI      s   rI   __main__)Z
__future__r   Znumba.unittest_supportZunittest_supportZunittestr!   Znumpyr   Znumba.dummyarrayr   ZTestCaser   r7   rB   rI   r4   mainr   r   r   r   <module>   s    / 