U
    ¸mœdHŒ  ã                   @   st   d Z ddlZddlmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZ ddlZG dd„ dƒZG dd„ dƒZdS )	z-Test functions for 1D array set operations.

é    N)Úassert_array_equalÚassert_equalÚassert_raisesÚassert_raises_regex)Úediff1dÚintersect1dÚsetxor1dÚunion1dÚ	setdiff1dÚuniqueÚin1dÚisinc                   @   s0  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	 
dejdddgejd�dejdfejdddgejd�ejdddgejd�ddfejdddgejd�ejejdfg¡dd„ ƒZej	 
dejdddgejd�ddejddddgejd�fejdddgejd�ejdgejd�dejdddgejd�fejdddgejd�ddejddddgejd�fejdddgejd�ddejddddgejd�fg¡d d!„ ƒZej	 
d"dd#d$g¡d%d&„ ƒZej	 
d"dd#d$g¡d'd(„ ƒZd)d*„ Zej	 
d"dd#d$g¡d+d,„ ƒZej	 
d"dd#d$g¡d-d.„ ƒZd/d0„ Zej	 
d"dd#d$g¡d1d2„ ƒZej	 
d"dd#g¡d3d4„ ƒZd5d6„ Zej	 
d7ejejfejejfejej fej ejfejejfejejfg¡ej	 
d"dd#d$g¡d8d9„ ƒƒZ!ej	 
d"dd#d$g¡d:d;„ ƒZ"d<d=„ Z#d>d?„ Z$d@dA„ Z%dBdC„ Z&dDdE„ Z'dFdG„ Z(dHdI„ Z)dJdK„ Z*dLdM„ Z+dNdO„ Z,dPdQ„ Z-dS )RÚ
TestSetOpsc              	   C   s²   t  ddddg¡}t  dddddg¡}t  dddg¡}t||dd�}t||ƒ t  dddddg¡}t  dddddddg¡}t  dddg¡}t||ƒ}t||ƒ tg tg g ƒƒ d S )	Né   é   é   é   é   é   T©Úassume_unique)ÚnpÚarrayr   r   )ÚselfÚaÚbÚecÚcZed© r   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/lib/tests/test_arraysetops.pyÚtest_intersect1d   s    


zTestSetOps.test_intersect1dc                 C   sR   G dd„ dƒ}|ƒ }t ||ƒ}t||ƒ t dddgdddgƒ}t|dddgƒ d S )Nc                   @   s   e Zd Zdd„ ZdS )z4TestSetOps.test_intersect1d_array_like.<locals>.Testc                 S   s
   t  d¡S )Nr   )r   Úarange©r   r   r   r   Ú	__array__%   s    z>TestSetOps.test_intersect1d_array_like.<locals>.Test.__array__N)Ú__name__Ú
__module__Ú__qualname__r#   r   r   r   r   ÚTest$   s   r'   r   r   r   )r   r   )r   r'   r   Úresr   r   r   Útest_intersect1d_array_like"   s    

z&TestSetOps.test_intersect1d_array_likec              
   C   s*  t  ddddg¡}t  ddddg¡}t||ddd�\}}}t  dddg¡}t||ƒ t|| |ƒ t|| |ƒ t  dddddddg¡}t  ddddddddg¡}t||dd	�\}}}t  ddddg¡}t||ƒ t|| |ƒ t|| |ƒ t  ddd
dgddddgg¡}t  ddddgddddgg¡}t||ddd�\}}}t  ||j¡}t  ||j¡}	t  ddddg¡}
t|
|| ƒ t|
||	 ƒ t  ddd
ddgdddddgg¡}t  ddddgddddgg¡}t||dd	�\}}}t  ||j¡}t  ||j¡}	t  dddg¡}
t|
|| ƒ t|
||	 ƒ d S )Nr   r   r   r   é   T)r   Úreturn_indicesé   )r+   r   r   é   é
   é   é	   )r   r   r   r   Zunravel_indexÚshape)r   r   r   r   Úi1Úi2ÚeeZefZui1Zui2Zear   r   r   Útest_intersect1d_indices.   s<    

