U
    O8c                    @   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> G dd	 d	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%ZMd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vstackc                   @   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;   r8   r8   r>   r@   bar@   Zbbr@   r;   rE   )r/   floatr	   r   npr:   )selftestcontroldt rR   >/tmp/pip-unpacked-wheel-fd_gsd75/numpy/ma/tests/test_extras.pytest_masked_all&   s:    


 
 
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;   rE   rR   rM   r:   objectmar/   r   typecorer   lenr   Z_fill_valuerN   Zmy_dtype
masked_arrrR   rR   rS   "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?   rV   r;   rE   rR   rW   r]   rR   rR   rS   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;   r8   r9   r<   r>   r?   r@   rA   rD   rE   )
   ra   rG   rH   rJ   rK   )r	   rL   r0   r   rM   r:   )rN   baserO   rP   rQ   rR   rR   rS   test_masked_all_likeZ   s     

 z TestGeneric.test_masked_all_likec           	      C   s   t ddD ]}t d| D ]}tj|td}tj||td}td| }|d| @ dk|_d}||D ]}||j|  7 }qf|t	krt
|  | q|j |_t
|  | qq
d S )Nr;      r8   r9   r   )rangerM   r
   intfullr   r=   datasumr+   r   
compressed)	rN   r@   ijkjar>   sslrR   rR   rS   check_clumpn   s    
zTestGeneric.check_clumpc                 C   s^   t td}t|ddddddg< t|}tddtdd	tddg}t|| | t d S 
Nra   r   r;   r8         	      rd   )r   rM   r
   r   r*   slicer   rq   rN   r>   rO   rP   rR   rR   rS   test_clump_masked~   s    
zTestGeneric.test_clump_maskedc                 C   sV   t td}t|ddddddg< t|}tddtd	dg}t|| | t d S rr   )r   rM   r
   r   r+   rw   r   rq   rx   rR   rR   rS   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 )	Nra   r   r9   rv   rt      rs   ru   )
r
   r,   r   rw   sizerM   r   boolr=   r   )rN   r>   rO   rR   rR   rS   test_flatnotmasked_contiguous   s    z)TestGeneric.test_flatnotmasked_contiguousN)__name__
