o
    ZZh1                    @   s  d Z ddlZddlZddlZddlZddlmZ ddlm	Z	m
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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$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? G dd	 d	Z@G d
d dZAG dd dZBG dd dZCG dd dZDG dd dZEG dd dZFG dd dZGG dd dZHG dd dZIG dd dZJG dd dZKG d d! d!ZLG d"d# d#ZMG d$d% d%ZNdS )&zTests suite for MaskedArray.
Adapted from the original test_ma by Pierre Gerard-Marchant

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu
:version: $Id: test_extras.py 3473 2007-10-29 15:18:13Z jarrod.millman $

    N)normalize_axis_tuple)assert_warnssuppress_warnings)assert_assert_array_equalassert_equalassert_almost_equal)arrayarangemaskedMaskedArraymasked_arraygetmaskarrayshapenomaskoneszeroscount)#
atleast_1d
atleast_2d
atleast_3dmr_dotpolyfitcovcorrcoefmedianaverageuniquesetxor1d	setdiff1dunion1dintersect1din1dediff1dapply_over_axesapply_along_axiscompress_ndcompress_rowcolsmask_rowcolsclump_maskedclump_unmaskedflatnotmasked_contiguousnotmasked_contiguousnotmasked_edges
masked_allmasked_all_likeisindiagflatndenumeratestackvstack
_covhelperc                   @   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S )TestGenericc                 C   sJ  t dtd}tddgddgtd}t|| tddgddgd}t d|d}td	d	gd
d
g|d}t|| t d|d}td	d	gd	d	ggd
d
gd
d
gg|d}t|| tddddgfg}t d|d}tddgddg|d}t|| t d|d}tddgddg|d}t|| t d
|d}tdggdgg|d}t|| d S )N   dtype   maskr;   abfnamesformatsr   r   r<   r<   r9   r9   r?   rA   barA   ZbbrA   r<   rF   )r/   floatr	   r   npr;   )selftestcontroldt rS   I/var/www/auris/lib/python3.10/site-packages/numpy/ma/tests/test_extras.pytest_masked_all&   s6   




zTestGeneric.test_masked_allc                 C   s   t ddtfgdffg}t jd|}tt|d t jjj tt|d d t jjj tt	|d d d t|d d j
d t|d d jj
d d S )Nr@   cr<   r<   rF   rS   rN   r;   objectmar/   r   typecorer   lenr   Z_fill_valuerO   Zmy_dtype
masked_arrrS   rS   rT   "test_masked_all_with_object_nestedD   s   z.TestGeneric.test_masked_all_with_object_nestedc                 C   sr   t dtdffg}t jd|}tt|d t jjj tt	|d d t|d j
d t|d jj
d d S )Nr@   rW   r<   rF   rS   rX   r^   rS   rS   rT   test_masked_all_with_objectP   s   z'TestGeneric.test_masked_all_with_objectc                 C   s   t ddgtd}t|}t ddgddgtd}t|| tddgddgd}t d	d	gd
d
g|d}t|}t ddgd
d
g|d}t|| tddddgfg}t ddgddg|d}t|}t|| d S )Nr<   r9   r:   r=   r?   r@   rA   rB   rE   rF   )
   rb   rH   rI   rK   rL   )r	   rM   r0   r   rN   r;   )rO   baserP   rQ   rR   rS   rS   rT   test_masked_all_likeZ   s   

z TestGeneric.test_masked_all_likec           	      C   s   t ddD ]W}t d| D ]N}tj|td}tj||td}td| }|d| @ dk|_d}||D ]}||j|  7 }q3|t	krMt
|  | q|j |_t
|  | qqd S )Nr<      r9   r:   r   )rangerN   r
   intfullr   r>   datasumr+   r   
compressed)	rO   rA   ijkjar?   sslrS   rS   rT   check_clumpn   s   
zTestGeneric.check_clumpc                 C   sV   t td}t|g d< t|}tddtddtddg}t|| | t d S )Nrb   r   r<   r9         	   r      rt   re   ru   )r   rN   r
   r   r*   slicer   rr   rO   r?   rP   rQ   rS   rS   rT   test_clump_masked~   s   
zTestGeneric.test_clump_maskedc                 C   sN   t td}t|g d< t|}tddtddg}t|| | t d S )Nrb   rs   rw   rt   re   ru   )r   rN   r
   r   r+   rx   r   rr   ry   rS   rS   rT   test_clump_unmasked   s   
zTestGeneric.test_clump_unmaskedc                 C   s   t d}t|}t|td|jg tjdtd|_t|td|jg t	||dk |dkB |dkB < t|}t|tddtddg t	|d d < t|}t|g  d S )	Nrb   r   r:   rw   ru      rt   rv   )
r
   r,   r   rx   sizerN   r   boolr>   r   )rO   r?   rP   rS   rS   rT   test_flatnotmasked_contiguous   s   z)TestGeneric.test_flatnotmasked_contiguousN)__name__