"z#TestSetOps.test_intersect1d_indicesc                 C   sö   t  ddddg¡}t  dddddg¡}t  dddg¡}t||ƒ}t||ƒ t  dddg¡}t  dddg¡}t  ddddddg¡}t||ƒ}t||ƒ t  ddddg¡}t  ddddg¡}t  ddddddg¡}t||ƒ}t||ƒ tg tg g ƒƒ d S )	Nr   r   r   r   r   r   r*   r,   )r   r   r   r   ©r   r   r   r   r   r   r   r   Útest_setxor1dU   s     





zTestSetOps.test_setxor1dc                 C   s8  t  g ¡}t  dg¡}t  ddg¡}tg t|ƒƒ tdgt|dd�ƒ tdgt|dd�ƒ tddgt|ddd�ƒ tg t|ƒƒ tdgt|ƒƒ tddd	gt|dd	d�ƒ td
ddddgt|d
dgddgd�ƒ tdd	gt|d	d�ƒ tdddgt|ddgd�ƒ tddgt|dd�ƒ td
ddgt|d
dgd�ƒ d S )Nr   r   r   )Úto_begin)Úto_endéÿÿÿÿ)r8   r9   r   r0   r   r*   r,   )r   r   r   r   )r   Z	zero_elemZone_elemZtwo_elemr   r   r   Útest_ediff1dm   s"    
ÿzTestSetOps.test_ediff1dzary, prepend, append, expectedr   r   r   ©ÚdtypeNr9   r   r   r8   ç      ð?g      @g      "@c              	   C   s2   d  |¡}tt|ƒ� t|||d� W 5 Q R X d S )Nz dtype of `{}` must be compatible©Úaryr9   r8   )Úformatr   Ú	TypeErrorr   )r   r@   ÚprependÚappendÚexpectedÚmsgr   r   r   Ú!test_ediff1d_forbidden_type_casts€   s    
þz,TestSetOps.test_ediff1d_forbidden_type_castszary,prepend,append,expectedi   i  r   r   i÷ÿÿÿc                 C   s.   t j|||d�}t||ƒ |j|jks*t‚d S )Nr?   )r   r   r   r=   ÚAssertionError)r   r@   rC   rD   rE   Úactualr   r   r   Útest_ediff1d_scalar_handling£   s    þ
z'TestSetOps.test_ediff1d_scalar_handlingÚkindÚsortÚtablec                    s–  dd„ }t j|tgdhd�‰ ‡ ‡fdd„}t  d¡ dd	d
g¡}t  dddgddd	gdddgg¡}|||ƒ ddg}d}|||ƒ t  d	¡}|||ƒ |||ƒ |||ƒ |d|ƒ ||dƒ |ddƒ ˆdkròg }	||	|ƒ |||	ƒ ||	|	ƒ tt jt jfD ]�}
ˆdk�r|
t jk�r�q |
t jt jhk�rFt jdddg|
d�}n|
thk�rbt  dddg¡}t jg |
d�}|||ƒ |||ƒ |||ƒ �q d S )Nc                 S   s   t  |¡ ¡  ¡ }| |kS )N)r   ÚasarrayÚflattenÚtolist)r   r   r   r   r   Ú
_isin_slowË   s    z(TestSetOps.test_isin.<locals>._isin_slowr   )ZotypesÚexcludedc                    s&   t | |ˆd�}ˆ | |ƒ}t||ƒ d S )N©rK   )r   r   )r   r   ÚxÚy©Z	isin_slowrK   r   r   Úassert_isin_equalÐ   s    
z/TestSetOps.test_isin.<locals>.assert_isin_equalé   r   r   r   r.   é   é   r   é   é   é!   )r0   r,   )r   r*   )r0   r   r   r*   rM   r<   TF)r   Z	vectorizeÚboolr!   Úreshaper   Úint64Úfloat64)r   rK   rQ   rW   r   r   r   ÚdÚfrT   r=   ÚarZempty_arrayr   rV   r   Ú	test_isinÆ   s@    "













