U
    iâËd#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rŽe  ¡  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 ]D}|j | |j | kr|jdkr6|jdkr6q|  d|j |j f ¡ qd S )N)ÚC_CONTIGUOUSÚF_CONTIGUOUSr   z*contiguous flag mismatch:
got=%s
expect=%s)ÚflagsÚsizeZfail)ÚselfÚarrÚnparrÚattrsÚattr© r   úT/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_dummyarray.pyÚassertSameContig	   s    
ÿzTestSlicing.assertSameContigc                 C   s„   t  d¡}t d|j|j|jj¡}|  ||¡ d}|D ]H}||d … }||d … }|  ||¡ |  	|j|j¡ |  	|j|j¡ q6d 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 ]H}|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 ]L\}}|||… }|||… }|  
||¡ |  |j|j¡ |  |j|j¡ q2d 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 ]H}||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 ]H}|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 ]`\}}}}|||…||…f }|||…||…f }	|  
|	|¡ |  |	j|j¡ |  |	j|j¡ q6t 	||¡D ]\\}
}|||…||…f }|||…||…f }	|  
|	|¡ |  |	j|j¡ |  |	j|j¡ q¤d S r/   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 ]L}|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 ]d\}}|d d |…d d |…f }|d d |…d d |…f }|  
||¡ |  |j|j¡ |  |j|j¡ q2d S )Nr+   r   r6   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 ]v\}}}|d d |…d d |…d d |…f }|d d |…d d |…d d |…f }|  
||¡ |  |j|j¡ |  |j|j¡ q4d S )N)r   r,   é   r   r6   r&   )	r   r
   r	   r    r8   r9   Ú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   )Zaxesr   r   r   )
r   r   Z	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.   r0   r5   r7   r:   r=   r@   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   sb   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¦   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 )Nr+   r   é   rE   rG   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   rE   rG   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 )NrK   r   é   r,   rE   rG   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 )NrK   r   é<   rE   rG   r   r   r   Útest_reshape_3d1dÊ   s    
ÿ
zTestReshape.test_reshape_3d1dc                 C   sb   t  d¡}t d|j|j|jj¡}| dd¡}| dd¡d }|  	|j|j¡ |  	|j|j¡ d S )Nr+   r   r   r   rE   rG   r   r   r   Útest_reshape_infer2d2dÓ   s    
ÿz"TestReshape.test_reshape_infer2d2dc                 C   s^   t  d¡}t d|j|j|jj¡}| d¡}| d¡d }|  	|j|j¡ |  	|j|j¡ d S )Nr+   r   r   rE   rG   r   r   r   Útest_reshape_infer2d1dÜ   s    
ÿ
z"TestReshape.test_reshape_infer2d1dc                 C   sf   t  d¡}t d|j|j|jj¡}| ddd¡}| ddd¡d }|  	|j|j¡ |  	|j|j¡ d S )NrK   r   r,   r   r   rE   rG   r   r   r   Útest_reshape_infer3d3då   s    
ÿz"TestReshape.test_reshape_infer3d3dc                 C   sb   t  d¡}t d|j|j|jj¡}| dd¡}| dd¡d }|  	|j|j¡ |  	|j|j¡ d S )NrK   r   r>   r   rE   rG   r   r   r   Útest_reshape_infer3d2dî   s    
ÿz"TestReshape.test_reshape_infer3d2dc                 C   s^   t  d¡}t d|j|j|jj¡}| d¡}| d¡d }|  	|j|j¡ |  	|j|j¡ d S )NrK   r   r   rE   rG   r   r   r   Útest_reshape_infer3d1d÷   s    
ÿ
z"TestReshape.test_reshape_infer3d1dc              	   C   s\   t  d¡}t d|j|j|jj¡}|  t	¡�}| 
ddd¡ W 5 Q R X |  dt|jƒ¡ d S )NrK   r   r   r>   z&can only specify one unknown dimension©r   r   r   r   r   r   r   r   ÚassertRaisesÚ
ValueErrorrF   ZassertInÚstrÚ	exception©r   r
   r	   Zraisesr   r   r   Útest_reshape_infer_two_unknowns   s    
ÿz+TestReshape.test_reshape_infer_two_unknownsc              	   C   sZ   t  d¡}t d|j|j|jj¡}|  t	¡�}| 
dd¡ W 5 Q R X |  dt|jƒ¡ d S )NrK   r   r   é   z.cannot infer valid shape for unknown dimensionrV   r[   r   r   r   Ú test_reshape_infer_invalid_shape	  s    
ÿz,TestReshape.test_reshape_infer_invalid_shapeN)rA   rB   rC   rH   rJ   rL   rN   rP   rQ   rR   rS   rT   rU   r\   r^   r   r   r   r   rD   ¥   s   											rD   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�ƒ qRd 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	   rb   rd   r   ra   r   Útest_squeeze  s    
   ÿ
 
ÿzTestSqueeze.test_squeezec              	   C   sj   t  d¡}t d|j|j|jj¡}|  t	¡� |j
dd� W 5 Q R X |  t	¡� |j
dd� W 5 Q R X d S )Nr`   r   r   rc   )r   r>   )r   r   r   r   r   r   r   r   rW   rX   re   )r   r
   r	   r   r   r   Útest_squeeze_invalid_axis#  s    
   ÿz%TestSqueeze.test_squeeze_invalid_axisN)rA   rB   rC   rf   rg   r   r   r   r   r_     s   r_   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	   r1   Ú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 )Nr+   r   rj   rl   r   r   r   Útest_extent_2d6  s    
ÿ
zTestExtent.test_extent_2dc                 C   sB   t  d¡}t d|j|j|jj¡}t| 	¡ ƒ\}|  
||j¡ d S ri   )r   r   r   r   r   r   r   r   ÚlistÚiter_contiguous_extentr   rk   ©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   rp   rq   r   rk   Úlenrr   r   r   r   Útest_extent_iter_2dD  s    
ÿzTestExtent.test_extent_iter_2dN)rA   rB   rC   rn   ro   rt   rv   r   r   r   r   rh   .  s   rh   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)rA   rB   rC   rz   r   r   r   r   rw   N  s   rw   Ú__main__)Zunittestr'   Únumpyr   Znumba.misc.dummyarrayr   ZTestCaser   rD   r_   rh   rw   rA   Úmainr   r   r   r   Ú<module>   s    n 