__module____qualname__rU   r`   ra   rd   rr   rz   r{   r   rS   rS   rS   rT   r7   $   s    

r7   c                   @   s   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	e
jdg dddgg ddgdgfg dg dgdg dgddgg dgg dgfgdd Zd d! ZdS )"TestAveragec                 C   s$  t g dg dd}tdt|dd tdt|g dd t|g dd	d
\}}td| t|dk t|d d < tt|ddjd	g t g dg dd}|dd}t|d d df< tt|ddddg tt|ddjd d	g tddgt|dd t|dd	d\}}t|ddg d S )N)              ?       @      @)TFFFr>   r   r   axis)r   r   r   r   weightsTr   returned      @r9   r<   r   r   r   r   )r	   r   r   r   r   r>   reshape)rO   ZottresultwtsrS   rS   rT   test_testAverage1   s    
zTestAverage.test_testAverage1c                 C   sB  g d}g dg dg}t dtjd}tt|ddd tt|d|dd tt dtjdd	t d g}tt|d tjt dd
 d  tt|ddt dd
 d	  tt|ddt|ddt|ddd	 g tt|d |dd tt|d|dg d tt|ddt|ddt|ddd	 g td}g d}g dg dg}t	d}g d}	ttt
||ddd ttt
||ddd ttt
||ddjdg ttt
||	ddd tttt
||ddd t
||}
tt|
d d tt|
ddg d tt|
ddddg tt|
d|dg d d S )Nr   r<   r<   r<   r<   r   r<   r   r   r   r   r<   rt   r:   r   r         @r   r   r   r         (@r<   r   g
@)r   r   r   r   r         $@)r   r   r<   r<   r   r   )r   r<   r<   r<   r<   r<   Tr   )r   r        X@r   r   g      @      @)r   r   r   r   r   r   )r
   rN   Zfloat64r   r   r	   addreducer   r   r   r>   r   )rO   w1w2xym1m2Zm3Zm4Zm5zrS   rS   rT   test_testAverage2   sF   & 
zTestAverage.test_testAverage2c                 C   sf  t d}t dd }t||g||ggddd\}}tt|t| t|j|j ttddddgdd\}}tt|t| ttddd	\}}tt|t| ttdtddd
\}}tt|t| tddgddggt}t|ddgddgg}t|dd}	t|	ddg t|dd}
t|
ddg t|d d}
t|
d t|dd}
t|
ddg d S )Nrt   rw   r<   Tr   r9   r9   rw   r   r   r   r   )r   r   r9      Fr         ?r   r   g@      ?r   )r
   r   r   r   r   r	   rM   r   )rO   r?   r@   r1r   r2r   Za2dZa2dmZa2daZa2dmarS   rS   rT   test_testAverage3   s*   
zTestAverage.test_testAverage3c                 C   s   t g ddd}t jj|dgdgdggd}t g ddd}t||ddd}td	gd
gdggdgdgdgg}t|| d S )Nr9   rw   r   rw   r<   FTr   )r   r|   rt   )r   r   keepdimsr   r   r   )rN   r	   r   rZ   r   r   r   )rO   r   r@   wactualdesiredrS   rS   rT   test_testAverage4   s   "zTestAverage.test_testAverage4c           	      C   s  t dddd}t g dddd}t dd}t jj||d}|d d d d df }t|d	|d
}tg dg dd}t|| t dd}d|d d d d df< d|d< t jj||d}t|d	|d
}tt j	ddgg dd}t|| t dd}t jj||d}|dd d d d f }t|d|d
}tddgddgd}t|| t
jtdd t|d|d
 W d    n1 sw   Y  t
jtdd t|d	|d
 W d    n1 sw   Y  t|d|d
}t|d	|jd
}t|| d S )N   r9   rw   )r   r   r   r   r   r   r   r   r   r   r   r   r   Fr   r   r   r<   r   )      @       @      "@)FFFTr   r   r<   r   r   )TFFr<   r<   r9   g      @g      @zHShape of weights must be consistent with shape of a along specified axis)matchr   r<   r9   )r<   r   )rN   r
   r   r	   rh   rZ   r   r   r   nanpytestZraises
ValueErrorT)	rO   r   r   mZymaZsubw0r   r   Zsubw1rS   rS   rT   $test_weight_and_input_dims_different   sR   




z0TestAverage.test_weight_and_input_dims_differentc                 C   s@   t tddg}t|d t tg dg dd}t|d d S )Nr<   r9   r   )r<   r9   rw   r   FFTTr   )r   r	   r   rO   r?   rS   rS   rT   test_onintegers_with_mask1  s   
z%TestAverage.test_onintegers_with_maskc                 C   s  t jg dg dgtd}tg dg dg|d}t|}t | }t|j|j t|j|j t|dd}t|jddt|jddd	  }t|j|j t|j|j t|d
d}t|jd
dt|jd
dd	  }t|j|j t|j|j t g dg dg}	t||	d}
t j| |	|  d}t|
j|j t|
j|j t||	dd}t|j|	ddt|j|	ddd	  }t|j|j t|j|j t||	d
d}t|j|	d
dt|j|	d
dd	  }t|j|j t|j|j d S )N)r   r   r   r<   r   r   r<   r   r   r   r:   )r   y      ?       @y      @      @y      @      @y      @       @)y              "@              ?y       @      @y      @      @y      @      @r   r   r   r   r<   )r   r   r   r   r   )r   r   r   r   r   r   r   r   )	rN   r	   r~   r   r   rk   r   realimag)rO   r>   r?   avexpectedZav0Z	expected0Zav1Z	expected1r   ZwavZwav0Zwav1rS   rS   rT   test_complex8  sR   
  
zTestAverage.test_complexz<x, axis, expected_avg, weights, expected_wavg, expected_wsumr<   r9   rw   Nr   )rw   r   r<   g      ?r   )r<   r9   r|   )r<   rt      r   )r   r   r   r<   rw   )r   r   g      #@)r   r   r   c           
      C   s   t jj||dd}|jt |ksJ t|| t jj|||dd}|jt |ks,J t|| t jj|||ddd\}}	|jt |ksHJ t|| |	jt |ksWJ t|	| d S )NT)r   r   )r   r   r   )r   r   r   r   )rN   rZ   r   r   r   )
rO   r   r   Zexpected_avgr   Zexpected_wavgZexpected_wsumZavgZwavgZwsumrS   rS   rT   test_basic_keepdimsd  s   



zTestAverage.test_basic_keepdimsc           	      C   sf  t jjt dddg dg dg dgd}tg ddd}tg dg dd}t|d|dd	}t g d
}t|| t|d|dd	}t g d}t|| t jjg dg dd}t|dddt jgd}t|d t jjg dg dg dgg dg dg dgd}t jj|dt jdgdd}t jjdt jt jdgg dd}t|| t	|j
|j
 d S )Nrv   rw   r<   r   r   r   r   r   r   )r|         Fr   r   )      @g     @g     @)r   g0N@g0N@)r   r   r   r   r   r<   r   r   )r   r   r   r   )r   r   r   r   )FTTF)TFTT)TFTFr   r         @)rN   rZ   r	   r
   r   r   r   r   r   r   r>   )	rO   r?   Zweights_unmaskedZweights_maskedZavg_unmaskedZexpected_unmaskedZ
avg_maskedZexpected_maskedZavg_expectedrS   rS   rT   test_masked_weights{  sD   




zTestAverage.test_masked_weights)r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   rS   rS   rS   rT   r      s$    "	3,
r   c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestConcatenatorc                 C   sz   t td tg d td}g d}t||d}t|dd|f }tt|t t |g d t |jt|dd|f  d S )Nr<   r9   rw   r   r|   rt   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   
isinstancer   r>   )rO   r@   r   drV   rS   rS   rT   test_1d  s   zTestConcatenator.test_1dc                 C   s0  t jdd}t jdd}t t jddd}t t jddd}t||d}t||d}td||f }t|jdk t|d d d df | t|d d dd f | t|j	t j
d||f  t||f }t|jdk t|d dd d f | t|dd d d f | t|j	t j
||f  d S )Nr|   r   r   1)r|   rb   )rb   r|   )rN   randomrandroundr   r   r   r   r   r>   Zr_)rO   Za_1Za_2Zm_1Zm_2Zb_1Zb_2r   rS   rS   rT   test_2d  s    zTestConcatenator.test_2dc                 C   sp   t tjjdf }t|jddg t|jd d t ddgtjjf }t|jg d t|jd d ddg d S )Nr<   TFr9   )FFT)r   rN   rZ   r   r   r>   ri   )rO   r   rS   rS   rT   test_masked_constant  s   z%TestConcatenator.test_masked_constantN)r   r   r   r   r   r   rS   rS   rS   rT   r     s    r   c                   @      e Zd Zdd Zdd ZdS )TestNotMaskedc                 C   s  t tdddg dg dg dg dg dgd}t|d }t|d	d
g t|d	}t|d	 ddg t|d ddg t|d}t|d	 ddg t|d ddg t|jd }t|d	d
g t|jd	}t|d	 ddg t|d ddg t|jd}t|d	 ddg t|d ddg t|d< t|d	}t|d	 ddg t|d ddg t|d}t|d	 ddg t|d dd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<   r9   rw   r   r<   )rw   rw   rw   r   r   )r   r   r9   r   rw   )r   r9   r   r   r   )r   r   r   r   r   )r<   r<   r9   r   r   )r   r<   r9   r   )r   r   r9   rw   )r   r9   r   r   )r   rN   r
   r   r.   r   ri   r   rO   ri   rP   rS   rS   rT   
test_edges  s>   




zTestNotMasked.test_edgesc                 C   s,  t tdddg dg dg dgd}t|d }t|tdd	d td
dd tddd g t|d}t|tddd tddd gtddd tddd gtddd tddd gtddd tddd gtddd gtddd gg tddd gg t|d}t|tdd	d gg tddd tddd gg d S )Nr   rw   ru   )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<   r9   rt   re   )r   rN   r
   r   r-   r   rx   )rO   r?   tmprS   rS   rT   test_contiguous  s:   






zTestNotMasked.test_contiguousN)r   r   r   r   r   rS   rS   rS   rT   r     s    "r   c                   @   s|   e Zd Zdd Zdd Zdd Zejdg dejd	d
ge	j
jdfe	j
jdfgdd Zdd Zdd Zdd ZdS )TestCompressFunctionsc              	   C   s(  t ttdddd}t dt}d|d< t||d}t|}t	|g d	g d
g dgg dg dg dgg t|d}t	|g dg dg dg dgg dg dg dg dgg t|d}t	|g dg dg dgg dg dg dgg dg dg dgg t|d}t|d}t|d}t	|| t	|| t	|| t|d}t	|g d	g d g d
g dgg d!g d"g d#g d$gg dg d%g dg dgg t|d&}t|d'}t|d(}t	|| t	|| t	|| t|d)}t	|g dg dg dgg dg dg dgg t|d*}t	|| t|d+}t	|g d	g d
g dgg d!g d#g d$gg dg dg dgg t|d,}t|d-}t|d.}t	|| t	|| t	|| t|d/}t	|g d	g d g d
g dgg dg d%g dg dgg t|d0}t	|| d S )1N<   rw   r   r|   rw   r   r|   Tr<   r<   r<   r   )r   r9   rw   r   )rb   r         )            )(   *   +   ,   )2   4   5   6   )7   9   :   ;   r   r   )r|   rt   re   ru   rv   )rb   r   r   r   r   )r   r   r   r   r   )r   )   r   r  r  )-   .   /   0   1   )r  3   r  r  r  )r  8   r  r	  r
  r<   )      r   r   r   )   r       !   "   )#   $   %   &   '   rW   r   )r   r9   )r|   re   ru   rv   )r  r   r   r   )r      r      )r  r  r  r  )r  r  r  r  )r  r  r  r  r8   r   )r   r   )r   r   r   )r   r9   )r<   r   )r   r   r   r9   )r   r   )
rN   r	   listrf   r   r   astyper~   r'   r   )rO   r   r   r?   a2a3Za4rS   rS   rT   test_compress_nd  s   




































	z&TestCompressFunctions.test_compress_ndc                 C   s  t tdddg dg dg dgd}tt|ddgdd	gg tt|d
g dg dg tt|dddgddgdd	gg t |jg dg dg dgd}tt|d
dgdd	gg tt|d
g dg dg tt|dd
dgddgdd	gg t |jg dg dg dgd}tt|d	gg tt|d
g dg tt|ddgdgd	gg t |jg dg dg dgd}tt|jd
 tt|d
jd
 tt|djd
 d S )Nrv   rw   r   r   r   r   r|   re   ru   r   r   )rt   re   ru   r<   r9   r   r<   r   rt   r   r   )r	   rN   r
   r   r   r(   _datar}   rO   r   rS   rS   rT   test_compress_rowcols  s$   " "  z+TestCompressFunctions.test_compress_rowcolsc                 C   sH  t tdddg dg dg dgd}tt|jg dg dg dg tt|djg dg dg dg tt|djg dg dg dg t |jg dg d	g dgd}tt|jg d	g dg d	g tt|djg dg dg dg tt|djg d	g d	g d	g t |jg dg d	g dgd}tt|jg dg dg d
g tt|djg dg dg dg tt|djg d
g d
g d
g t |jg dg d	g dgd}tt|	 t
u  tt|d	 t
u  tt|d	 t
u  tt|j	  tt|dj	  tt|dj	  d S )Nrv   rw   r   r   r   r   r   r<   r&  )r<   r<   r   r   )r	   rN   r
   r   r   r)   r>   r'  r   allr   r(  rS   rS   rT   test_mask_rowcols  sN   
 
 
 z'TestCompressFunctions.test_mask_rowcolsr   )Nr   r<   funcrowcols_axisr   r<   c                 C   sv   t tdddg dg dg dgd}tt |||d}t|t|| W d    d S 1 s4w   Y  d S )Nrv   rw   r   r   r   r   )r	   rN   r
   r   r   DeprecationWarningr   r)   )rO   r   r,  r-  r   resrS   rS   rT   #test_mask_row_cols_axis_deprecation  s   
"z9TestCompressFunctions.test_mask_row_cols_axis_deprecationc                 C   s0  t dd}g d}t||ddd}t||ddd}t||dd}t|jddgdd	gg t||dd}t|jg d
g dg dg t||dd}t|t |d	|d	 t||dd}t|t |d	|d	 g d}t||ddd}t||ddd}t||dd}t|jd	dgddgg t||dd}t|jg dg dg d
g t||dd}t|t |d	|d	 t|t|| t||dd}t|t |d	|d	 g d}t||ddd}t||ddd}t||}t|jt t||}t|jt t|g dddd}t|g dddd}t||dd}t|jddgd	d	gg t||dd}t|t |d	|d	 t||dd}t|jg dg dg dg t||dd}t|t |d	|d	 t|g dddd}t|g dddd}t||dd}t|jd	d	gddgg t||}t|t |d	|d	 t||dd}t|jg dg dg dg t||dd}t|t |d	|d	 t|g dddd}t|g dddd}t||dd}t|jdd	gddgg t||dd}t|t |d	|d	 t||dd}t|jg dg d
g dg t||dd}t|t |d	|d	 tt dddddd	gd	d	ggd	d	gd	d	gggd}tt ddddd	d	gd	d	ggd	d	gd	dgggd}t||dd}t|jddgddggd	d	gd	dgggd	d	gd	dggd	d	gd	dgggg t||dd}t|jd	d	gd	dggd	d	gd	d	gggd	d	gd	d	ggd	d	gd	d	gggg t||dd}t|jdd	gd	d	ggdd	gd	d	gggdd	gd	d	ggddgddgggg t||dd}t|jd	d	gd	d	ggd	d	gd	d	gggd	d	gd	d	ggdd	gd	d	gggg tt dddddd	gd	d	ggd	d	gd	d	gggd}d}t||dd}t|jdd	gd	d	ggd	d	gd	d	ggg t||dd}t|jdd	gd	d	ggd	d	gd	d	ggg t||dd}t|jdd	gd	d	ggd	d	gd	d	ggg t||dd}t|jdd	gd	d	ggd	d	gd	d	ggg tt dddddd	gd	d	ggd	d	gd	d	gggd}tt dd	dgd}t||dd}t|jddgddgg t||dd}t|jdd	gd	d	gg d S )Nr<   re   )r<   r   r   r   r   r   r   r9   rw   T)strictr   r   r   Fr   r   r   r   r   r<   r   )r   r   r   r   r   r   )r   r   r<   r   r   r   ru   r   )	rN   r
   r   r   r   r   r>   filledr   )rO   nr   r?   r@   rV   rS   rS   rT   test_dot  s   


((((zTestCompressFunctions.test_dotc                 C   sn   t d}t|}ttt||tu  ttt||tu  ttt||tu  ttt||tu  d S )Nrw   )rN   eyer	   r   r[   r   r   rO   r?   r@   rS   rS   rT   test_dot_returns_maskedarray:  s   
z2TestCompressFunctions.test_dot_returns_maskedarrayc                 C   sD   t td}t td}t|||d}t||u  t|| d S )Nrw   )rw   rw   out)r	   rN   r6  r   r   r   r   )rO   r?   r:  r/  rS   rS   rT   test_dot_outC  s
   z"TestCompressFunctions.test_dot_outN)r   r   r   r%  r)  r+  r   r   r   rN   rZ   Z	mask_rowsZ	mask_colsr0  r5  r8  r;  rS   rS   rS   rT   r     s    p 	o	r   c                   @   r   )TestApplyAlongAxisc                 C   s@   t dddd}dd }t|d|}t|ddgdd	gg d S )
Nr   r9   rw   c                 S   s   | d S Nr<   rS   )r@   rS   rS   rT   myfuncP  s   z*TestApplyAlongAxis.test_3d.<locals>.myfuncr<   r   re   rb   r
   r   r&   r   rO   r?   r>  ZxarS   rS   rT   test_3dM  s   zTestApplyAlongAxis.test_3dc                 C   sF   t dddd}ddd}t|d|dd}t|dd	gd
dgg d S )Nr   r9   rw   r   c                 S   s   | d|  S r=  rS   )r@   offsetrS   rS   rT   r>  Z  s   z1TestApplyAlongAxis.test_3d_kwargs.<locals>.myfuncr<   )rB  r|   ru   r   )r   r?  r@  rS   rS   rT   test_3d_kwargsW  s   
z!TestApplyAlongAxis.test_3d_kwargsN)r   r   r   rA  rC  rS   rS   rS   rT   r<  K      
r<  c                   @   s   e Zd Zdd ZdS )TestApplyOverAxesc                 C   s   t dddd}ttj|ddg}tdgdgdggg}t|| t||d t	< ttj|ddg}td	gd
gdggg}t|| d S )Nr   r9   rw   r   r   r   \   |   r   r  )
r
   r   r%   rN   rj   r	   r   r   r"  r~   )rO   r?   rP   ZctrlrS   rS   rT   
test_basicc  s   
zTestApplyOverAxes.test_basicN)r   r   r   rH  rS   rS   rS   rT   rE  a  s    rE  c                   @   s   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d Zdd Zejjdg d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d0d1 Zd2S )3
TestMedianc                 C   s4   t jjt jt jgt jt jggdd}t|t j d S )Nr   r   )rN   rZ   r   infr   rO   rrS   rS   rT   test_pytypeo  s   $zTestMedian.test_pytypec                 C   s   t jjt jt jt jgt jt jggdd}t|t j t jjt jt jt jgt jt jggd d}t|t j t jjt jjt jt jgt jt jggdddd}t|jd t jjt jjt jt jgt jt jggddd d}t|jd d S )Nr   r   Tr   )rN   rZ   r   r   rJ  r   r>   rK  rS   rS   rT   test_infs  s8   



zTestMedian.test_infc                 C   sl  t d}tt j|d ttt j|tu td}tt j|d ttt j|tu d}tt j|d ttt j|tu t d	dd}tt jj|dd	t j|dd	 tt jj|d
d	t j|d
d	 tt jj|d
d	tu t d	dd}tt jj|dd	t j|dd	 tt jj|d
d	t j|d
d	 tt jj|d
d	tu d S )Nrv   r   ru   r   r|   r   H   r   r   r<   g      R@)
rN   r
   r   rZ   r   r   r[   r   rf   r   r(  rS   rS   rT   test_non_masked  s"   
    zTestMedian.test_non_maskedc                 C   s  t tddgd dgd  d}ttj|d ttj|jdd tttj|t	u t td	
d
ddgd dgd  d}ttj|d ttj|jdd tttj|t	u tjj|ddd}t|ddg t|jdd tt|t	u  dS )z5test the examples given in the docstring of ma.medianru   r   r   r<   r   r   rS   shape mismatchrb   r9   r|   rt   r   r   Tr   Zoverwrite_inputr   r   r8   N)r	   rN   r
   r   rZ   r   r   r   r[   r   r   )rO   r   Zma_xrS   rS   rT   test_docstring_examples  s   "*z"TestMedian.test_docstring_examplesc                 C   s   d}t dD ]q}dD ]l}td||d}tt | |ddg}|D ] \}}ztjj|||d W q! tyA   t|||||f w t|d  |gddg}|D ]$\}}ztjj|||d W n tj	j
yk   Y qQw t|||||f q
qd S )	Nz5mask = %s, ndim = %s, axis = %s, overwrite_input = %sr|   )FTr<   )ndminr>   FTrR  )rf   r	   	itertoolsproductrN   rZ   r   	ExceptionAssertionError
exceptionsZ	AxisError)rO   msgrT  r>   r   argsr   ZoverrS   rS   rT   test_axis_argument_errors  s,   z$TestMedian.test_axis_argument_errorsc                 C   sD   t ddd}ttj|d t ddd}ttj|tjj d S )Nr<   Fr   T)r	   r   rN   rZ   r   r   r(  rS   rS   rT   test_masked_0d  s   zTestMedian.test_masked_0dc                 C   s  t tddd}ttj|tjj ttj|jdd tt	tj|tjj
ju  t tddd}ttj|d ttj|jdd tt	tj|tu t tdg dd}ttj|d	 ttj|jdd tt	tj|tu t tdg d
d}ttj|d ttj|jdd tt	tj|tu t tdg dd}ttj|d ttj|jdd tt	tj|tu t tdg dd}ttj|d ttj|jdd tt	tj|tu t tdg dd}ttj|d	 ttj|jdd tt	tj|tu t tdg dd}ttj|d	 ttj|jdd tt	tj|tu d S )Nr|   Tr   rS   rQ  Fr   r   r   )r   r<   r<   r<   r<   r   )r   r<   r<   r   r   r   r   rt   r   r   )r	   rN   r
   r   rZ   r   r   r   r   r[   r\   ZMaskedConstantr   r(  rS   rS   rT   test_masked_1d  s@   zTestMedian.test_masked_1dc                 C   sB   t tjtg dg ddjtjtg dg ddj d S )Nr   r   r   r&  )r   rN   rZ   r   r	   r   rO   rS   rS   rT   test_1d_shape_consistency  s   z$TestMedian.test_1d_shape_consistencyc                 C   s   d\}}t tdd|}t |d d< |dd < t tj||ftd}|d d  |d d df< tt|}td|D ]}tj	
| || |d d |f< q<tt|d d df d tt|d tt|dd	t| tt|jdd	t| d S )
N)e   r        r   rb   r:   r   r<   r   )r   rN   Zlinspacer   emptyrM   r
   r]   rf   r   shuffler   r   r   r   )rO   r4  pr   r   idxrl   rS   rS   rT   r     s   zTestMedian.test_2dc                 C   s   t tddd}t |d d< |dd < tt|d tttj	|t
u tt|ddg d tttj	j|ddt
u  tt|d	dg d
 tttj	j|d	dt
u  tt|d	djg d d S )Nr  rb   rw         -@r   r   )      +@ri  g      /@r<   )
r   r   r   rb   r   r   r   r   r   r   )
r<   r<   r<   r   r   r   r   r<   r<   r<   )r   rN   r
   r   r   r   r   r   r[   rZ   r   r>   r(  rS   rS   rT   test_2d_waxis  s   zTestMedian.test_2d_waxisc                 C   s   t jdddd}t||d dk< tt|dddgdd	gddgd
d	gg d|_tt|dddgddgddgg t jdddd}t||d dk< tt|dddgddgddgg d S )Nr   rw   r   r9   r   r   rv   rt   r   r   )r   rw   r9   c   rb   r   r   r   r|   ru   r   r   )rN   rZ   r
   r   r   r   r   r   r(  rS   rS   rT   rA    s   ("&zTestMedian.test_3dc                 C   sL   t tddd}t |d d< |dd < tt|ddt|dd d S )Nr  rb   rw   rh  r   r   r<   )r   rN   r
   r   r   r   r   r(  rS   rS   rT   test_neg_axis  s   zTestMedian.test_neg_axisc                 C   s   dD ]?}t t|}t |d d< |dd < t td}t||d}|dkr.t|d nt|d t||u  tt|t	u  qd S )	N)r        >@r   g      ?@rw   rh  rS   r9  r  ri  g      .@)
r   rN   r
   r   r   r   r   r   r[   r   )rO   vr   r:  rL  rS   rS   rT   test_out_1d  s   
zTestMedian.test_out_1dc                 C   s  dD ]}}t t|dd}t |d d< |dd < t td}t|d|d}|dkrMt d	gd g d
 d	gd  dgd dgd  dgd  d}nt d	gd g d d	gd  dgd dgd  dgd  d}t|| t||u  tt	|t
u  qd S )N)r   g      D@r  rn  rb   r   rw   rh  r<   )r   r:  r  r   )rb   r   r   r   TFr   r   )rj  g     1@g     5@g     9@)r   rN   r
   r   r   r   r   r   r   r[   r   )rO   ro  r   r:  rL  erS   rS   rT   test_out,  s    
zTestMedian.test_outr   )Nr<   rW   r   )rh  r   )argnamesZ	argvaluesc                    s   t jdtd}t jdt |jd d d f  }|t j}t j|t	|< t
t |j|d|d u r:dj }nt|j t	 fddtjD }t
t |}t|d|d	}||u sdJ t|j| d S )
N)rw   r|   re   r   r:   )r      r   rW   c                 3   s&    | ]}| v r
d nj | V  qdS )r<   N)r   ).0rl   Z	axis_normr   rS   rT   	<genexpr>R  s    
z/TestMedian.test_keepdims_out.<locals>.<genexpr>T)r   r   r:  )rN   r   r~   r   r	   r   r"  Zintpr   tupler   r   ndimr   rf   rd  r   r   )rO   r   r>   r   Z	shape_outr:  r   rS   rv  rT   test_keepdims_out=  s   $zTestMedian.test_keepdims_outc                 C   sF   ddgddgddgg}t j|d}ddg}tt jj|dd| d S )Nr   r   r   r   r   )rN   rZ   Zmasked_equalr   r   )rO   ri   r_   r   rS   rS   rT   $test_single_non_masked_value_on_axisY  s   z/TestMedian.test_single_non_masked_value_on_axisc                 C   s  dt jdtdfD ]}t jdt jdgg dg}||_t jj|d d}tt 	| t
|t j t jj| dd}tt 	| t
|t j t jj|dd}tt|t t
|dt jdg t jj|dd}tt|t t
|t jd	g t jj|d
d}tt|t t
|t jd	g q	t jdt jdgg dg}t jj|d d d	f< t
t jj|d dt j t
t jj|dddt jdg t
t jj|ddt jdg d S )NFrt   r:   r<   rw   r   r   r   r9   r   r   )rN   r   r~   rZ   r	   r   r>   r   r   isscalarr   Zravelr   r[   r   r   )rO   r>   dmrL  rS   rS   rT   test_nanb  s.    zTestMedian.test_nanc                 C   s   t jt d}t jt d}t j|d< t jj|d< tt jj|d|d| t jt d}tt jj|d|d| t jt d	}tt jj||d| d S )
N)r   rw   r   r9   r<   rG   r   r9  rw   r<   rS   )	rN   rZ   r   r   r   r   r   r   r   )rO   or   rS   rS   rT   test_out_nan  s   
zTestMedian.test_out_nanc                 C   s  t jt jdtd}t jj|d d d< t j|d< tt j|t j tt jj|ddt j t jt jdtd	ddd}t |j
d dk|_| }t j|d	< t j|d
< tt j|t j tt t j| t jj|dd}t j|d< t j|d< tt j|d| t jj|dd}t j|d< t j|d< tt j|d| t jj|dd}t j|d< t j|d< tt j|d| d S )Nr   r:   rw   r9   r   r   r   r<   r   )r<   r<   r9   r9   rw   r   r<   rw   r   )rN   rZ   r   r
   rM   r   r   r   r   r   r}   r>   copyr   r|  r   )rO   r?   Zaorigr@   rS   rS   rT   test_nan_behavior  s0   
 







zTestMedian.test_nan_behaviorc                 C   s   t jg dg dgt jd}t jj||dkd}tt jj|ddd tt jj|ddjd tt jj|d	d|d	  tt j|d d S )
N)rw   rw      r:   rw   r   r<   r   r  Fr   )rN   r	   Zuint8rZ   r   r   r   r>   r   rS   rS   rT   test_ambigous_fill  s   zTestMedian.test_ambigous_fillc                 C   s  t jt j fD ]v}t |t jgt jt jgg}t jj|t |d}tt jj|dd|t jg tt jj|dd|t jg tt j|| t t jt j|gt jt j|gg}t jj|t |d}t	t jj|dd| t	t jj|ddj
d t	t jj|dd|d  t	t j|| t ||g||gg}tt j|| tt jj|dd| tt jj|dd| t j|d| dgdt jt jd	gd
t jt j|ggt jd}t jj|t |d}|dkrtt jj|dddd| dg tt j|d ntt jj|dddd| dg tt j|d tt jj|dddd|g tddD ]P}tddD ]G}t t jg| |g|  gd }t jj|t |d}tt j|| tt jj|dd| tt jj|ddt jg| |g|   q4q-qd S )Nr   r   r   r<   Fre   irc  r|   r   r:   r   r   r   g      @g      $g      "g      rb  rb   r9   )rN   rJ  r	   r   rZ   r   isnanr   r   r   r>   float32rf   )rO   rJ  r?   rl   rm   rS   rS   rT   test_special  sR   "
  "zTestMedian.test_specialc                 C   s  t jt jg td}t !}|t tt j	|t j
 t|jd jtu  W d    n1 s2w   Y  t jt jg tdd}t (}|t tddt tt j	|t j
 t|jd jtu  W d    n1 sqw   Y  t jt jg tdd}tt jj	|dd| tt jj	|d	d| t jt jt j
tdd}tjd
d$}tddt tt jj	|dd| t|d jtu  W d    d S 1 sw   Y  d S )Nr:   r   rw   )r;   rT  always r9   r   r<   T)record)rN   rZ   r   r	   rM   r   r  RuntimeWarningr   r   r   r   logcategorywarningsfilterwarningsr   catch_warnings)rO   r?   r   r@   rS   rS   rT   
test_empty  s,   

"zTestMedian.test_emptyc                 C   sX   t jt d}ttt j|tt	 t j
|d< ttt j|tt	 d S )Nr   r9   )rN   rZ   r   r
   r   r[   r   r"  rY   rM   r   )rO   r  rS   rS   rT   test_object  s   
 zTestMedian.test_objectN)r   r   r   rM  rN  rP  rS  r\  r]  r^  r`  r   rk  rA  rm  rp  rr  r   r   r   rz  r{  r~  r  r  r  r  r  r  rS   rS   rS   rT   rI  n  s8    &

	#	+rI  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestCovc                 C   s   t tjd| _d S Nr   )r	   rN   r   r   ri   r_  rS   rS   rT   setup_method  s   zTestCov.setup_methodc                 C   s   | j }tt|ddd jtj tt||ddd jtj |dk}tttj||ddd 	t
|dd  tttj|||ddd 	t
t| | f d S )NTrowvarr<   F)r   r  r   r   )ri   r   r6   r;   rN   r  r   rZ   r   r"  r~   r   r5   )rO   r   r>   rS   rS   rT   test_covhelper
  s,   zTestCov.test_covhelperc                 C   sZ   | j }tt|t| ttj|ddt|dd ttj|dddt|ddd d S )NFr  Tr  bias)ri   r   rN   r   r(  rS   rS   rT   test_1d_without_missing  s   zTestCov.test_1d_without_missingc                 C   sb   | j dd}tt|t| ttj|ddt|dd ttj|dddt|ddd d S )Nrw   r   Fr  Tr  )ri   r   r   rN   r   r(  rS   rS   rT   test_2d_without_missing&  s   zTestCov.test_2d_without_missingc                 C   s>  | j }t|d< || 8 }| }tt|t| ttj|ddt|dd ttj|dddt|ddd zt|dd W n	 tyJ   Y nw |dd }tt||d d d t||d d d  ttj||d d d ddt||d d d dd ttj||d d d dddt||d d d ddd d S )Nr   Fr  Tr  Zallow_maskedr<   )ri   r   meanrk   r   rN   r   r   )rO   r   nxrS   rS   rT   test_1d_with_missing.  s,   ,zTestCov.test_1d_with_missingc                 C   s6  | j }t|d< |dd}tt|t}t||j	}||