zTestSetOps.test_isinc                 C   sÎ  dD �]h}ddddg}dddddg| }t  dd	ddg¡}t||d|d
�}t||ƒ d|d< t  d	d	ddg¡}t||d|d
�}t||ƒ d\|d< |d< t  dd	dd	g¡}t||d|d
�}t||ƒ t  ddddddddddddddg¡}dddg| }d	dd	ddddddd	dd	d	d	g}t|||d�}t||ƒ |dddg|  }dddddddddddd	ddg}t|||d�}t||ƒ t  ddddg¡}t  dddddg| ¡}t  dd	ddg¡}t|||d�}t||ƒ t  dddddg¡}t  ddddddg| ¡}t  dd	dddg¡}t|||d�}t||ƒ t  ddg¡}t  ddg| ¡}t  d	d	g¡}t|||d�}t||ƒ qt  dg¡}t  dg¡}t  d	g¡}t|||d�}t||ƒ |dk�rÊttg g |d�g ƒ d S )N©r   r.   r   r   r   r   r   r   TF©r   rK   r,   r   )r   r,   rS   >   NrL   ©r   r   r   r   )r   rK   Úmultr   r   r   r   r   r   r   Ú	test_in1d  sp    



&    ÿ
   ÿ




zTestSetOps.test_in1dc              
   C   sZ   t  ddddddddg¡}t  ddg¡}t  ddddddddg¡}t||ƒ}t||ƒ d S )Nr   r   r   rb   ÚeTFrh   r6   r   r   r   Útest_in1d_char_arrayA  s
    
zTestSetOps.test_in1d_char_arrayc                 C   sê   dD ]^}t  ddddddddddddddg¡}dddg| }tt  t|||d�¡t||d|d	�ƒ q|d
krædD ]t}t jddddddddddddddgt jd�}dddg| }t j|t jd�}tt  t|||d�¡t||d|d	�ƒ qpdS )zTest in1d's invert parameterrf   r   r   r   r   r   rS   T©ÚinvertrK   >   NrL   r<   N)r   r   r   rn   r   Úfloat32)r   rK   ri   r   r   r   r   r   Útest_in1d_invertJ  s     &ÿ"ÿÿzTestSetOps.test_in1d_invertc                 C   s¬   t  d¡ dd¡}t  dd¡ dd¡}t  dd¡ dd¡}t  ddddddg¡}tt||d|d	�|ƒ tt||d|d	�|ƒ tt||d|d	�|ƒ tt||d|d	�|ƒ d S )
Nr*   r   r   r0   é?   rZ   FTrg   )r   r!   r_   r   r   r   )r   rK   r   r   Zlong_br   r   r   r   Útest_in1d_ravel_  s,    ÿ
ÿþ
ÿþ
ÿþzTestSetOps.test_in1d_ravelc                 C   sÞ   t jdddddddgt jd�}t jddddgt jd�}t jdddddddgtd�}t|t||ƒƒ tt  |¡t||d	d
�ƒ t jddddgt jd�}t jddddddgt jd�}t  d	dd	d	g¡}t||d	d�}t||ƒ dS )z(Hit the standard isin code with integersr   r   r   g    eÍÍAr<   r   r   r   T©rn   r   Fr   N)r   r   r`   r^   r   r   rn   )r   r   r   rE   r   r   r   r   r   Ú!test_in1d_hit_alternate_algorithmt  s    z,TestSetOps.test_in1d_hit_alternate_algorithmc                 C   s`   t  ddg¡}t  dddg¡}t  ddg¡}t|t|||d�ƒ tt  |¡t||d|d�ƒ dS )z&Test that in1d works for boolean inputTFrS   rm   N)r   r   r   r   rn   )r   rK   r   r   rE   r   r   r   Útest_in1d_boolean„  s    ÿ
ÿzTestSetOps.test_in1d_booleanc                 C   sb   t j d¡}|jdddd�}|jdddd�}t||ƒ}| d¡}| d¡}t|t|||d�ƒ dS )z(Test that in1d works for timedelta inputr   éd   r.   )Úsizeútimedelta64[s]rS   N)r   ÚrandomZRandomStateÚrandintr   Úastyper   )r   rK   Zrstater   r   ÚtruthZa_timedeltaZb_timedeltar   r   r   Útest_in1d_timedelta�  s    