__module____qualname__rT   r_   r`   rc   rq   ry   rz   r~   rR   rR   rR   rS   r6   $   s   

r6   c                   @   s   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dddgddgdddgdgdgfdddgdddggddddggddgdddggdddggfgdd Zd d! ZdS )"TestAveragec                 C   s<  t ddddgddddgd}tdt|dd	 tdt|ddddgd
 t|ddddgdd\}}td| t|dk t|d d < tt|dd	jdg t ddddgddddg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              ?       @      @TFr=   r   axisweightsr   returned      @r8   r;   r   r   )r	   r   r   r   r   r=   reshape)rN   ZottresultwtsrR   rR   rS   test_testAverage1   s     
zTestAverage.test_testAverage1c                 C   s  ddddddg}ddddddgddddddg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dddd	ddg tt|ddt|ddt|ddd g td}ddddddg}ddddddgddddddgg}t	d}ddddddg}	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ddddddg tt|
ddddg tt|
d|dddddddg d S )Nr   r;   rs   r9   r         @)r   r   r   r         (@r   g
@r   r   r   g      $@Tg     X@g      @      @)r
   rM   Zfloat_r   r   r	   addreducer   r   r   r=   r   )rN   w1w2xym1m2Zm3Zm4Zm5zrR   rR   rS   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 )Nrs   rv   r;   Tr   )r8   r8   rv   r   r   r   r   )r   r   r8      Fr         ?r   r   g@      ?r   )r
   r   r   r   r   r	   rL   r   )rN   r>   r?   Zr1r   Zr2r   Za2dZa2dmZa2daZa2dmarR   rR   rS   test_testAverage3   s*    
zTestAverage.test_testAverage3c                 C   s   t dddgdd}t jj|dgdgdggd}t ddd	gdd}t||ddd
}tdgdgdggdgdgdgg}t|| d S )Nr8   rv   r   r;   FTr   r{   rs   )r   r   keepdimsr   r   r   )rM   r	   r   rY   r   r   r   )rN   r   r?   wactualZdesiredrR   rR   rS   test_testAverage4   s    "zTestAverage.test_testAverage4c                 C   sH   t tddg}t|d t tddddgddddgd}t|d d S )	Nr;   r8   r   rv   r   FTr   )r   r	   r   rN   r>   rR   rR   rS   test_onintegers_with_mask   s    
 z%TestAverage.test_onintegers_with_maskc                 C   s  t jdddddgdddddggtd}tdddddgdd	d
ddg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 dddddgdddddg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 )Nr   r;   r9   y      ?       @y      @      @y      @      @y      @       @y              "@y              ?y       @      @y      @      @y      @      @r   r   r   r   r   r   r   r   )	rM   r	   r}   r   r   rj   r   realimag)rN   r=   r>   avexpectedZav0Z	expected0Zav1Z	expected1r   ZwavZwav0Zwav1rR   rR   rS   test_complex  sR      zTestAverage.test_complexz<x, axis, expected_avg, weights, expected_wavg, expected_wsumr;   r8   rv   Nr   r   g      ?       @r{   rs      r   r   r   r   g      #@c           
      C   s   t jj||dd}|jt |ks&tt|| t jj|||dd}|jt |ksXtt|| t jj|||ddd\}}	|jt |kstt|| |	jt |kstt|	| d S )NT)r   r   )r   r   r   )r   r   r   r   )rM   rY   r   r   AssertionErrorr   )
rN   r   r   Zexpected_avgr   Zexpected_wavgZexpected_wsumavgZwavgZwsumrR   rR   rS   test_basic_keepdims1  s    

 

zTestAverage.test_basic_keepdimsc           	      C   s  t jjt ddddddgdddgdddggd}tdddgd	d}tdddgdddgd}t|d|d	d
}t dddg}t|| t|d|d	d
}t dddg}t|| t jjddddgd	d	ddgd}t|dddt jgd}t|d t jjddddgddddgddddggd	ddd	gdd	ddgdd	dd	ggd}t jj|dt jdgdd}t jjdt jt jdgd	ddd	gd}t|| t	|j
|j
 d S )Nru   rv   r;   r   r   r{         Fr         @g     @g     @g0N@g0N@r   r   r   r   Tr   r   r         @r   g      "@r         @)rM   rY   r	   r
   r   r   r   r   nanr   r=   )	rN   r>   Zweights_unmaskedZweights_maskedZavg_unmaskedZexpected_unmaskedZ
avg_maskedZexpected_maskedZavg_expectedrR   rR   rS   test_masked_weightsH  sF     












zTestAverage.test_masked_weights)r   r   r   r   r   r   r   r   r   pytestmarkparametrizer   r   rR   rR   rR   rS   r      s$   "	,  
 

r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestConcatenatorc                 C   s   t td tddddddg td}dddddg}t||d	}t|dd|f }tt|t t |ddddddddddddg t |jt|dd|f  d S )
N)r;   r8   rv   r   r{   rs   r;   r8   rv   r   r{   rs   r   r   )	r   r   r	   r   r   r   
isinstancer   r=   )rN   r?   mdrU   rR   rR   rS   test_1dw  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{   ra   )ra   r{   )rM   randomrandZround_r   r   r   r   r   r=   Zr_)rN   Za_1Za_2Zm_1Zm_2Zb_1Zb_2r   rR   rR   rS   test_2d  s     zTestConcatenator.test_2dc                 C   sr   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dddg t|jd d ddg d S )Nr;   TFr8   )r   rM   rY   r   r   r=   rh   )rN   r   rR   rR   rS   test_masked_constant  s    z%TestConcatenator.test_masked_constantN)r   r   r   r   r   r   rR   rR   rR   rS   r   t  s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestNotMaskedc                 C   s  t tddddddddgdddddgdddddgdddddgdddddg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;   r8   rv   r   )rv   rv   rv   r   r   )r   r   r8   r   rv   )r   r8   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r;   r;   r8   r   r   )r   r;   r8   r   )r   r   r8   rv   )r   r8   r   r   )r   rM   r
   r   r.   r   rh   r   rN   rh   rO   rR   rR   rS   
test_edges  s>    




zTestNotMasked.test_edgesc                 C   sP  t tdddddddddddgddddddddgddddddddg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   rv   rt   r   r;   r   r            r8   rs   rd   )r   rM   r
   r   r-   r   rw   )rN   r>   tmprR   rR   rS   test_contiguous  s:    





zTestNotMasked.test_contiguousN)r   r   r   r   r   rR   rR   rR   rS   r     s   "r   c                   @   s~   e Zd Zdd Zdd Zdd Zejddd	d
g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	|d	d
ddgddddgddddggddddgddddgddddggg t|d	}t	|d	dd
ddgdd d!d"d#gdd$dddgdd%dddggdd&dddgd'd(d)d*d+gdd,dddgdd-dddggg t|d}t	|d	dd
ddgdd$dddgdd%dddggd.d/d0d1d2gd3d4d5d6d7gd8d9d:d;d<ggdd&dddgdd,dddgdd-dddggg t|d=}t|d>}t|d?}t	|| t	|| t	|| t|d
}t	|d	d
ddgdd!d"d#gddddgddddggd.d0d1d2gd@dAdBdCgd3d5d6d7gd8d:d;d<ggddddgd'd)d*d+gddddgddddggg t|dD}t|dE}t|dF}t	|| t	|| t	|| t|dG}t	|d	dd
ddgdd$dddgdd%dddggdd&dddgdd,dddgdd-dddggg t|dH}t	|| t|dI}t	|d	d
ddgddddgddddggd.d0d1d2gd3d5d6d7gd8d:d;d<ggddddgddddgddddggg t|dJ}t|dK}t|dL}t	|| t	|| t	|| t|dM}t	|d	d
ddgdd!d"d#gddddgddddggddddgd'd)d*d+gddddgddddggg t|dN}t	|| d S )ON<   rv   r   r{   )rv   r   r{   Tr;   r;   r;   r   r   r8   ra                        (   *   +   ,   2   4   5   6   7   9   :   ;   r;   rs   rd   rt   ru   r   r   )   -   .   /   0   1   3   8         r   r   r      r       !   "   #   $   %   &   '   rV   r   )r   r      r      r7   r   )r   r   r;   )r   r   r;   r8   )r   r8   )r;   r   )r   r   r   r8   )r   r   )
rM   r	   listre   r   r   astyper}   r'   r   )rN   r   r   r>   a2a3Za4rR   rR   rS   test_compress_nd  s    







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



















































	
z&TestCompressFunctions.test_compress_ndc                 C   s  t tddddddgdddgdddggd}tt|ddgdd	gg tt|ddddgd
dd	gg tt|dddgddgdd	gg t |jdddgdddgdddggd}tt|ddgd
d	gg tt|ddddgd
dd	gg tt|dddgddgd
d	gg t |jdddgdddgdddggd}tt|d	gg tt|dd
dd	gg tt|ddgdgd	gg t |jdddgdddgdddggd}tt|jd tt|djd tt|djd d S )Nru   rv   r;   r   r   r   r{   rd   rt   rs   r8   )r	   rM   r
   r   r   r(   _datar|   rN   r   rR   rR   rS   test_compress_rowcolsX  s$     "& "&&z+TestCompressFunctions.test_compress_rowcolsc                 C   s  t tddddddgdddgdddggd}tt|jdddgdddgdddgg tt|djdddgdddgdddgg tt|djdddgdddgdddgg t |jdddgdddgdddggd}tt|jdddgdddgdddgg tt|djdddgdddgdddgg tt|djdddgdddgdddgg t |jdddgdddgdddggd}tt|jdddgdddgdddgg tt|djdddgdddgdddgg tt|djdddgdddgdddgg t |jdddgdddgdddggd}tt|	 t
k tt|d	 t
k tt|d	 t
k tt|j	  tt|dj	  tt|dj	  d S )Nru   rv   r;   r   r   )r	   rM   r
   r   r   r)   r=   r
  r   allr   r  rR   rR   rS   test_mask_rowcolsl  sN    
&
&
&z'TestCompressFunctions.test_mask_rowcolsr   Nr   r;   funcrowcols_axisc              	   C   sf   t tddddddgdddgdddggd}tt" |||d}t|t|| W 5 Q R X d S )Nru   rv   r;   r   r   r   )r	   rM   r
   r   r   DeprecationWarningr   r)   )rN   r   r  r  r   resrR   rR   rS   #test_mask_row_cols_axis_deprecation  s    
z9TestCompressFunctions.test_mask_row_cols_axis_deprecationc                 C   s   t dd}ddddddg}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dddgdddgdddgg t||d	d}t|t |d|d t||d	d}t|t |d|d ddddddg}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dddgdddgdddgg t||d	d}t|t |d|d t|t|| t||d	d}t|t |d|d ddddddg}t||ddd}t||ddd}t||}t|jt t||}t|jt t|ddddddgddd}t|ddddddg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dddgdddgdddgg t||d	d}t|t |d|d t|ddddddgddd}t|ddddddg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dddgdddgdddgg t||d	d}t|t |d|d t|ddddddgddd}t|ddddddg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dddgdddgdddgg t||d	d}t|t |d|d d S )
Nr;   rd   r   r   r8   rv   T)strictF)	rM   r
   r   r   r   r   r=   filledr   )rN   nr   r>   r?   rU   rR   rR   rS   test_dot  sz    $$

  $  
$  $zTestCompressFunctions.test_dotc                 C   sn   t d}t|}ttt||tk ttt||tk ttt||tk ttt||tk d S )Nrv   )rM   eyer	   r   rZ   r   r   rN   r>   r?   rR   rR   rS   test_dot_returns_maskedarray  s    
z2TestCompressFunctions.test_dot_returns_maskedarrayc                 C   sD   t td}t td}t|||d}t||k t|| d S )Nrv   )rv   rv   out)r	   rM   r  r   r   r   r   )rN   r>   r  r  rR   rR   rS   test_dot_out  s
    z"TestCompressFunctions.test_dot_out)r   r   r   r	  r  r  r   r   r   rM   rY   Z	mask_rowsZ	mask_colsr  r  r  r  rR   rR   rR   rS   r     s   p 	F	r   c                   @   s   e Zd Zdd Zdd ZdS )TestApplyAlongAxisc                 C   s@   t dddd}dd }t|d|}t|ddgdd	gg d S )
Nr   r8   rv   c                 S   s   | d S Nr;   rR   )r?   rR   rR   rS   myfunc  s    z*TestApplyAlongAxis.test_3d.<locals>.myfuncr;   r   rd   ra   r
   r   r&   r   rN   r>   r   ZxarR   rR   rS   test_3d  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   r8   rv   r   c                 S   s   | d|  S r  rR   )r?   offsetrR   rR   rS   r     s    z1TestApplyAlongAxis.test_3d_kwargs.<locals>.myfuncr;   )r$  r{   rt   r   )r   r!  r"  rR   rR   rS   test_3d_kwargs  s    
z!TestApplyAlongAxis.test_3d_kwargsN)r   r   r   r#  r%  rR   rR   rR   rS   r    s   
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   r8   rv   r   r   r   \   |   r   r   )
r
   r   r%   rM   ri   r	   r   r   r  r}   )rN   r>   rO   ZctrlrR   rR   rS   
test_basic  s    
zTestApplyOverAxes.test_basicN)r   r   r   r)  rR   rR   rR   rS   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ejjdddd d!d"gd#d$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 ZdS )6
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   )rM   rY   r   infr   rN   rrR   rR   rS   test_pytype  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   )rM   rY   r   r   r+  r   r=   r,  rR   rR   rS   test_inf  s8    



zTestMedian.test_infc                 C   sl  t d}tt j|d ttt j|tk	 td}tt j|d ttt j|tk	 d}tt j|d ttt j|tk	 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k	 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k	 d S )Nru   r   rt   r   r{   r   H   r   r   r;   g      R@)
rM   r
   r   rY   r   r   rZ   r   re   r   r  rR   rR   rS   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	k	 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	k	 tjj|ddd}t|ddg t|jdd tt|t	k dS )z5test the examples given in the docstring of ma.medianrt   r   r   r;   r   r   rR   shape mismatchra   r8   r{   rs   r   r   Tr   Zoverwrite_inputr   r   r7   N)r	   rM   r
   r   rY   r   r   r   rZ   r   r   )rN   r   Zma_xrR   rR   rS   test_docstring_examples>  s    "*z"TestMedian.test_docstring_examplesc                 C   s   d}t dD ]}dD ]}td||d}tt | |ddg}|D ]H\}}ztjj|||d W qB tk
r   t|||||f Y qBX qBt|d  |gddg}|D ]J\}}ztjj|||d W n tj	k
r   Y qX t|||||f qqqd S )	Nz5mask = %s, ndim = %s, axis = %s, overwrite_input = %sr{   )FTr;   )ndminr=   FTr3  )
re   r	   	itertoolsproductrM   rY   r   	Exceptionr   Z	AxisError)rN   msgr5  r=   r   argsr   ZoverrR   rR   rS   test_axis_argument_errorsM  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   rM   rY   r   r   r  rR   rR   rS   test_masked_0de  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k t tddd}ttj|d ttj|jdd tt	tj|tk	 t tddd	dddgd}ttj|d
 ttj|jdd tt	tj|tk	 t tddd	d	d	d	gd}ttj|d ttj|jdd tt	tj|tk	 t tddd	d	ddgd}ttj|d ttj|jdd tt	tj|tk	 t tddd	d	ddgd}ttj|d ttj|jdd tt	tj|tk	 t tddd	d	d	d	dgd}ttj|d
 ttj|jdd tt	tj|tk	 t tddd	d	d	d	dgd}ttj|d
 ttj|jdd tt	tj|tk	 d S )Nr{   Tr   rR   r2  Fr   r   r;   r   r   r   r   rs   r   )r	   rM   r
   r   rY   r   r   r   r   rZ   r[   ZMaskedConstantr   r  rR   rR   rS   test_masked_1dl  s@    zTestMedian.test_masked_1dc              	   C   sJ   t tjtdddgdddgdjtjtdddgdddgdj d S )Nr;   r8   rv   r   r   )r   rM   rY   r   r	   r   rN   rR   rR   rS   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< qxt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   ra   r9   r   r;   r   )r   rM   Zlinspacer   emptyrL   r
   r\   re   r   shuffler   r   r   T)rN   r  pr   r   idxrk   rR   rR   rS   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
k	 tt|ddddd	g tttj	j|ddt
k tt|d
dddddddddddg
 tttj	j|d
dt
k tt|d
djd
d
d
ddddd
d
d
g
 d S )Nr   ra   rv         -@r   r         +@g      /@r;   r   r   r   )r   rM   r
   r   r   r   r   r   rZ   rY   r   r=   r  rR   rR   rS   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   rv   r   r8   r   r   ru   rs   r   r   )r   rv   r8   c   ra   r   r   r   r{   rt   r   r   )rM   rY   r
   r   r   r   r   r   r  rR   rR   rS   r#    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   ra   rv   rH  r   r   r;   )r   rM   r
   r   r   r   r   r  rR   rR   rS   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||k tt|t	k qd S )	N)r         >@r   g      ?@rv   rH  rR   r  r   rI  g      .@)
r   rM   r
   r   r   r   r   r   rZ   r   )rN   vr   r  r-  rR   rR   rS   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rt d	gd dd
ddg d	gd  dgd dgd  dgd  d}nBt d	gd ddddg d	gd  dgd dgd  dgd  d}t|| t||k tt	|t
k qd S )N)r   g      D@r   rN  ra   r   rv   rH  r;   )r   r  r   r   r   r   r   TFr   r   rJ  g     1@g     5@g     9@)r   rM   r
   r   r   r   r   r   r   rZ   r   )rN   rO  r   r  r-  erR   rR   rS   test_out  s    
  
zTestMedian.test_outr   Nr;   rV   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 krtdj }n*t|j t	 fddtjD }t
t |}t|d|d	}||kstt|j| d S )
N)rv   r{   rd   r   r9   )r      r   rV   c                 3   s$   | ]}| krd nj | V  qdS )r;   N)r   ).0rk   Z	axis_normr   rR   rS   	<genexpr>  s    z/TestMedian.test_keepdims_out.<locals>.<genexpr>T)r   r   r  )rM   r   r}   r   r	   r   r  Zintpr   tupler   r   ndimr   re   rC  r   r   r   )rN   r   r=   r   Z	shape_outr  r   rR   rV  rS   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   )rM   rY   Zmasked_equalr   r   )rN   rh   r^   r   rR   rR   rS   $test_single_non_masked_value_on_axis  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dddg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dddg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 )NFrs   r9   r;   rv   r8   r   r   r   r   )rM   r   r}   rY   r	   r   r=   r   r   isscalarr   Zravelr   rZ   r   r   )rN   r=   dmr-  rR   rR   rS   test_nan  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   rv   r   r8   r;   rF   r   r  rv   r;   rR   )	rM   rY   r   r   r   r   r   r   r   )rN   or   rR   rR   rS   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   r9   rv   r8   r   r   r   r;   )r;   r8   rv   )r;   r;   r8   r8   rv   r  r;   rv   r  )rM   rY   r   r
   rL   r   r   r   r   r   r|   r=   copyr   r\  r   )rN   r>   Zaorigr?   rR   rR   rS   test_nan_behavior.  s0    
 







zTestMedian.test_nan_behaviorc                 C   s   t jdddgdddg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 )	Nrv      r9   r   r;   r   Fr   )rM   r	   Zuint8rY   r   r   r   r=   r   rR   rR   rS   test_ambigous_fillQ  s     zTestMedian.test_ambigous_fillc                 C   s  t jt j fD ]}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 n2t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 ]}tddD ]}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|   qhqZqd S )Nr   r   r   r;   Frd   irB  r{   r   r9   r   r   r   g      @g      $g      "g      rA  ra   r8   )rM   r+  r	   r   rY   r   isnanr   r   r   r=   Zfloat32re   )rN   r+  r>   rk   rl   rR   rR   rS   test_specialZ  sL    "
  "zTestMedian.test_specialc              	   C   st  t jt jg td}t 8}|t tt j	|t j
 t|jd jtk W 5 Q R X t jt jg tdd}t F}|t tddt tt j	|t j
 t|jd jtk W 5 Q R X 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k W 5 Q R X d S )Nr9   r   rv   )r:   r5  always r8   r   r;   T)record)rM   rY   r   r	   rL   r   rn  RuntimeWarningr   r   r   r   logcategorywarningsfilterwarningsr   catch_warnings)rN   r>   r   r?   rR   rR   rS   
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   r8   )rM   rY   r   r
   r   rZ   r   r  rX   rL   r   )rN   rb  rR   rR   rS   test_object  s    
zTestMedian.test_object)r   r   r   r.  r/  r1  r4  r;  r<  r=  r?  r   rK  r#  rM  rP  rR  r   r   r   rZ  r[  r^  rc  rg  ri  rk  ru  rv  rR   rR   rR   rS   r*    s@   &

	#	+r*  c                   @   s4   e Z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	   rM   r   r   rh   r>  rR   rR   rS   setup_method  s    zTestCov.setup_methodc                 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 )NFrowvarTr{  bias)rh   r   rM   r   r  rR   rR   rS   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 )Nrv   r   Frz  Tr|  )rh   r   r   rM   r   r  rR   rR   rS   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k
r   Y nX |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   Frz  Tr|  Zallow_maskedr;   )rh   r   meanrj   r   rM   r   
ValueError)rN   r   nxrR   rR   rS   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   rv   r   r;   r   r   Tr}  Frz  r|  )rh   r   r   rM   Zlogical_notr   r  rf   r   rE  r  r  r   r   r   )rN   r   ZvalidfracZxfrR   rR   rS   test_2d_with_missing  s8     zTestCov.test_2d_with_missingN)r   r   r   ry  r~  r  r  r  rR   rR   rR   rS   rw    s
   rw  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 rx  )r	   rM   r   r   rh   data2r>  rR   rR   rS   ry    s    zTestCorrcoef.setup_methodc              	   C   s   | j | j }}t|}t||}t }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 5 Q R X d S )Nrl  r   Zddofbias and ddof have no effectr   rv   rh   r  rM   r   r   rr  simplefilterr   r  filterr   )rN   r   r   r   Z	expected2suprR   rR   rS   	test_ddof  s    

zTestCorrcoef.test_ddofc              	   C   s   | j | j }}t|}t b}td ttt||dd ttt||dd ttt|dd |	td t
t|dd| W 5 Q R X d S )Nrl  TFr  r  r;   r  )rN   r   r   r   r  rR   rR   rS   	test_bias  s    

zTestCorrcoef.test_biasc              	   C   sx   | j }tt|t| ttj|ddt|dd t 2}|td ttj|dddt|ddd W 5 Q R X d S )NFrz  r  Tr|  )rh   r   rM   r   r   r  r  rN   r   r  rR   rR   rS   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 2}|td ttj|dddt|ddd W 5 Q R X d S )Nrv   r   Frz  r  Tr|  )rh   r   r   rM   r   r   r  r  r  rR   rR   rS   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 2}|t	d ttj|dddt|ddd W 5 Q R X zt|dd W n t
k
r   Y nX |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 r}|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 5 Q R X d S )Nr   Frz  r  Tr|  r  r;   r  r8   r  )rh   r   r  rj   r   rM   r   r   r  r  r  )rN   r   r  r  rR   rR   rS   r  %  s<    
,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 }|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 5 Q R X d S )	Nr   rv   r   r  r   r  r;   r  )	rh   r   r   r   rM   r   r   r  r  )rN   r   rO   rP   r  rR   rR   rS   r  C  s"    
*z!TestCorrcoef.test_2d_with_missingN)
r   r   r   ry  r  r  r~  r  r  r  rR   rR   rR   rS   r    s   r  c                   @   s   e Zd Zdd Zdd ZdS )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|| qt||d d df dd	d
\}}}}}t j|dd |dddf dd	d
\}}	}
}}t
|||||f||	|
||fD ]\}}t|| qht||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|| qd S )Nra   r   r   r8   rv   r   rD   r   r   Trg   r;   )rg   r   )rM   r   r   r   r   r   viewr   r   rj   ziprf  r   )rN   r   r   CRKSDrU   r-  rm   ro   r   r>   a_r   ZwoxsZyswsrR   rR   rS   test_polyfitY  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
|| qd S )Nra   r   r   r8   r   r  rv   Tr  r;   )rM   r   r   r   r   r  r   r   r   r  r   )rN   r   r   r  r  r  r  r  rU   r-  rm   ro   r   r>   r  rR   rR   rS   test_polyfit_with_masked_NaNs  s    



4&z,TestPolynomial.test_polyfit_with_masked_NaNsN)r   r   r   r  r  rR   rR   rR   rS   r  W  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!S )"TestArraySetOpsc                 C   s   ddddddg}t |ddd}tt|d t t|d tdddgdddgd t|d dddg t|d ddddddg d S )	Nr;   r8   rv   TZreturn_indexZreturn_inverser   r   r{   )r   r   r   r   r   r   r   rR   rR   rS   test_unique_onlist  s    "z"TestArraySetOps.test_unique_onlistc                 C   s  t ddddddgddddddgd}t|ddd}t|d t ddddgddddgd t|d ddd	dg t|d ddddddg d|_t ddddddgddddddgdd
}t|ddd}t|d t ddddgddddgd t|d ddd	dg t|d ddddddg d S )Nr;   r8   rv   r   r   Tr  r   r{   )rh   r=   
fill_value)r   r   r   r  r   rR   rR   rS   test_unique_onmaskedarray  s    $& &z)TestArraySetOps.test_unique_onmaskedarrayc                 C   s   t dddgdd}t|ddd}t|d t dgdgd t|d dg t|d dddg t}t|ddd}t|d t t t|d dg t|d dg d S )Nr;   Tr   r  r   r8   )r   r   r   r   r   rR   rR   rS   test_unique_allmasked  s    z%TestArraySetOps.test_unique_allmaskedc                 C   sr   t tddddddgd}tddddgddddgd}t|}t|| t|d|d t|j|j d S )Nr{   r;   r   r   r   )r   rM   r
   r	   r$   r   r  r=   )rN   r   rP   rO   rR   rR   rS   test_ediff1d  s    
zTestArraySetOps.test_ediff1dc              	   C   s   t tddddddgd}t|td}tdddddgdddddgd}t|| t|d|d t|j|j t|dddgd}tdddddddgdddddddgd}t|| t|d|d t|j|j d S )	Nr{   r;   r   r   )to_beginr   r8   rv   	r   rM   r
   r$   r   r	   r   r  r=   rN   r   rO   rP   rR   rR   rS   test_ediff1d_tobegin  s     
(
z$TestArraySetOps.test_ediff1d_tobeginc              	   C   s   t tddddddgd}t|td}tdddddgdddddgd}t|| t|d|d t|j|j t|dddgd}tdddddddgdddddddgd}t|| t|d|d t|j|j d S )	Nr{   r;   r   r   )to_endr   r8   rv   r  r  rR   rR   rS   test_ediff1d_toend  s     
(
z"TestArraySetOps.test_ediff1d_toendc              
   C   s   t tddddddgd}t|ttd}tddddddgddddddgd}t|| t|d|d t|j|j t|dddgtd}tddddddddgddddddddgd}t|| t|d|d t|j|j d S )	Nr{   r;   r   r   r  r  r   r8   rv   r  r  rR   rR   rS   test_ediff1d_tobegin_toend  s    $

z*TestArraySetOps.test_ediff1d_tobegin_toendc                 C   s   t d}t|}tddddgddddgd}t|| tt|t t|d|d t|j	|j	 t|t
t
d}tddddddgddddddgd}tt|t t|d|d t|j	|j	 d S )Nr{   r;   r   r   r  )rM   r
   r$   r	   r   r   r   r   r  r=   r   r  rR   rR   rS   test_ediff1d_ndarray  s    

$z$TestArraySetOps.test_ediff1d_ndarrayc                 C   sh   t ddddgddddgd}t ddddgddddgd}t||}t dddgdddgd}t|| d S )Nr;   rv   r   r   r   )r	   r"   r   )rN   r   r   rO   rP   rR   rR   rS   test_intersect1d  s
    
z TestArraySetOps.test_intersect1dc                 C   s  t dddddgdddddgd}t dddd	ddgddddddgd}t||}t|t dd	dg t dddddgdddddgd}dddd	dg}t||}t|t dd	ddgddddgd t dddg}t d
dd	g}t||}tt|t t|dddd	dd
g t ddddgddddgd}t d
dd	dgddddgd}t||}tt|t t|dddd	dd
g tg tg g  d S )Nr;   r8   r{   rd   r   r   r   rv   r   rs   rt   )r	   r   r   r   r   r   r   rN   r>   r?   rO   rR   rR   rS   test_setxor1d
  s&     $
 
"

zTestArraySetOps.test_setxor1dc                 C   s   t ddddg}t dddg}d|d< t||d}tdd	d
ddddddg	dddddddddg	d}tdtd}d|d< d|d< d|d< t||}tt|t	 t
|| t |||j  |j @ }t
|| d S )Nr   r8   rv   r   r;   )r;   r8   r   r   r   ra   r   r   r   r   r   )rh   r=   r8   rv   r   r9   T)r   r   r   )r   r   r;   )r   r8   rv   )rM   r
   r   r   r	   r}   r1   r   r   r   r   r=   )rN   r>   r=   r?   ZecrU   r   rR   rR   rS   	test_isin$  s     

zTestArraySetOps.test_isinc                 C   s   t dddddgdddddgd}t dddd	ddgddddddgd}t||}t|d
d
d
dd
g t dddddgdddddgd}t dddgdddgd}t||}t|d
d
dd
d
g tg tg g  d S )Nr;   r8   r{   rd   r   r   r   rv   r   TF)r	   r#   r   r   r  rR   rR   rS   	test_in1d9  s     $
 
zTestArraySetOps.test_in1dc                 C   s   t dddddgdddddgd}t dddd	ddgddddddgd}ttt||t||d
d t dddddgdddddgd}t dddgdddgd}ttt||t||d
d tg tg g d
d d S )Nr;   r8   r{   rd   r   r   r   rv   r   T)invert)r	   r   rM   r  r#   r   r  rR   rR   rS   test_in1d_invertG  s     $   z TestArraySetOps.test_in1d_invertc           	   	   C   s  t ddddddgddddddgd}t dddd	ddgddddddgd}t||}t dddd	dddgdddddddgd}t|| t dddgdd	dggdddgdddggd}t ddddd	gdddddgd}t ddddd	dgddddddgd}t||}t|| tg tg g  d S )
Nr;   r8   r{   rd   r   r   r   rv   r   )r	   r!   r   r   )	rN   r>   r?   rO   rP   r   r   Zezr   rR   rR   rS   test_union1dS  s    $$
(
, $

zTestArraySetOps.test_union1dc              
   C   s   t ddddddddgddddddddgd}t ddd	d	dddg}t||}t|t ddd
gdddg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 )Nrs   r{   r   rd   r;   r8   r   r   rv   r   ra   rt   ru   )r	   r    r   r
   rM   Zuint32r:   r  rR   rR   rS   test_setdiff1de  s    ,
zTestArraySetOps.test_setdiff1dc                 C   s<   t dddg}t dddg}tt||t dg d S )Nr>   r?   rU   ro   )rM   r	   r   r    r  rR   rR   rS   test_setdiff1d_char_arrayr  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  rR   rR   rR   rS   r    s    		r  c                   @   s   e Zd Zdd Zdd ZdS )TestShapeBasec                 C   sr   t dddgdddg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;   r8   r   re  ra  )r   r   r   r   r=   rh   r  rR   rR   rS   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 ]0}t|jd t|jj|j t|jj|j qBtd}t|jd t|jj|j t|jj|j tdd}|D ]0}t|jd t|jj|j t|jj|j qtd}t|jd t|jj|j t|jj|j tdd}|D ]2}t|jd t|jj|j t|jj|j q*td}t|jd t|jj|jj d S )Nr   rV   r   rE   r   )r   r   r   r=   rh   r   r   r2   )rN   r?   r>   rR   rR   rS   test_shape_scalar  s<    


zTestShapeBase.test_shape_scalarN)r   r   r   r  r  rR   rR   rR   rS   r  y  s   
r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )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;   rv   r8   r9   r   Frj   )	rM   r
   r   Z
zeros_liker}   r   r   r  r3   )rN   ZordinaryZ
empty_maskZ	with_maskrR   rR   rS   test_ndenumerate_nomasked  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 )NrR   )d   r  Fr  r  r   )r/   r   r  r3   r  rM   Zndindexr   )rN   r>   r?   rU   rR   rR   rS   test_ndenumerate_allmasked  s    z*TestNDEnumerate.test_ndenumerate_allmaskedc                 C   s   t tddddddgddddgddddggd}dddd	d
g}ttt|| tttt|dd|j t|ddD ]\}}t|| | q~d S )Nr   r_  r;   r   r   )r  rs   ))r8   r   rt   )r`  ru   )rF   ra   )rd  r   Fr  )	r   rM   r
   r   r   r  r3   r\   r|   )rN   r>   itemsZ