dd d d f  d}tt|t||jd d  |d   tt|ddtj|dd|jd  |  t|j	|}||
d d}tt|d	d
tj|d	d
|jd d  |d   tt|d	ddtj|d	dd|jd  |  d S )Nr   rw   r   r<   r   r   Tr  Fr  r  )ri   r   r   rN   Zlogical_notr   r"  rg   r   r   r  r3  r   r   r   )rO   r   ZvalidfracZxfrS   rS   rT   test_2d_with_missingF  s8    zTestCov.test_2d_with_missingN)	r   r   r   r  r  r  r  r  r  rS   rS   rS   rT   r    s    r  c                   @   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S )TestCorrcoefc                 C   s(   t tjd| _t tjd| _d S r  )r	   rN   r   r   ri   data2r_  rS   rS   rT   r  ^  s   zTestCorrcoef.setup_methodc                 C   s   | j | j}}t|}t||}t P}td ttt|dd |	td t
tj|ddt|dd t
t|dd| t
t||dd| t
t|dd| t
t||dd| W d    d S 1 shw   Y  d S )Nr  r   Zddofbias and ddof have no effectr   rw   ri   r  rN   r   r   r  simplefilterr   r.  filterr   )rO   r   r   r   Z	expected2suprS   rS   rT   	test_ddofb  s   

