o
    h                     @   s|   d Z ddlZddlmZmZmZmZmZmZm	Z	 ddl
mZ ddl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)ediff1dintersect1dsetxor1dunion1d	setdiff1duniqueisin)	AxisError)assert_array_equalassert_equalassert_raisesassert_raises_regexc                   @   sH  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dejg dejddejdfejg dejdejg dejdddfejg dejdejejdfgdd Ze	j
dejg dejdddejg dejdfejg dejdejdgejddejg dejdfejg dejdddejg dejdfejg dejddd ejg d!ejdfgd"d# Ze	j
d$g d%d&d' Ze	j
d$g d%d(d) Zd*d+ Ze	j
d$g d%d,d- Zd.d/ Ze	j
d$g d%d0d1 Ze	j
d$dd2g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ej!ejfge	j
d$g d%d8d9 Z"e	j
d:ejd;d<gej!dejd=d>gejdge	j
d$g d%d?d@ Z#e	j
d$g d%dAdB Z$dCdD Z%dEdF Z&dGdH Z'dIdJ Z(dKdL Z)dMdN Z*dOdP Z+dQdR Z,dSdT Z-dUdV Z.dWdX Z/dS )Y
TestSetOpsc                 C   s   t g d}t g d}t g d}t||dd}t|| t g d}t g d}t g d}t||}t|| tg tg g  d S )N            r         r   r   )r   r   r   Tassume_unique)r   r   r   r   r   )r   r   r   r   r   r   r   )nparrayr   r
   )selfabecced r!   t/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/numpy/lib/tests/test_arraysetops.pytest_intersect1d   s   


zTestSetOps.test_intersect1dc                 C   sL   G dd d}| }t ||}t|| t g dg d}t|g d d S )Nc                   @   s   e Zd ZdddZdS )z4TestSetOps.test_intersect1d_array_like.<locals>.TestNc                 S   s
   t dS )Nr   )r   arange)r   dtypecopyr!   r!   r"   	__array__&   s   
z>TestSetOps.test_intersect1d_array_like.<locals>.Test.__array__)NN)__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 g d}t g d}t||ddd\}}}t g d}t|| t|| | t|| | t g d}t g d}t||dd\}}}t g d}t|| t|| | t|| | t g d	g d
g}t g dg dg}t||ddd\}}}t ||j}t ||j}	t g d}
t|
||  t|
||	  t g dg dg}t g dg dg}t||dd\}}}t ||j}t ||j}	t g d}
t|
||  t|
||	  d S )Nr   r   r   r   )r   r   r      T)r   return_indices)r   r   r   )r   r   r   r   r   r   r   )r      r   r   r   r   r   r   )r1   )r   r   r   r0   )r   r2   r      )r   r   r   r0   )
      r2   	   )r   r0   r   r2   )r   r   r   r0   r0   )r   r   r2   r   r   )r   r   r   r   )r4   r5   r2   r   )r   r   r2   )r   r   r   r
   unravel_indexshape)r   r   r   r   i1i2eeefui1ui2ear!   r!   r"   test_intersect1d_indices/   s<   

z#TestSetOps.test_intersect1d_indicesc                 C   s   t g d}t g d}t g d}t||}t|| t g d}t g d}t g d}t||}t|| t g d}t g d}t g d}t||}t|| tg tg g  d S )	Nr   r   )r   r   r   r,   )r0   r   r   r   r   r   r   r   r0   r   r2   r   r   r0   r   r   r2   r   r   r   r
   r   r   r   r   r   r!   r!   r"   test_setxor1dV   s    





zTestSetOps.test_setxor1dc                 C   s   t g d}t g d}t g d}t||dd}t|| t dgdgdgd	gg}t d
dgddgg}t g d}t||dd}t|| d S )NrB   rC   rA   Tr   r   r2   r   r   r0   r   r   rD   rE   r!   r!   r"   test_setxor1d_uniquen   s   
zTestSetOps.test_setxor1d_uniquec                 C   s,  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g dt|d	d
d tg dt|ddgd	dgd tdd
gt|d
d tg dt|d	dgd td	dgt|d	d tg dt|ddgd d S )Nr   r   r   )to_begin)to_end)rH   rI   )r   r   r6   r   r6   )r   r0   r   r   r2   r   r0   r2   )r   r   r2   )r   r0   r   )r   r   r
   r   )r   	zero_elemone_elemtwo_elemr!   r!   r"   test_ediff1d}   s"   