zTestSetOps.test_in1d_timedeltac              	   C   s@   t jdddgdd�}|}t t¡� t||dd� W 5 Q R X d S )Nr   r   r   rx   r<   rM   rS   )r   r   ÚpytestÚraisesÚ
ValueErrorr   ©r   r   r   r   r   r   Útest_in1d_table_timedelta_failsš  s    z*TestSetOps.test_in1d_table_timedelta_failszdtype1,dtype2c           	   	   C   sÞ   t  |t j¡}t jddddg|d�}|r>t jdddg|d�}nt jdddg|d�}t  ddddg¡}|d	ko–t|t jko€|t jk|t jko’|t jkfƒ}|rÆtjt	d
d�� t
|||d� W 5 Q R X ntt
|||d�|ƒ dS )z7Test that in1d works as expected for mixed dtype input.r   r   r<   i€ÿÿÿé   éÿ   TFrM   zexceed the maximum)ÚmatchrS   N)r   Z
issubdtypeZsignedintegerr   ÚanyÚint8Úint16r~   r   ÚRuntimeErrorr   r   )	r   Zdtype1Zdtype2rK   Zis_dtype2_signedÚar1Úar2rE   Zexpect_failurer   r   r   Útest_in1d_mixed_dtype¡  s    
þz TestSetOps.test_in1d_mixed_dtypec                 C   sš   t jd D ]Š}t jdddgtd�}t jddddg|d�}t jdddgtd�}tt|||d�|ƒ || }}t jddddgtd�}tt|||d�|ƒ q
dS )z4Test that in1d works as expected for bool/int input.Ú
AllIntegerTFr<   r   rS   N)r   Ú	typecodesr   r^   r   r   )r   rK   r=   r   r   rE   r   r   r   Útest_in1d_mixed_booleanÄ  s    
z"TestSetOps.test_in1d_mixed_booleanc                 C   s<   d g}t  dgd ¡}t  dg¡}t  ||¡}t||ƒ d S ©Nr   r.   Frh   ©r   rŠ   r‹   rE   Úresultr   r   r   Útest_in1d_first_array_is_objectÑ  s
    z*TestSetOps.test_in1d_first_array_is_objectc                 C   s:   d}t  d gd ¡}t  dg¡}t  ||¡}t||ƒ d S r�   rh   r‘   r   r   r   Ú test_in1d_second_array_is_objectØ  s
    z+TestSetOps.test_in1d_second_array_is_objectc                 C   s<   d g}t  d gd ¡}t  dg¡}t  ||¡}t||ƒ d S )Nr.   Trh   r‘   r   r   r   Ú test_in1d_both_arrays_are_objectß  s
    z+TestSetOps.test_in1d_both_arrays_are_objectc                 C   s`   t  dtfdtfg¡}t jdg|d�}t jdgd |d�}t  dg¡}t  ||¡}t||ƒ d S )NZfield1Zfield2)r   Nr<   r.   T)r   r=   ÚintÚobjectr   r   r   )r   ÚdtrŠ   r‹   rE   r’   r   r   r   Ú+test_in1d_both_arrays_have_structured_dtypeæ  s    z6TestSetOps.test_in1d_both_arrays_have_structured_dtypec                 C   sf  t jddgtd�}t jddgtd�}t  ddg¡}t  ||¡}t||ƒ t j||dd�}t|t  |¡ƒ t jdddgtd�}|d d… }t jdddgtd�}|d d… }t  ddg¡}t  ||¡}t||ƒ t j||dd�}t|t  |¡ƒ t jdd	dgtd�}|d d… }t jddgtd�}t  dd
g¡}t  ||¡}t||ƒ t j||dd�}t|t  |¡ƒ d S )N)r   r   r<   Trs   )r   r   r   r:   ©r   r   F)r   r   r—   r   r   rn   r‘   r   r   r   Ú'test_in1d_with_arrays_containing_tuplesð  s0    


z2TestSetOps.test_in1d_with_arrays_containing_tuplesc                 C   s"  t  dddddg¡}t  dddddg¡}ttt||d	d
� t jdddddgtd�}t jdddddgtd�}ttt||dd
� t jt jfD ]”}t jdddddg|d�}t jdt  |¡j	g|d�}tt
t||dd
� t j||dd
�}t|dgdgd  ƒ t j||dd
�}t|dgdgd  ƒ qˆdS )z&Test that in1d raises expected errors.r   r   r   r   r   r*   r,   r.   Z	quicksortrS   r   r   r<   rM   r:   NTFrL   )r   r   r   r€   r   r—   Úint32r`   ZiinfoÚmaxr‰   r   )r   rŠ   r‹   Zobj_ar1Zobj_ar2r=   Zoverflow_ar2r’   r   r   r   Útest_in1d_errors  s(       þzTestSetOps.test_in1d_errorsc           	   	   C   sÂ   t  dddddg¡}t  dddddddg¡}t  ddddddg¡}t||ƒ}t||ƒ t  dddgdddgg¡}t  dddddg¡}t  ddddddg¡}t||ƒ}t||ƒ tg tg g ƒƒ d S )Nr   r   r   r   r   r   r   )r   r   r	   r   )	r   r   r   r   r   rT   rU   ZezÚzr   r   r   Útest_union1d3  s    