"zTestCorrcoef.test_ddofc                 C   s   | j | j}}t|}t 7}td ttt||dd ttt||dd ttt|dd |	td t
t|dd| W d    d S 1 sIw   Y  d S )Nr  TFr  r  r<   r  )rO   r   r   r   r  rS   rS   rT   	test_biasr  s   

"zTestCorrcoef.test_biasc                 C   s   | j }tt|t| ttj|ddt|dd t }|td ttj|dddt|ddd W d    d S 1 s@w   Y  d S )NFr  r  Tr  )ri   r   rN   r   r   r  r.  rO   r   r  rS   rS   rT   r    s   
"z$TestCorrcoef.test_1d_without_missingc                 C   s   | j dd}tt|t| ttj|ddt|dd t }|td ttj|dddt|ddd W d    d S 1 sDw   Y  d S )Nrw   r   Fr  r  Tr  )ri   r   r   rN   r   r   r  r.  r  rS   rS   rT   r    s   
"z$TestCorrcoef.test_2d_without_missingc              	   C   s  | j }t|d< || 8 }| }tt|t| ttj|ddt|dd t }|t	d ttj|dddt|ddd W d    n1 sMw   Y  zt|dd W n	 t
yc   Y nw |dd }tt||d d d t||d d d  ttj||d d d ddt||d d d dd t ?}|t	d tt||d d d t||d d d dd	 tt||d d d t||d d d d
d W d    d S 1 sw   Y  d S )Nr   Fr  r  Tr  r  r<   r  r9   r  )ri   r   r  rk   r   rN   r   r   r  r.  r   )rO   r   r  r  rS   rS   rT   r    sB   
,"z!TestCorrcoef.test_1d_with_missingc                 C   s$  | j }t|d< |dd}t|}t|}t|d dd df |d dd df  t Z}|td tt|ddd dd df |d dd df  tt|ddd dd df |d dd df  tt|ddd dd df |d dd df  W d    d S 1 sw   Y  d S )	Nr   rw   r   r  r   r  r<   r  )	ri   r   r   r   rN   r   r   r  r.  )rO   r   rP   rQ   r  rS   rS   rT   r    s$   
*"z!TestCorrcoef.test_2d_with_missingN)
r   r   r   r  r  r  r  r  r  r  rS   rS   rS   rT   r  \  s    r  c                   @   r   )TestPolynomialc                 C   s  t jd}t jddd}tt||dt ||d |t}t|d< |t}t |d< |d< t||d d df dd	d
\}}}}}t j|dd  |dd df 	 dd	d
\}}	}
}}t
|||||f||	|
||fD ]	\}}t|| qpt||d d df dd	d
\}}}}}t j|dd |dddf dd	d
\}}	}
}}t
|||||f||	|
||fD ]	\}}t|| qt||dd	d
\}}}}}t j|dd |ddd d f dd	d
\}}	}
}}t
|||||f||	|
||fD ]	\}}t|| qt jdd }| }|dd }|dd }|dd }t||dd	|d\}}}}}t j||dd	|d\}}	}
}}t|| t
|||||f||	|
||fD ]
\}}t|| qMd S )Nrb   r  r   r9   rw   r   rE   r   r   Trh   r<   )rh   r   )rN   r   r   r   r   r   viewr   r   rk   zipr  r   )rO   r   r   CRKSDrV   rL  rn   rp   r   r?   a_r   ZwoZxsZyswsrS   rS   rT   test_polyfit  s@   