zTestSetOps.test_ediff1dzary, prepend, append, expectedr,   r%   NrI   )r   r   r   rH   )      ?g      @g      "@c                 C   sH   d |}tt| t|||d W d    d S 1 sw   Y  d S )Nz dtype of `{}` must be compatiblearyrI   rH   )formatr   	TypeErrorr   )r   rR   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   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   rZ   c                 C   s.   t j|||d}t|| |j|jksJ d S )NrQ   )r   r   r   r%   )r   rR   rU   rV   rW   actualr!   r!   r"   test_ediff1d_scalar_handling   s   
z'TestSetOps.test_ediff1d_scalar_handlingkind)Nsorttablec                    s~  dd }t j|tgdhd  fdd}t dg d}t g d	g d
g dg}||| ddg}d}||| t d}||| ||| ||| |d| ||d |dd dkrug }	||	| |||	 ||	|	 tt jt jfD ]@}
dkr|
t jkrq||
t jt jhv rt jg d	|
d}n|
thv rt g d}t jg |
d}||| ||| ||| q|d S )Nc                 S   s   t |  }| |v S )N)r   asarrayflattentolist)r   r   r!   r!   r"   
_isin_slow   s   z(TestSetOps.test_isin.<locals>._isin_slowr   )otypesexcludedc                    s&   t | |d} | |}t|| d S )Nr]   )r   r
   )r   r   xy	isin_slowr]   r!   r"   assert_isin_equal   s   
z/TestSetOps.test_isin.<locals>.assert_isin_equal   r   r   r   )r4         )r   r   r   )      !   )r6   r2   )r   r0   )r6   r   r   r   r0   r_   rO   TFF)r   	vectorizeboolr$   reshaper   int64float64)r   r]   rc   rk   r   r   r   dfrg   r%   arempty_arrayr!   ri   r"   	test_isin   sB   














zTestSetOps.test_isinc                 C   sL  dD ]}g d}g d| }t g d}t||d|d}t|| d|d< t g d	}t||d|d}t|| d
\|d< |d< t g d}t||d|d}t|| t g d}g d| }g d}t|||d}t|| |g d|  }g d}t|||d}t|| t g d}t g d| }t g d}t|||d}t|| t g d}t g d| }t g d}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v r$ttg g |dg  d S d S )Nr   r4   r   r   TFTTT)r   r]   r2   r   )FFTT)r   r2   r   )TFTFr   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   )FTFTTTTTTFTFFFrf   )r   r   r   )TTTTTTTTTTTFTT)r   r   r   r   r   )r   r   r   r   r   r   )TFTTTr   r   F>   Nr^   r   r   r   r
   )r   r]   multr   r   r   r   r!   r!   r"   test_isin_additional  s\   








zTestSetOps.test_isin_additionalc                 C   sB   t g d}t ddg}t g d}t||}t|| d S )N)r   r   r   ry   er   r   r   r   r   )TFTFFTFFr   rE   r!   r!   r"   test_isin_char_arrayN  s
   
zTestSetOps.test_isin_char_arrayc              	   C   s   dD ]"}t g d}g d| }tt t|||dt||d|d q|dv rYdD ]/}t jg dt jd}g d| }t j|t jd}tt t|||dt||d|d q+d	S d	S )
zTest isin's invert parameterr~   r   rm   rf   Tinvertr]   >   Nr^   rO   N)r   r   r
   r   r   float32)r   r]   r   r   r   r!   r!   r"   test_isin_invertW  s$   
zTestSetOps.test_isin_invertc                 C   s   t jg dt jd}t jg dt jd}t jg dtd}t|t|| tt |t||dd t jg dt jd}t jg dt jd}t g d	}t||dd
}t|| dS )z(Hit the standard isin code with integers)r   r   r   r   r   r       eArO   )r   r   r   r   )r   r   r   r   r   r   r   Tr   r   )r   r   r   r   r   r   r   r   N)r   r   rw   ru   r
   r   r   )r   r   r   rW   r   r   r!   r!   r"   !test_isin_hit_alternate_algorithml  s   z,TestSetOps.test_isin_hit_alternate_algorithmc                 C   s^   t ddg}t g d}t ddg}t|t|||d tt |t||d|d dS )z&Test that isin works for boolean inputTF)FFFrf   r   N)r   r   r
   r   r   )r   r]   r   r   rW   r!   r!   r"   test_isin_boolean|  s   
