3
Kédô^  ă               @   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               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
dejdddgejddejfejdddgejdejdddgejddfejdddgejdejejfgdd Zej	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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/d0 Zd1d2 Zd3d4 Z d5d6 Z!d7d8 Z"d9d: Z#dS )@Ú
TestSetOpsc             C   s˛   t jddddg}t jdddddg}t jdddg}t||dd}t|| t jdddddg}t jdddddddg}t j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   úT/var/www/html/virt/lib64/python3.6/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 j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 jddddg}t jddddg}t||ddd\}}}t jdddg}t|| t|| | t|| | t jdddddddg}t jddddddddg}t||dd	\}}}t jddddg}t|| t|| | t|| | t jddd
dgddddgg}t jddddgddddgg}t||ddd\}}}t j||j}t j||j}	t jddddg}
t|
||  t|
||	  t jddd
ddgdddddgg}t jddddgddddgg}t||dd	\}}}t j||j}t j||j}	t j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 jddddg}t jdddddg}t jdddg}t||}t|| t jdddg}t jdddg}t jddddddg}t||}t|| t jddddg}t jddddg}t j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 jg }t jdg}t j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)r5   r6   r   r.   r   r(   r*   é˙˙˙˙r7   )r   r   r   r   )r   Z	zero_elemZone_elemZtwo_elemr   r   r   Útest_ediff1dm   s     
zTestSetOps.test_ediff1dzary, prepend, appendr   r   r   )ÚdtypeNr   r   g      đ?g      @g      "@c             C   s,   d}t t| t|||d W d Q R X d S )Nzmust be compatible)Úaryr6   r5   )r   Ú	TypeErrorr   )r   r:   ÚprependÚappendÚmsgr   r   r   Ú!test_ediff1d_forbidden_type_casts   s
    z,TestSetOps.test_ediff1d_forbidden_type_castszary,prepend,append,expectedé   r   r   r.   c             C   s.   t j|||d}t|| |j|jks*td S )N)r:   r6   r5   )r   r   r   r9   ÚAssertionError)r   r:   r<   r=   ÚexpectedÚactualr   r   r   Útest_ediff1d_scalar_handling   s
    
z'TestSetOps.test_ediff1d_scalar_handlingc       	         sě   dd }t j|tgdhd  fdd}t jdjdd	d
g}t jdddgddd	gdddgg}||| ddg}d}||| t jd	}||| ||| ||| |d| ||d |dd g }||| ||| ||| d S )Nc             S   s   t j|j j }| |kS )N)r   ÚasarrayÚflattenÚtolist)r   r   r   r   r   Ú
_isin_slowĆ   s    z(TestSetOps.test_isin.<locals>._isin_slowr   )ZotypesZexcludedc                s"   t | |} | |}t|| d S )N)r   r   )r   r   ÚxÚy)Ú	isin_slowr   r   Úassert_isin_equalË   s    

z/TestSetOps.test_isin.<locals>.assert_isin_equalé   r   r   r   r,   é   é   r   é   é   é!   r.   r*   r   r(   r   )r.   r*   )r   r(   )r.   r   )r   Z	vectorizeÚboolr    Úreshaper   )	r   rH   rL   r   r   r   ÚdÚfrI   r   )rK   r   Ú	test_isinÂ   s(    "










zTestSetOps.test_isinc             C   s¨  xXdD ]N}ddddg}dddddg| }t jdd	ddg}t||dd
}t|| d|d< t jd	d	ddg}t||dd
}t|| d\|d< |d< t jdd	dd	g}t||dd
}t|| t j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||}t|| |dddg|  }dddddddddddd	ddg}t||}t|| t jddddg}t jdddddg| }t jdd	ddg}t||}t|| t jdddddg}t jddddddg| }t jdd	dddg}t||}t|| t jddg}t jddg| }t jd	d	g}t||}t|| qW t jdg}t jdg}t jd	g}t||}t|| ttg g g  d S )Nr   r,   r   r   r   r   r   TF)r   r*   r   )r   r,   )r   r*   )r   r   r   r   )r   Úmultr   r   r   r   r   r   r   Ú	test_in1dë   s\    


&










zTestSetOps.test_in1dc          	   C   sZ   t jddddddddg}t jddg}t jddddddddg}t||}t|| d S )Nr   r   r   rU   ÚeTF)r   r   r   r   )r   r   r   r   r   r   r   r   Útest_in1d_char_array'  s
    