&"&&0&4&
&zTestPolynomial.test_polyfitc                 C   s   t jd}t jddd}t j|d< t j|d< |t}|t}t|d< t|d< t||ddd	\}}}}}t j|d
d |d
dd d f ddd	\}}	}
}}t	|||||f||	|
||fD ]	\}}t
|| qbd S )Nrb   r  r   r9   r   r  rw   Tr  r<   )rN   r   r   r   r   r  r   r   r   r  r   )rO   r   r   r  r  r  r  r  rV   rL  rn   rp   r   r?   r  rS   rS   rT   test_polyfit_with_masked_NaNs  s   



4&z,TestPolynomial.test_polyfit_with_masked_NaNsN)r   r   r   r  r  rS   rS   rS   rT   r    s    'r  c                   @   s   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d Zdd Zdd Zdd  Zd!d" Zd#S )$TestArraySetOpsc                 C   sn   g d}t |ddd}tt|d t t|d tg dg dd t|d g d	 t|d
 g d d S )Nr<   r<   r<   r9   r9   rw   TZreturn_indexZreturn_inverser   r   r   r   r<   )r   rw   r|   r9   )r   r   r   r<   r<   r9   )r   r   r   r   r   r   r   rS   rS   rT   test_unique_onlist  s   z"TestArraySetOps.test_unique_onlistc                 C   s   t g dg dd}t|ddd}t|d t g dg dd t|d	 g d
 t|d g d d|_t g dg ddd}t|ddd}t|d t g dg dd t|d	 g d
 t|d g d d S )Nr  )r   r   r<   r   r<   r   r   Tr  r   )r<   r9   rw   r   r   r   r   r<   r<   )r   rw   r|   r9   r9   )r   r   rw   r<   rw   r9   rw   )ri   r>   
