o
    8ήc#3                     @   s   d dl 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
G dd de jZedkrIe   dS dS )    N)Arrayc                   @   sd   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d ZdS )TestSlicingc                 C   sR   d}|D ]"}|j | |j | kr&|jdkr|jdkrq| d|j |j f  qd S )N)C_CONTIGUOUSF_CONTIGUOUSr   z*contiguous flag mismatch:
got=%s
expect=%s)flagssizefail)selfarrnparrattrsattr r   B/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_dummyarray.pyassertSameContig	   s   
zTestSlicing.assertSameContigc                 C   s   t d}td|j|j|jj}| || d}|D ]$}||d  }||d  }| || | 	|j|j | 	|j|j q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   sx   t d}td|j|j|jj}d}|D ]$}|d | }|d | }| || | 	|j|j | 	|j|j qd S 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}t	||D ]&\}}||| }||| }| 
|| | |j|j | |j|j qd S r   r   r   r   r   r   r   r   r   	itertoolsproductr   r   )r	   r   r
   r!   r"   yr#   r$   r   r   r   test_slice2_1d0   s   
zTestSlicing.test_slice2_1dc                 C   s   t d}td|j|j|jj}d}|D ]$}||d  }||d  }| || | 	|j|j | 	|j|j qt
||D ].\}}||d |d f }||d |d f }| || | 	|j|j | 	|j|j q@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}|D ]$}|d | }|d | }| |j|j | |j|j | 	|| qt
||D ].\}}|d |d |f }|d |d |f }| |j|j | |j|j | 	|| q@d S Nr,   r   )r   r   r   )r   r   r   r   r   r   r   r   r   r   r(   r)   r.   r   r   r   test_slice1_2dQ   s$   
zTestSlicing.test_slice1_2dc                 C   s  t d}td|j|j|jj}d}t	||||D ]0\}}}}|||||f }|||||f }	| 
|	| | |	j|j | |	j|j qt	||D ].\}
}|||||f }|||||f }	| 
|	| | |	j|j | |	j|j qRd S r0   r'   )r	   r   r
   r!   stuvr#   r$   r"   r*   r   r   r   test_slice2_2dd   s$   
zTestSlicing.test_slice2_2dc                 C   s|   t d}td|j|j|jj}d}|D ]&}|d d | }|d d | }| || | 	|j|j | 	|j|j qd S )Nr   r   r   r   r   r   r   r    r   r   r   test_strided_1dy   s   
zTestSlicing.test_strided_1dc                 C   s   t d}td|j|j|jj}d}t	||D ]2\}}|d d |d d |f }|d d |d d |f }| 
|| | |j|j | |j|j qd S )Nr,   r   r7   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}t	|||D ];\}}}|d d |d d |d d |f }|d d |d d |d d |f }| 
|| | |j|j | |j|j qd S )N)r   r-      r   r7   r'   )	r	   r   r
   r!   r9   r:   cr#   r$   r   r   r   test_strided_3d   s   
  zTestSlicing.test_strided_3dc                 C   sb   t d}t j|dd}td|j|j|j}| |j	d |j	d  | |j	d |j	d  d S )N)r   r      )r   r   r   )axesr   r   r   )
r   r   	transposer   r   r   r   r   r   r   )r	   zr
   r   r   r   test_issue_2766   s
   
zTestSlicing.test_issue_2766N)__name__
__module____qualname__r   r%   r&   r+   r/   r1   r6   r8   r;   r>   rC   r   r   r   r   r      s    r   c                   @   sl   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d Zdd ZdS )TestReshapec                 C   b   t d}td|j|j|jj}|dd}|ddd }| 	|j|j | 	|j|j d S )Nr,   r   r-   r   
r   r   r   r   r   r   r   r   reshaper   r	   r   r
   r#   r$   r   r   r   test_reshape_2d2d      
zTestReshape.test_reshape_2d2dc                 C   ^   t d}td|j|j|jj}|d}|dd }| 	|j|j | 	|j|j d S )Nr,   r      rI   rK   r   r   r   test_reshape_2d1d      