zTestSetOps.test_isin_booleanr^   c                 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 isin works for timedelta inputr   d   r4   )sizetimedelta64[s]rf   N)r   randomRandomStaterandintr   astyper
   )r   r]   rstater   r   trutha_timedeltab_timedeltar!   r!   r"   test_isin_timedelta  s   


zTestSetOps.test_isin_timedeltac                 C   sT   t jg ddd}|}tt t||dd W d    d S 1 s#w   Y  d S )Nr   r   r   r   rO   r_   rf   )r   r   pytestraises
ValueErrorr   r   r   r   r!   r!   r"   test_isin_table_timedelta_fails  s
   "z*TestSetOps.test_isin_table_timedelta_failszdtype1,dtype2c           	      C   s   t |t j}t jg d|d}|rt jg d|d}n	t jg d|d}t g d}|dko9|t jko9|t jk}|r]tjtdd t	|||d	 W d
   d
S 1 sVw   Y  d
S t
t	|||d	| d
S )z7Test that isin works as expected for mixed dtype input.)r   r   r   r   rO   )ir      )r   r      )TTFFr_   zexceed the maximum)matchrf   N)r   
issubdtypesignedintegerr   int16int8r   r   RuntimeErrorr   r
   )	r   dtype1dtype2r]   is_dtype2_signedar1ar2rW   expect_failurer!   r!   r"   test_isin_mixed_dtype  s   "z TestSetOps.test_isin_mixed_dtypedatal            l           l         l        c                 C   sT   |d }t j|||d}t|ddg |t j}t j|||d}t|ddg dS )z>Test values outside intp range (negative ones if 32bit system)r   rf   FTN)r   r   r
   r   int32)r   r]   r   queryr-   r!   r!   r"   test_isin_mixed_huge_vals  s   z$TestSetOps.test_isin_mixed_huge_valsc                 C   s   t jd D ]?}t jg dtd}t jg d|d}t jg dtd}tt|||d| ||}}t jg dtd}tt|||d| qdS )	z4Test that isin works as expected for bool/int input.
AllIntegerrs   rO   r   r   r   r   )FTTrf   )TTTTN)r   	typecodesr   ru   r
   r   )r   r]   r%   r   r   rW   r!   r!   r"   test_isin_mixed_boolean  s   
z"TestSetOps.test_isin_mixed_booleanc                 C   s<   d g}t dgd }t dg}t ||}t|| d S Nr   r4   Fr   r   r   r   rW   resultr!   r!   r"   test_isin_first_array_is_object  
   z*TestSetOps.test_isin_first_array_is_objectc                 C   s:   d}t d gd }t dg}t ||}t|| d S r   r   r   r!   r!   r"    test_isin_second_array_is_object  s
   z+TestSetOps.test_isin_second_array_is_objectc                 C   s<   d g}t d gd }t dg}t ||}t|| d S )Nr4   Tr   r   r!   r!   r"    test_isin_both_arrays_are_object  r   z+TestSetOps.test_isin_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 )Nfield1field2)r   NrO   r4   T)r   r%   intobjectr   r   r
   )r   dtr   r   rW   r   r!   r!   r"   +test_isin_both_arrays_have_structured_dtype  s   z6TestSetOps.test_isin_both_arrays_have_structured_dtypec                 C   s`  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g dtd}|d d }t jg dtd}|d d }t ddg}t ||}t|| t j||dd}t|t | t jg d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   rO   Tr   )r   )r   r   r   rJ   )r   r   r   r   F)r   r   r   r   r
   r   r   r!   r!   r"   'test_isin_with_arrays_containing_tuples  s0   