fill_value)r   r   r   r  r   rS   rS   rT   test_unique_onmaskedarray  s   z)TestArraySetOps.test_unique_onmaskedarrayc                 C   s   t g ddd}t|ddd}t|d t dgdgd t|d dg t|d g d t}t|ddd}t|d t t t|d dg t|d dg d S )	Nr   Tr   r  r   r<   r9   r   )r   r   r   r   r   rS   rS   rT   test_unique_allmasked  s   z%TestArraySetOps.test_unique_allmaskedc                 C   sd   t tdg dd}tg dg dd}t|}t|| t|d|d t|j|j d S )Nr|   r<   r   r   r   r<   r   )r<   r<   r<   r   )r<   r   r   r<   r   )r   rN   r
   r	   r$   r   r3  r>   )rO   r   rQ   rP   rS   rS   rT   test_ediff1d+  s   
zTestArraySetOps.test_ediff1dc                 C      t tdg dd}t|td}tg dg dd}t|| t|d|d t|j|j t|g dd}tg d	g d
d}t|| t|d|d t|j|j d S )Nr|   r  r   )to_begin)r   r<   r<   r<   r   )r<   r<   r   r   r<   r   r   )r<   r9   rw   r<   r<   r<   r   )r   r   r   r<   r   r   r<   	r   rN   r
   r$   r   r	   r   r3  r>   rO   r   rP   rQ   rS   rS   rT   test_ediff1d_tobegin4     