coordinatevaluerR   rR   rS   test_ndenumerate_mixedmasked  s     


   z,TestNDEnumerate.test_ndenumerate_mixedmaskedN)r   r   r   r  r  r  rR   rR   rR   rS   r    s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	TestStackc                 C   s   t dddgdddgd}t dddgdddg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;   r8   r   ru   rt   rd   r   rd  rv   r8   r   r4   r   r   r   r=   r5   rh   rN   r>   r?   rU   r   rR   rR   rS   test_stack_1d  s    zTestStack.test_stack_1dc                 C   s   t dddgdd}t dd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;   r8   Tr   ru   rt   rd   Fr   rd  r  r  r  rR   rR   rS   test_stack_masks  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   ra   r8   r   r   r7   r;   r   ).r   ).r;   )rv   r8   r   r{   )rM   r   randintr  r}   r   r4   r   r   r   r=   )
rN   Zshpd1Zd2r   r   Za1r  rU   Zc_shprR   rR   rS   test_stack_nd  sD    zTestStack.test_stack_ndN)r   r   r   r  r  r  rR   rR   rR   rS   r    s   r  )N__doc__rr  r6  r   ZnumpyrM   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   r   r   r   r   r  r&  r*  rw  r  r  r  r  r  r  rR   rR   rR   rS   <module>   s@   4
  O,F     Ck: i7&