zTestSetOps.test_union1dc              
   C   sÀ   t  ddddddddg¡}t  dddddddg¡}t  ddg¡}t||ƒ}t||ƒ t  d¡}t  d	¡}t  d	d
g¡}t||ƒ}t||ƒ tg tg g ƒƒ t  dt j¡}tt|g ƒjt jƒ d S )Nr*   r   r   r   r   r   r   é   é   rY   r   )r   r   r
   r   r!   Zuint32r   r=   r6   r   r   r   Útest_setdiff1dE  s    





zTestSetOps.test_setdiff1dc                 C   sJ   t  dddg¡}t  dddg¡}t  ddg¡}t||dd�}t||ƒ d S )Nr   r   r   r   r   Tr   )r   r   r
   r   )r   r   r   rE   rI   r   r   r   Útest_setdiff1d_uniqueW  s
    z TestSetOps.test_setdiff1d_uniquec                 C   s<   t  dddg¡}t  dddg¡}tt||ƒt  dg¡ƒ d S )Nr   r   r   Ús)r   r   r   r
   r�   r   r   r   Útest_setdiff1d_char_array^  s    z$TestSetOps.test_setdiff1d_char_arrayc              	   C   sb   t  dddddg¡}t  dddddddg¡}t||ƒ}t||ƒ}t||ƒ}t||ƒ}t||ƒ d S )	Nr   r   r   r   r,   r0   r   r   )r   r   r   r   r	   r
   r   )r   r   r   Úc1Zaux1Zaux2Úc2r   r   r   Útest_manywaysc  s    