z$TestArraySetOps.test_ediff1d_tobeginc                 C   r  )Nr|   r  r   )to_end)r<   r<   r<   r   r   )r<   r   r   r<   r<   r   r   )r<   r<   r<   r   r<   r9   rw   )r<   r   r   r<   r   r   r   r  r  rS   rS   rT   test_ediff1d_toendC  r  z"TestArraySetOps.test_ediff1d_toendc                 C   s   t tdg dd}t|ttd}tg dg dd}t|| t|d|d t|j|j t|g dtd}tg d	g d
d}t|| t|d|d t|j|j d S )Nr|   r  r   r  r  )r   r<   r<   r<   r   r   )r<   r<   r   r   r<   r<   r   r   )r   r<   r<   r<   r   r<   r9   rw   )r<   r<   r   r   r<   r   r   r   r  r  rS   rS   rT   test_ediff1d_tobegin_toendR  s   

z*TestArraySetOps.test_ediff1d_tobegin_toendc                 C   s   t d}t|}tg dg dd}t|| tt|t t|d|d t|j	|j	 t|t
t
d}tg dg dd}tt|t t|d|d t|j	|j	 d S )	Nr|   r<   r<   r<   r<   r   r   r   r   r   r   r  r   r   )rN   r
   r$   r	   r   r   r   r   r3  r>   r   r  rS   rS   rT   test_ediff1d_ndarrayb  s   

z$TestArraySetOps.test_ediff1d_ndarrayc                 C   sT   t g dg dd}t g dg dd}t||}t g dg dd}t|| d S )N)r<   rw   rw   rw   r  r   )rw   r<   r<   r<   )r<   rw   r   r   )r	   r"   r   )rO   r   r   rP   rQ   rS   rS   rT   test_intersect1dr  s
   
z TestArraySetOps.test_intersect1dc                 C   s$  t g dg dd}t g dg dd}t||}t|t g d t g dg dd}g d}t||}t|t g dg d	d t g d
}t g d}t||}tt|t t|g d t g dg dd}t g dg d	d}t||}tt|t t|g d tg tg g  d S )Nr<   r9   r|   re   r   r   r   r   r   r<   r   r<   r9   rw   r   r|   r   r2  )rw   r   re   r<   r9   rw   r   r|   rw   r   re   r   r  r   )rt   r|   r   r   r<   ru   r9   rw   r   r<   r   r   rt   r|   r   ru   )r	   r   r   r   r   r   r   rO   r?   r@   rP   rS   rS   rT   test_setxor1dz  s&   



zTestArraySetOps.test_setxor1dc                 C   s   t g dg dd}g d}t||dd}t|t g dg dd t g d	g d
d}t g dg dd}t||dd}tt|t t|g d t dgdgdgdgg}t ddgddgg}t||dd}tt|t t|g d d S )Nr  r  r   r  T)Zassume_uniquer  r  r  r  r  r   r<   ru   r9   rw   rt   r|   r   )r	   r   r   r   r   r   r  rS   rS   rT   test_setxor1d_unique  s   z$TestArraySetOps.test_setxor1d_uniquec                 C   s   t dg d}t g d}d|d< t||d}tg dg dd}tdtd	}d
|d< d
|d< d
|d< t||}tt|t	 t
|| t |||j  |j @ }t
|| d S )Nr   r   r<   )r<   r9   r   r   )	r   rb   r  r  r<   rw   r   r   r  )	r   r<   r   r<   r   r<   r   r<   r   )ri   r>   r:   Tr   r   )r   r9   rw   )rN   r
   r   r   r	   r~   r1   r   r   r   r   r>   )rO   r?   r>   r@   ecrV   r   rS   rS   rT   	test_isin  s    