z2TestSetOps.test_isin_with_arrays_containing_tuplesc                 C   s  t g d}t g d}ttt||dd t jg dtd}t jg dtd}ttt||dd t jt jfD ]G}t jg d|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   q8d
S )z&Test that isin raises expected errors.)r   r   r   r   r   )r   r   r0   r2   r4   	quicksortrf   )r   r   r   r   r   rO   r_   )rJ   r   r   r   r   rJ   NTFr   r^   )r   r   r   r   r   r   r   rw   iinfomaxr   r
   )r   r   r   obj_ar1obj_ar2r%   overflow_ar2r   r!   r!   r"   test_isin_errors  s$   zTestSetOps.test_isin_errorsc           	      C   s   t g d}t g d}t g d}t||}t|| t g dg dg}t g d}t g d}t||}t|| tg tg g  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   r   r   r   r   )r   r   r   r
   )	r   r   r   r   r   rg   rh   ezzr!   r!   r"   test_union1d:  s   



zTestSetOps.test_union1dc                 C   s   t g d}t g d}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 )	N)r0   r   r   r   r   r   r   r   r   r0   r         rn   r!   )r   r   r   r
   r$   uint32r   r%   rE   r!   r!   r"   test_setdiff1dL  s   





zTestSetOps.test_setdiff1dc                 C   sF   t g d}t g d}t ddg}t||dd}t|| d S )N)r   r   r   )r   r   r   r   r   Tr   )r   r   r   r   )r   r   r   rW   r[   r!   r!   r"   test_setdiff1d_unique^  s
   z TestSetOps.test_setdiff1d_uniquec                 C   s8   t g d}t g d}tt||t dg d S )N)r   r   r   )r   r   sr   )r   r   r
   r   r   r!   r!   r"   test_setdiff1d_char_arraye  s   z$TestSetOps.test_setdiff1d_char_arrayc                 C   sR   t g d}t g d}t||}t||}t||}t||}t|| d S )N)r   r   r   r   r2   )r6   r2   r   r   r   r   r   )r   r   r   r   r   r   r
   )r   r   r   c1aux1aux2c2r!   r!   r"   test_manywaysj  s   



zTestSetOps.test_manyways)0r(   r)   r*   r#   r.   r@   rF   rG   rN   r   markparametrizer   r   rw   nanr   r   rY   r   rx   r   r\   r}   r   r   r   r   r   r   r   uint8uint16uint64r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r      s    '


9
=	













!"r   c                   @   s   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
ej	d	g d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 ) 
TestUniquec                 C   st  dd }g dd }g d}g d}g dd }t g d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	|||}
||	|
|||| g d}	t
t |	ddg g d}g d}ddgddgddgg}t|}t
|| t|dd\}}t
|| t
|| t j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}g d }g d!}g d"}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}g d'}g d(}g d)}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}g d }g d!}g d"}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}g d }g d!}g d"}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}g d0}d/g}tt || tt j|dd||f tt j|dd||f tt j|dd#||f d S )1Nc                 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)rS   r   r
   )r   r   r9   r:   r   r   base_msgrX   vjj1j2j3r!   r!   r"   	check_ally  sN   z,TestUnique.test_unique_1d.<locals>.check_all)r   r   r   r   r   r   r   r4   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   AllFloatdatetime64[D]timedelta64[D]O) i)      ?              ?      r   r   r   )r   r   r   r   r,   r   r   r   Tr   r   r   .)r   )r   r   g       @rP   )r   r   r   )r   r   r   r   )r   r   r   )r   y       @      y      ?      ?        )r   r   r   )r   r   r   r   r   )r   r   r   natz
2020-12-26z
2020-12-24Dhr   r   )r   multiplyextendr   rV   r   emptylenlistzipr
   r   char	chararrayzerosr   r%   intpr   complex
datetime64timedelta64)r   r   r   r   r9   r:   r   typesr   aabbunqinva1a2a2_inva1_idxa3_idxa3_invuaua_idxua_invua_cntr   all_nansr!   r!   r"   test_unique_1dw  s   0




 

