U
    9%e#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re   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   Z/var/www/html/Darija-Ai-API/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 qd 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 | 	|| qd 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 qd 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 