zTestArraySetOps.test_isinc                 C   s   t g dg dd}t g dg dd}t||}t|g d t g dg dd}t g dg d	d}t||}t|g d
 tg tg g  d S )Nr  r  r   r  r2  )TTTFTr|   r|   r9   r<   r   r<   r|   r   r   )TTFTT)r	   r#   r   r   r  rS   rS   rT   	test_in1d  s   

zTestArraySetOps.test_in1dc                 C   s   t g dg dd}t g dg dd}ttt||t||dd t g dg dd}t g d	g d
d}ttt||t||dd tg tg g dd d S )Nr  r  r   r  r2  T)invertr  r  r   )r	   r   rN   r  r#   r   r7  rS   rS   rT   test_in1d_invert  s     z TestArraySetOps.test_in1d_invertc           	      C   s   t g dg dd}t g dg dd}t||}t g dg dd}t|| t g dg dgg d	g d
gd}t g dg dd}t g dg dd}t||}t|| tg tg g  d S )N)r<   r9   r|   re   r|   r   r2  r   r  )r<   r9   rw   r   r|   re   r   )r   r   r   r   r   r   r<   r   r   r   r   r   r  )r   r<   r9   rw   r   r|   )r	   r!   r   r   )	rO   r?   r@   rP   rQ   r   r   Zezr   rS   rS   rT   test_union1d  s   

$

zTestArraySetOps.test_union1dc                 C   s   t g dg dd}t g d}t||}t|t g dg dd td}td}tt||t dd	g t g tjg d}tt|g jtj d S )
N)rt   r|   r   re   re   r<   r9   r<   )r   r   r   r   r   r   r   r<   r   )r9   r   rw   rw   r9   r<   r|   )rt   re   r   r   rb   ru   rv   )r	   r    r   r
   rN   Zuint32r;   r  rS   rS   rT   test_setdiff1d  s   
zTestArraySetOps.test_setdiff1dc                 C   s8   t g d}t g d}tt||t dg d S )N)r?   r@   rV   )r?   r@   rp   rV   )rN   r	   r   r    r7  rS   rS   rT   test_setdiff1d_char_array  s   z)TestArraySetOps.test_setdiff1d_char_arrayN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rS   rS   rS   rT   r    s$    		r  c                   @   r   )TestShapeBasec                 C   sn   t g dg dd}t|}t|jd t|jj|jj t|jd t|jj|jj t|jj|jj d S )Nr   r&  r   r  r  )r   r   r   r   r>   ri   r7  rS   rS   rT   test_atleast_2d  s   zTestShapeBase.test_atleast_2dc                 C   s  t d}t|jd t|jj|j t|jj|j t dd}|D ]}t|jd t|jj|j t|jj|j q!td}t|jd t|jj|j t|jj|j tdd}|D ]}t|jd t|jj|j t|jj|j q[td}t|jd t|jj|j t|jj|j tdd}|D ]}t|jd t|jj|j t|jj|j qtd}t|jd t|jj|jj d S )Nr   rW   r   rF   r   )r   r   r   r>   ri   r   r   r2   )rO   r@   r?   rS   rS   rT   test_shape_scalar  s<   


zTestShapeBase.test_shape_scalarN)r   r   r   r  r  rS   rS   rS   rT   r    rD  r  c                   @   r   )TestNDEnumeratec                 C   s   t dd}t j|td}t||d}ttt |tt| ttt|tt| ttt|tt|dd d S )Nr   )r<   rw   r9   r:   r   Frk   )	rN   r
   r   Z
zeros_liker~   r   r   r!  r3   )rO   ZordinaryZ
empty_maskZ	with_maskrS   rS   rT   test_ndenumerate_nomasked5  s   

z)TestNDEnumerate.test_ndenumerate_nomaskedc                 C   s   t d}t d}t d}ttt|g  ttt|g  ttt|ddtttddtg  ttt|g  ttt|ddtttddtg  d S )NrS   )d   r   Fr  r  r   )r/   r   r!  r3   r  rN   Zndindexr   )rO   r?   r@   rV   rS   rS   rT   test_ndenumerate_allmasked@  s   z*TestNDEnumerate.test_ndenumerate_allmaskedc                 C   s   t tddg dg dg dgd}g d}ttt|| tttt|dd	|j t|dd	D ]\}}t|| | q6d S )
Nr   r  r  )r<   r<   r   r<   r  r   ))r   rt   ))r9   r   ru   )r  rv   )rG   rb   )r  r   Fr  )	r   rN   r
   r   r   r!  r3   r]   r}   )rO   r?   itemsZ
coordinatevaluerS   rS   rT   test_ndenumerate_mixedmaskedL  s   z,TestNDEnumerate.test_ndenumerate_mixedmaskedN)r   r   r   r  r  r  rS   rS   rS   rT   r  3  s    r  c                   @   r   )	TestStackc                 C   s   t g dg dd}t g dg dd}t||gdd}t|jd t|j|d j t|j|d	 j t||g}t|j|j t|j|j t||gd	d}t|jd
 t|j|d d df j t|j|d d d	f j d S )Nr   r&  r   rv   ru   re   r   r   r   r  r<   rw   r9   r   r4   r   r   r   r>   r5   ri   rO   r?   r@   rV   r   rS   rS   rT   test_stack_1d[  s   zTestStack.test_stack_1dc                 C   s   t g ddd}t g ddd}t||gdd}t|jd t|j|d j t|j|d	 j t||g}t|j|j t|j|j t||gd	d}t|jd
 t|j|d d df j t|j|d d d	f j d S )Nr   Tr   r  Fr   r   r  r<   r  r  r  rS   rS   rT   test_stack_masksm  s   zTestStack.test_stack_masksc           
      C   s  d}t jdd|}t jdd|}t jdd|t}t jdd|t}t||d}t||d}t||gdd}d| }	t|j|	 t	|j
|d j
 t	|j
|d j
 t||gd	d}|d }	t|j|	 t	|j
|d
 j
 t	|j
|d j
 d}t jdd|}t jdd|}t jdd|t}t jdd|t}t||d}t||d}t||gdd}d| }	t|j|	 t	|j
|d j
 t	|j
|d j
 t||gd	d}|d }	t|j|	 t	|j
|d
 j
 t	|j
|d j
 d S )Nr  r   rb   r9   r   r   r8   r<   r   ).r   ).r<   )rw   r9   r   r|   )rN   r   randintr"  r~   r   r4   r   r   r   r>   )
rO   ZshpZd1Zd2r   r   Za1r#  rV   Zc_shprS   rS   rT   test_stack_nd  sD   zTestStack.test_stack_ndN)r   r   r   r  r   r  rS   rS   rS   rT   r  Y  s    r  )O__doc__r  rU  r   numpyrN   Znumpy._core.numericr   Znumpy.testingr   r   Znumpy.ma.testutilsr   r   r   r   Znumpy.ma.corer	   r
   r   r   r   r   r   r   r   r   r   Znumpy.ma.extrasr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r   r   r   r   r<  rE  rI  r  r  r  r  r  r  r  rS   rS   rS   rT   <module>   sD   4
   ,F  4   Wk: |7&