zTestUnique.test_unique_1dc                 C   sX   t t| jt t t| jdtfdtfg t tttddd t tttddd d S )Nr   r   r4   r   axis)	r   rT   _run_axis_testsr   r   r	   r   r   r$   )r   r!   r!   r"   test_unique_axis_errors   s   z"TestUnique.test_unique_axis_errorsc                 C   sZ   d}g dg dg}t |}tt|ddt|dd| tt|ddt|dd| d S )NzUnique failed on list of listsr   r   r   r   r  r   )r   r`   r
   r   )r   rX   inp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 ]}| | q4d}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 failedr4   rO   rJ   r   FTr   r  z"Negative zero equality test failedg       r   )r   r   r   rV   r   floatr  r$   r   rv   viewru   r   r
   r   )r   r  r%   rX   r   r   r!   r!   r"   test_unique_axis/  s"   

"zTestUnique.test_unique_axisr  r   rJ   c                 C   s,   t g d}t||d}t|g d d S )N)r   r   r   r   r   r   r   r   r  r/   r   r   r   r
   )r   r  rg   uniqr!   r!   r"   test_unique_1d_with_axisE  s   z#TestUnique.test_unique_1d_with_axis)Nr   rJ   c                 C   sh   t g dg dg dg dg}t|d|d\}}t|j|d u r$|jnd t|t j|||d d S )N)r   r   r   )r   r   r   T)r   r  r   r  )r   r   r   r   ndimr
   take)r   r  rg   r)  r  r!   r!   r"   test_unique_inverse_with_axisK  s   "z(TestUnique.test_unique_inverse_with_axisc           
      C   sR  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 ]"}t
|}	|| dkrd|	|< nd	|	|< tt||dt j|	d qd S )N)r   r   )r8   r%   r   Tr  r   r   r   )r   r   )r8   r   r   )r   r   r   r   r   r   r   r  )r   r   r   r   r   r%   r
   r   ranger  r  )
r   single_zeror)  idxr  cntr8   multiple_zerosr  expected_shaper!   r!   r"   test_unique_axis_zerosR  s8   

z!TestUnique.test_unique_axis_zerosc                 C   sh   t jg d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   ?   r7  r   r   r   r   r   r   r7  r   r   rO   r   T)r   r   z6Unique returned different results when asked for index)r   r   mamasked_equalr   r
   r   mask)r   rg   rh   r   v2r   r   rX   r!   r!   r"   test_unique_maskedv  s   

zTestUnique.test_unique_maskedc                 C   sD   d}dD ]}t dgdgg|}t j|dd}t||||  qd S )Nz*sort order incorrect for integer type '%s'bhilqrJ   r   r  r(  )r   fmtr   r   r   r!   r!   r"    test_unique_sort_order_with_axis  s   z+TestUnique.test_unique_sort_order_with_axisc           
      C   s  t g dg dg dg dg|}d}t ddg}tt|||| d}t g dg dg}tt|dd||| d}t g d	g d
g d	g d
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t j||dd| d}t|	t ddg| t|ddddd\}}}}	d}t|d d |f | d}tt j||dd| d}t|	t g d| d S )N)r   r   r   r   )r   r   r   r   z&Unique with 1d array and axis=0 failedr   r   z&Unique with 2d array and axis=0 failedr  z&Unique with 2d array and axis=1 failed)r   r   r   r!  z&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   r   r
   r   r,  )
r   r%   r   rX   r   data3dr)  r1  r  r2  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	equal_nan)r   r   r   r   r
   )r   r   r  not_unqr!   r!   r"   test_unique_nanequals  s
   
"z TestUnique.test_unique_nanequalsc                 C   s   t t jdddddt jddg	}t |t j|ddft |t j|dddft |t j|ddd	ft |t j|ddddd
ffD ]\}}t|t|ksQJ t	||D ]	\}}t
|| qVqCd S )Nr   r   r   r   FrA  T)r   rB  )r   rB  )r   r   r   rB  )r   r   r   unique_valuesr   unique_countsunique_inverse
unique_allr  r  r
   )r   arrres_unique_array_api
res_uniquer[   rW   r!   r!   r"   test_unique_array_api_functions  s2    z*TestUnique.test_unique_array_api_functionsc                 C   s|   t g dg dg}t j|dd\}}||j}t jt jfD ]}||}t||j t||j	 t||j|j	  q d S )Nr,   )r   r   r   Tr   )
r   r   r   rv   r8   rG  rH  r
   r   inverse_indices)r   rI  expected_valuesexpected_inversefuncr   r!   r!   r"   test_unique_inverse_shape  s   z$TestUnique.test_unique_inverse_shapeN)r(   r)   r*   r  r   r$  r'  r   r   r   r*  r-  r5  r<  r?  r  rD  rL  rQ  r!   r!   r!   r"   r   u  s"     *

$	,r   )__doc__numpyr   r   r   r   r   r   r   r   numpy.exceptionsr	   numpy.testingr
   r   r   r   r   r   r   r!   r!   r!   r"   <module>   s    $    j