zTestReshape.test_reshape_2d1dc                 C   f   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   rI   rK   r   r   r   test_reshape_3d3d      
zTestReshape.test_reshape_3d3dc                 C   rH   )NrS   r      r-   rI   rK   r   r   r   test_reshape_3d2d   rM   zTestReshape.test_reshape_3d2dc                 C   rN   )NrS   r   <   rI   rK   r   r   r   test_reshape_3d1d   rQ   zTestReshape.test_reshape_3d1dc                 C   rH   )Nr,   r   r   r   rI   rK   r   r   r   test_reshape_infer2d2d   rM   z"TestReshape.test_reshape_infer2d2dc                 C   rN   )Nr,   r   r   rI   rK   r   r   r   test_reshape_infer2d1d   rQ   z"TestReshape.test_reshape_infer2d1dc                 C   rR   )NrS   r   r-   r   r   rI   rK   r   r   r   test_reshape_infer3d3d   rU   z"TestReshape.test_reshape_infer3d3dc                 C   rH   )NrS   r   r?   r   rI   rK   r   r   r   test_reshape_infer3d2d   rM   z"TestReshape.test_reshape_infer3d2dc                 C   rN   )NrS   r   r   rI   rK   r   r   r   test_reshape_infer3d1d   rQ   z"TestReshape.test_reshape_infer3d1dc                 C   sp   t d}td|j|j|jj}| t	}|
ddd W d    n1 s(w   Y  | dt|j d S )NrS   r   r   r?   z&can only specify one unknown dimensionr   r   r   r   r   r   r   r   assertRaises
ValueErrorrJ   assertInstr	exceptionr	   r   r
   raisesr   r   r   test_reshape_infer_two_unknowns   s   
z+TestReshape.test_reshape_infer_two_unknownsc                 C   sn   t d}td|j|j|jj}| t	}|
dd W d    n1 s'w   Y  | dt|j d S )NrS   r   r      z.cannot infer valid shape for unknown dimensionr_   re   r   r   r    test_reshape_infer_invalid_shape	  s   
z,TestReshape.test_reshape_infer_invalid_shapeN)rD   rE   rF   rL   rP   rT   rW   rY   rZ   r[   r\   r]   r^   rg   ri   r   r   r   r   rG      s    											rG   c                   @   s   e Zd Zdd Zdd ZdS )TestSqueezec                    sz   t d}td|j|j|jj} fdd}||| || d |  dD ]}||j|dd |j|d q)d S )Nr   r   r   r   r   r?   r   c                    s$     | j|j   | j|j d S )N)r   r   r   )arr1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
   ro   rq   r   rn   r   test_squeeze  s   

zTestSqueeze.test_squeezec                 C   s   t d}td|j|j|jj}| t	 |j
dd W d    n1 s'w   Y  | t	 |j
dd W d    d S 1 sCw   Y  d S )Nrk   r   r   rp   )r   r?   )r   r   r   r   r   r   r   r   r`   ra   rr   )r	   r   r
   r   r   r   test_squeeze_invalid_axis#  s   
"z%TestSqueeze.test_squeeze_invalid_axisN)rD   rE   rF   rs   rt   r   r   r   r   rj     s    rj   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestExtentc                 C   J   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
   r2   er   r   r   test_extent_1d/     

zTestExtent.test_extent_1dc                 C   rv   )Nr,   r   rx   rz   r   r   r   test_extent_2d6  r}   zTestExtent.test_extent_2dc                 C   sB   t d}td|j|j|jj}t|	 \}| 
||j d S rw   )r   r   r   r   r   r   r   r   listiter_contiguous_extentr   ry   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 )Nr,   r   r   )r   r   r   r   r   r   r   r   r   r   r   ry   lenr   r   r   r   test_extent_iter_2dD  s   
&zTestExtent.test_extent_iter_2dN)rD   rE   rF   r|   r~   r   r   r   r   r   r   ru   .  s
    ru   c                   @   s   e Zd Zdd ZdS )TestIteratec                 C   s<   d}t |}td|j|j|jj}d}|D ]}|}qd S )Nr-   r   )r   r   r   r   r   r   r   r   )r	   Nr   r
   r"   valr   r   r   test_for_loopO  s   
zTestIterate.test_for_loopN)rD   rE   rF   r   r   r   r   r   r   N  s    r   __main__)unittestr(   numpyr   numba.misc.dummyarrayr   TestCaser   rG   rj   ru   r   rD   mainr   r   r   r   <module>   s     n 