zTestSetOps.test_in1d_char_arrayc             C   sf   x`d
D ]X}t jddddddddddddddg}dddg| }tt jt||t||dd qW d	S )zTest in1d's invert parameterr   r,   r   r   r   r   T)ÚinvertN)r   r,   )r   r   r   r\   r   )r   rX   r   r   r   r   r   Útest_in1d_invert0  s    
&zTestSetOps.test_in1d_invertc             C   s¤   t jdjdd}t jddjdd}t jddjdd}t j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   r.   é?   rO   FT)r   )r   r    rT   r   r   r   )r   r   r   Zlong_br   r   r   r   Útest_in1d_ravel9  s    zTestSetOps.test_in1d_ravelc             C   s<   d g}t jdgd }t jdg}t j||}t|| d S )Nr   r,   F)r   r   r   r   )r   Úar1Úar2rB   Úresultr   r   r   Útest_in1d_first_array_is_objectF  s
    z*TestSetOps.test_in1d_first_array_is_objectc             C   s:   d}t jd gd }t jdg}t j||}t|| d S )Nr   r,   F)r   r   r   r   )r   r`   ra   rB   rb   r   r   r   Ú test_in1d_second_array_is_objectM  s
    z+TestSetOps.test_in1d_second_array_is_objectc             C   s<   d g}t jd gd }t jdg}t j||}t|| d S )Nr,   T)r   r   r   r   )r   r`   ra   rB   rb   r   r   r   Ú test_in1d_both_arrays_are_objectT  s
    z+TestSetOps.test_in1d_both_arrays_are_objectc             C   s`   t jdtfdtfg}t jdg|d}t jdgd |d}t jdg}t j||}t|| d S )	NZfield1Zfield2r   )r9   r,   T)r   N)r   N)r   r9   ÚintÚobjectr   r   r   )r   Údtr`   ra   rB   rb   r   r   r   Ú+test_in1d_both_arrays_have_structured_dtype[  s    z6TestSetOps.test_in1d_both_arrays_have_structured_dtypec       	      C   sÂ   t jdddddg}t jdddddddg}t jddddddg}t||}t|| t jdddgdddgg}t jdddddg}t j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   rI   rJ   ZezÚzr   r   r   Útest_union1de  s    



zTestSetOps.test_union1dc          	   C   sŔ   t jddddddddg}t jdddddddg}t jddg}t||}t|| t jd}t jd	}t jd	d
g}t||}t|| tg tg g  t jf t j}tt|g jt j d S )Nr(   r   r   r   r   r   r   é   é   rN   )r   r   r
   r   r    Zuint32r   r9   )r   r   r   r   r   r   r   r   Útest_setdiff1dw  s    





zTestSetOps.test_setdiff1dc             C   sJ   t jdddg}t jdddg}t jddg}t||dd}t|| d S )Nr   r   r   r   r   T)r   )r   r   r
   r   )r   r   r   rB   rC   r   r   r   Útest_setdiff1d_unique  s
    z TestSetOps.test_setdiff1d_uniquec             C   s<   t jdddg}t jdddg}tt||t jdg d S )Nr   r   r   Ús)r   r   r   r
   )r   r   r   r   r   r   Útest_setdiff1d_char_array  s    z$TestSetOps.test_setdiff1d_char_arrayc             C   sb   t jdddddg}t jdddddddg}t||}t||}t||}t||}t|| d S )	Nr   r   r   r   r*   r.   r   r   )r   r   r   r   r	   r
   r   )r   r   r   Úc1Zaux1Zaux2Úc2r   r   r   Útest_manyways  s    



zTestSetOps.test_manywaysi   i   i  i÷˙˙˙i÷˙˙˙)$r"   r#   r$   r   r'   r3   r4   r8   ÚpytestÚmarkÚparametrizer   r   Zint64ÚnanZfloat32Úint8r?   Zint16Zfloat64Zint32rD   rW   rY   r[   r]   r_   rc   rd   re   ri   rk   rn   ro   rq   rt   r   r   r   r   r      s^   '&)<		
r   c               @   sf   e Zd Zdd Zdd Zdd Zdd Zejj	d	d
dg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 jddddgd}g }|jt jd
  |jt jd  |jd |jd x6|D ].}t j||}	t j||}
||	|
|||| qW d}t jt||}	||	d d < t jt||}
||
d d < ||	|
|||| ddg}t jtt	|||}	t jtt	|||}
||	|
|||| dddg}	t
t j|	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 jd}d|d< t j|dd\}}t
|t j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 S )"Nc             S   sč  d}|j d|}t| }t||| |j d|}t| ddd\}}	t||| t|	|| |j d|}t| ddd\}}	t||| t|	|| |j d|}t| ddd\}}	t||| t|	|| |j d|}t| ddd\}}
}t||| t|
|| t||| |j d	|}t| ddd\}}
}t||| t|
|| t||| |j d
|}t| ddd\}}
}t||| t|
|| t||| |j 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)Úformatr   r   )r   r   r0   r1   r   rh   Zbase_msgr>   ÚvÚjZj1Zj2Zj3r   r   r   Ú	check_all¤  sL    z,TestUnique.test_unique_1d.<locals>.check_allr   r   r   r   r,   r   r   Ú
AllIntegerÚAllFloatzdatetime64[D]ztimedelta64[D]ÚOÚ Úig      đ?y                y              đ?T)r}   .)r|   )r|   r}   )r   r   )r   r   y      đ?        y      đ?      đży      đ?      đży      đ?        )r   r   )r   r   )r   r   )r   ÚmultiplyÚextendÚ	typecodesr=   r   ÚemptyÚlenÚlistÚzipr   r   Z	chararrayZzerosr   r9   Zintp)r   r   r   r   r0   r1   r   Útypesrh   ZaaZbbZunqÚinvZa1Za2Za2_invZa1_idxZa3_idxZa3_invr   r   r   Útest_unique_1d˘  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jddd t tjttjddd d S )Nr   r   r,   r   )Úaxiséţ˙˙˙)	r   r;   Ú_run_axis_testsrg   rf   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 j|}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   rE   r   r   )r   r>   ÚinpZinp_arrr   r   r   Útest_unique_axis_list  s
    
z TestUnique.test_unique_axis_listc             C   s  g }|j tjd  |j tjd  |jd |jd |jdtfdtfg |jdtfdtfg x|D ]}| j| qjW d}tjdtjd	j	ddj
t}tjddgddggtd	}tt|dd|| d}tjddgddgddgddgg}tjddgg}tt|dd|| d S )Nr   r   zdatetime64[D]ztimedelta64[D]r   r   z&Non-bitwise-equal booleans test failedr,   )r9   r   r   FTr   )r   z"Negative zero equality test failedg        r7   g       g       g       g       g       )r   r   r   r=   rf   Úfloatr   r    Úuint8rT   ÚviewrS   r   r   r   )r   r   r9   r>   Údatarb   r   r   r   Útest_unique_axis!  s"    


"zTestUnique.test_unique_axisr   r   r   c          	   C   s<   t j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   rI   Úuniqr   r   r   Útest_unique_1d_with_axis7  s    z#TestUnique.test_unique_1d_with_axisc       
      C   sZ  t jdt jd}t|ddddd\}}}}t|j|j t|t jdd t|t jdg t|t jddg t|t jdg t|ddddd\}}}}t|j|j t|t jdd t|t jg  t|t jg  t|t jg  d}t j|d}xXtt	|D ]H}t
|}	|| dkr.d|	|< nd|	|< tt||d
t j|	d q
W d S )Nr   r   )r/   r9   T)r   r|   r}   r~   r   )r/   r   r   )r   )r   r   )r   r   )r   r   )r   r   r   r   r   r   r   )r   r   ry   r   r   r9   r   r   Úranger   r   )
r   Zsingle_zeror   Úidxr   Úcntr/   Zmultiple_zerosr   Zexpected_shaper   r   r   Útest_unique_axis_zeros=  s0    
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j|d}t j|}t j|d	d	d
\}}}d}t|j|j| t|j|j| d S )Né@   r   r   r   r   r^   r   )r9   T)r|   r~   z6Unique returned different results when asked for index)r   r   ÚmaZmasked_equalr   r   r   Úmask)r   rI   rJ   r   Úv2r   r   r>   r   r   r   Útest_unique_maskeda  s    $
zTestUnique.test_unique_maskedc             C   sH   d}x>dD ]6}t jdgdgg|}t j|dd}t||||  q
W d S )Nz*sort order incorrect for integer type '%s'Zbhilqr   r   )r   r7   )r   r   r   r   )r   Úfmtrh   r   r   r   r   r   Ú test_unique_sort_order_with_axisn  s
    
z+TestUnique.test_unique_sort_order_with_axisc       
      C   s  t jddddgddddgddddgddddggj|}d}t jddg}tt||j|| d}t jddddgddddgg}tt|dd|j|| d}t jdddgdddgdddgdddgg}tt|dd|j|| d}t jddgddggddgddgggj|}t j|ddgdd}tt|dd|| t|dd	d	d	d
\}}}}	d}t|| || d}t|| | d}t|	t jddg| t|dd	d	d	d
\}}}}	d}t|d d |f | d}t|d d |f | d}t|	t jdddg| d S )Nr   r   z&Unique with 1d array and axis=0 failedz&Unique with 2d array and axis=0 failed)r   z&Unique with 2d array and axis=1 failedz&Unique with 3d array and axis=2 failedr   T)r   r|   r}   r~   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   Zastyper   r   Ztake)
r   r9   r   r>   rb   Zdata3dr   r    r   rĄ   r   r   r   r   w  sH    

*
zTestUnique._run_axis_testsNr7   )r"   r#   r$   r   r   r   r   ru   rv   rw   r   r˘   r§   rŠ   r   r   r   r   r   rz      s   p$	rz   )Ú__doc__Znumpyr   Znumpy.testingr   r   r   r   Znumpy.lib.arraysetopsr   r   r   r	   r
   r   r   r   ru   r   rz   r   r   r   r   Ú<module>   s   (   