zTestSetOps.test_manyways).r$   r%   r&   r    r)   r5   r7   r;   r~   ÚmarkÚparametrizer   r   r`   Únanro   r‡   rG   rˆ   ra   rœ   rJ   re   rj   rl   rp   rr   rt   ru   r}   r‚   Úuint8Zuint16rŒ   r�   r“   r”   r•   r™   r›   rž   r    r£   r¤   r¦   r©   r   r   r   r   r      s°   'ýýýî
ýýýýóþ

<
=	











úþ

!"r   c                   @   sn   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	d
dg¡dd„ ƒZ
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú
TestUniquec                 C   s¸  dd„ }dddddddgd }ddddg}ddd	dg}ddd	dd	ddgd }t  ddddgd¡}g }| t jd
 ¡ | t jd ¡ | d¡ | d¡ |D ].}t  ||¡}	t  ||¡}
||	|
||||ƒ qœd}t  t|ƒ|¡}	||	d d …< t  t|ƒ|¡}
||
d d …< ||	|
||||ƒ ddg}t  tt	||ƒƒ|¡}	t  tt	||ƒƒ|¡}
||	|
||||ƒ dddg}	t
t  |	¡ddgƒ dddg}dddg}d	dd	dddg}t|ƒ}t
||ƒ t|dd�\}}t
||ƒ t
||ƒ t  d¡}d|d< t j|dd�\}}t
|t  d¡ƒ g }t j|dd�d }t j|dd�d }t j|ddd�dd … \}}t|jt jƒ t|jt jƒ t|jt jƒ t|jt jƒ dt jdt jg}ddt jg}dd	dg}ddd	dg}dddg}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd�||fƒ dt jdtdt jƒtdt jƒg}ddtdt jƒg}dd	dg}ddd	ddg}dddg}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd�||fƒ t  d ¡}t  d!¡|t  d"¡|g}t  d"¡t  d!¡|g}dd	dg}ddd	dg}dddg}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd�||fƒ t  d ¡}t  dd#¡|t  dd$¡|g}t  dd$¡t  dd#¡|g}dd	dg}ddd	dg}dddg}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd�||fƒ t jgd% }t jg}d	g}d	d	d	d	g}d%g}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd�||fƒ d S )&Nc                 S   sè  d}|  d|¡}t| ƒ}t|||ƒ |  d|¡}t| dddƒ\}}	t|||ƒ t|	||ƒ |  d|¡}t| dddƒ\}}	t|||ƒ t|	||ƒ |  d|¡}t| dddƒ\}}	t|||ƒ t|	||ƒ |  d|¡}t| dddƒ\}}
}t|||ƒ t|
||ƒ t|||ƒ |  d	|¡}t| dddƒ\}}
}t|||ƒ t|
||ƒ t|||ƒ |  d
|¡}t| dddƒ\}}
}t|||ƒ t|
||ƒ t|||ƒ |  d|¡}t| dddƒ\}}
}}t|||ƒ t|
||ƒ t|||ƒ t|||ƒ d S )Nzcheck {0} failed for type {1}ÚvaluesÚreturn_indexTFÚreturn_inverseÚreturn_countszreturn_index and return_inversezreturn_index and return_countsz return_inverse and return_countsz.return_index, return_inverse and return_counts)rA   r   r   )r   r   r2   r3   r   r˜   Zbase_msgrF   ÚvÚjZj1Zj2Zj3r   r   r   Ú	check_allr  sN    ÿz,TestUnique.test_unique_1d.<locals>.check_allr   r   r   r   r.   r   r   r�   ÚAllFloatúdatetime64[D]útimedelta64[D]ÚO)Ú Úiy      ð?        y      ð?      ð¿)r   r   rš   T)r±   rº   .)r°   )r°   r±   g       @r>   )r²   y       @      ð¿y      ð?      ð?ç        Únatz
2020-12-26z
2020-12-24ÚDÚhr   )r   ÚmultiplyÚextendrŽ   rD   r   ÚemptyÚlenÚlistÚzipr   r   Z	chararrayZzerosr   r=   Zintpr¬   ÚcomplexZ
datetime64Ztimedelta64)r   rµ   r   r   r2   r3   r   Útypesr˜   ZaaZbbÚunqÚinvZa1Za2Za2_invZa1_idxZa3_idxZa3_invZuaZua_idxZua_invZua_cntr½   Zall_nansr   r   r   Útest_unique_1dp  sÄ    0








ÿÿ

 







zTestUnique.test_unique_1dc                 C   s\   t t| jtƒ t t| jdtfdtfgƒ t tjtt d¡dd� t tjtt d¡dd� d S )Nr   r   r.   r   ©Úaxiséþÿÿÿ)	r   rB   Ú_run_axis_testsr—   r–   r   Z	AxisErrorr   r!   r"   r   r   r   Útest_unique_axis_errors  s    ÿz"TestUnique.test_unique_axis_errorsc                 C   s^   d}dddgdddgg}t  |¡}tt|dd�t|dd�|ƒ tt|dd�t|dd�|ƒ d S )NzUnique failed on list of listsr   r   rË   )r   rN   r   r   )r   rF   ZinpZinp_arrr   r   r   Útest_unique_axis_list!  s
    
z TestUnique.test_unique_axis_listc                 C   s  g }|  tjd ¡ |  tjd ¡ | d¡ | d¡ | dtfdtfg¡ | dtfdtfg¡ |D ]}|  |¡ qhd}tjdtjd	� 	d
d¡ 
t¡}tjddgddggtd	�}tt|dd�||ƒ d}t ddgddgddgddgg¡}t ddgg¡}tt|dd�||ƒ d S )Nr�   r¶   r·   r¸   r   r   z&Non-bitwise-equal booleans test failedr.   r<   r:   r   FTr   rË   z"Negative zero equality test failedg       €r¼   )rÁ   r   rŽ   rD   r–   ÚfloatrÎ   r!   r­   r_   Úviewr^   r   r   r   )r   rÇ   r=   rF   Údatar’   r   r   r   Útest_unique_axis(  s"    

"zTestUnique.test_unique_axisrÌ   r   r:   c              
   C   s<   t  ddddddddg¡}t||d�}t|ddddgƒ d S )Nr   r   r   r   rË   ©r   r   r   r   )r   rÌ   rT   Úuniqr   r   r   Útest_unique_1d_with_axis>  s    z#TestUnique.test_unique_1d_with_axisc           
      C   sV  t jdt jd�}t|ddddd�\}}}}t|j|jƒ t|t jdd�ƒ t|t  dg¡ƒ t|t  ddg¡ƒ t|t  dg¡ƒ t|d	dddd�\}}}}t|j|jƒ t|t jdd�ƒ t|t  g ¡ƒ t|t  g ¡ƒ t|t  g ¡ƒ d
}t j|d�}tt	|ƒƒD ]H}t
|ƒ}	|| dk�r,d|	|< nd	|	|< tt||d�t j|	d�ƒ �qd S )N)r   r   )r1   r=   r   T©rÌ   r°   r±   r²   )r   r   )r1   r   r   )r   r   r   r   r   r   r   rË   )r   rÂ   r‡   r   r   r=   r   r   ÚrangerÃ   rÄ   )
r   Zsingle_zerorÖ   ÚidxrÉ   Úcntr1   Zmultiple_zerosrÌ   Zexpected_shaper   r   r   Útest_unique_axis_zerosD  s:     ÿ ÿ

ÿz!TestUnique.test_unique_axis_zerosc                 C   s‚   t jdddddddddddddddgdd�}t j |d¡}t  |¡}t j|d	d	d
�\}}}d}t|j|j|ƒ t|j|j|ƒ d S )Né@   r   r   r   r   rq   r­   r<   T)r°   r²   z6Unique returned different results when asked for index)r   r   ÚmaZmasked_equalr   r   rÓ   Úmask)r   rT   rU   r³   Zv2r»   r   rF   r   r   r   Útest_unique_maskedh  s    $ÿ
zTestUnique.test_unique_maskedc                 C   sD   d}dD ]6}t  dgdgg|¡}t j|dd�}t|||| ƒ qd S )Nz*sort order incorrect for integer type '%s'Zbhilqr:   r   rË   rÕ   )r   Úfmtr˜   r   r   r   r   r   Ú test_unique_sort_order_with_axisu  s
    z+TestUnique.test_unique_sort_order_with_axisc           
   	   C   s  t  ddddgddddgddddgddddgg¡ |¡}d}t  ddg¡}tt|ƒ| |¡|ƒ d}t  ddddgddddgg¡}tt|dd�| |¡|ƒ d}t  dddgdddgdddgdddgg¡}tt|dd�| |¡|ƒ d}t  ddgddggddgddggg¡ |¡}t j|ddgdd�}tt|dd�||ƒ t|dd	d	d	d
�\}}}}	d}t|| ||ƒ d}t|| |ƒ d}t|	t  ddg¡|ƒ t|dd	d	d	d
�\}}}}	d}t|d d …|f |ƒ d}t|d d …|f |ƒ d}t|	t  dddg¡|ƒ d S )Nr   r   z&Unique with 1d array and axis=0 failedz&Unique with 2d array and axis=0 failedrË   z&Unique with 2d array and axis=1 failedz&Unique with 3d array and axis=2 failedr   TrØ   z-Unique's return_index=True failed with axis=0z/Unique's return_inverse=True failed with axis=0z.Unique's return_counts=True failed with axis=0z-Unique's return_index=True failed with axis=1z/Unique's return_inverse=True failed with axis=1z.Unique's return_counts=True failed with axis=1)r   r   r{   r   r   Ztake)
r   r=   rÓ   rF   r’   Zdata3drÖ   rÚ   rÉ   rÛ   r   r   r   rÎ   ~  s`    


ýý*
ÿÿþý ÿ ÿzTestUnique._run_axis_testsc                 C   sj   t  ddt jt jt jg¡}t  |¡}t j|dd�}t|t  dt jg¡ƒ t|t  dt jt jt jg¡ƒ d S )Nr   F)Z	equal_nan)r   r   r¬   r   r   )r   r   rÈ   Znot_unqr   r   r   Útest_unique_nanequalsª  s
    
z TestUnique.test_unique_nanequalsN)r$   r%   r&   rÊ   rÏ   rÐ   rÔ   r~   rª   r«   r×   rÜ   rà   râ   rÎ   rã   r   r   r   r   r®   n  s    *
$	,r®   )Ú__doc__Únumpyr   Znumpy.testingr   r   r   r   Znumpy.lib.arraysetopsr   r   r   r	   r
   r   r   r   r~   r   r®   r   r   r   r   Ú<module>   s   (    d