U
    e»{jÅÍ  ã                   @   s¾  d Z ddlZddlZddlZddlmZ ddlmZ	 ddl
mZ ddlmZ ddlmZ ddlmZmZ d	d
„ ZdeddƒddgZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdd„ ZG dd„ dƒZG dd„ dƒZG d d!„ d!eeƒZG d"d#„ d#eƒZ G d$d%„ d%eƒZ!G d&d'„ d'e!ƒZ"G d(d)„ d)e!ƒZ#G d*d+„ d+e#eƒZ$G d,d-„ d-e#eƒZ%G d.d/„ d/e!ƒZ&G d0d1„ d1e!ƒZ'G d2d3„ d3e'ƒZ(G d4d5„ d5e'eƒZ)G d6d7„ d7e'eƒZ*G d8d9„ d9e!ƒZ+G d:d;„ d;e+ƒZ,G d<d=„ d=e+eƒZ-G d>d?„ d?e+eƒZ.G d@dA„ dAe!ƒZ/G dBdC„ dCe/eƒZ0G dDdE„ dEe/eƒZ1G dFdG„ dGe!ƒZ2dHdI„ Z3dJdK„ Z4dLdM„ Z5dNdO„ Z6G dPdQ„ dQe!ƒZ7G dRdS„ dSe7eƒZ8G dTdU„ dUe!ƒZ9G dVdW„ dWe!ƒZ:G dXdY„ dYe:eƒZ;dS )ZzxTest masked class initialization, methods, and operators.

Functions, including ufuncs, are tested in test_functions.py
é    N)Úassert_array_equal)Úunits)Ú	Longitude)ÚQuantity)ÚNUMPY_LT_1_22)ÚMaskedÚMaskedNDArrayc                 C   s    t | j|jƒ t | j|jƒ d S ©N)r   ÚunmaskedÚmask©ÚaÚb© r   úe/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/utils/masked/tests/test_masked.pyÚassert_masked_equal   s    r   )é   r   r   r   c                   @   s   e Zd ZejZedd„ ƒZdS )Ú
ArraySetupc                 C   s¤  t  d¡ dd¡| _t  dddgdddgg¡| _t  dddg¡| _t  dddg¡| _t  d	gd
gg¡| _t  dgdgg¡| _	t  
ddg¡| _t  
ddg¡| _t jddgddgg| jd�| _t jddgddgg| jd�| _t jddg| jd�| _t jddg| jd�| _t  
ddg¡| _t jddgddgddggfddgdd gd!d"ggfg| jd�| _t  
d#d$g¡| _t jddgddgddggfddgddgddggfg| jd�| _d S )%Ng      @é   é   TFç      Àg       Àg      ð¿g      Ð?g      à?)r   Úf8)r   r   )r   ú?)r   r   ©ç      ð?ç       @©ç      @ç      @)g      &@g      (@)g      *@g      ,@©Údtype©TT©FF©FT)TF)r   r   )ÚsaZ2f8)ÚsbÚi8©r   r   r   r   r   é   éÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿ)r$   z2?)r%   r   r'   )ÚnpÚarangeÚreshaper   ÚarrayÚmask_ar   Úmask_bÚcÚmask_cr    ÚsdtÚmask_sdtr$   Úmask_sar%   Úmask_sbZscdtÚscZ	mask_scdtÚmask_sc©Úselfr   r   r   Úsetup_class   sH    þûþûþûþûzArraySetup.setup_classN)Ú__name__Ú
__module__Ú__qualname__r-   ÚndarrayÚ	_data_clsÚclassmethodr=   r   r   r   r   r      s   r   c                       s$   e Zd ZeZe‡ fdd„ƒZ‡  ZS )ÚQuantitySetupc                    sj   t ƒ  ¡  t| jtjƒ| _t| jtjƒ| _t| jtj	ƒ| _t| j
tj| jd�| _
t| jtj| jd�| _d S )Nr   )Úsuperr=   r   r   ÚuÚmr   Úcmr3   Úkmr$   r5   r%   r;   ©Ú	__class__r   r   r=   M   s    
zQuantitySetup.setup_class)r>   r?   r@   r   rB   rC   r=   Ú__classcell__r   r   rJ   r   rD   J   s   rD   c                       s$   e Zd ZeZe‡ fdd„ƒZ‡  ZS )ÚLongitudeSetupc                    s>   t ƒ  ¡  t| jtjƒ| _t| jtjƒ| _t| jtjƒ| _d S r	   )rE   r=   r   r   rF   Údegr   r3   r;   rJ   r   r   r=   Z   s    
zLongitudeSetup.setup_class)r>   r?   r@   r   rB   rC   r=   rL   r   r   rJ   r   rM   W   s   rM   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestMaskedArrayInitializationc                 C   s†   t | j| jd�}t|tjƒs t‚t|t| jƒƒs4t‚t|t ƒsBt‚t|j	| jƒ t|j
| jƒ |j
| jk	snt‚t |j
| j¡s‚t‚d S ©N©r   )r   r   r1   Ú
isinstancer-   rA   ÚAssertionErrorÚtyper   r
   r   Úmay_share_memory©r<   Úmar   r   r   Útest_simplee   s    z)TestMaskedArrayInitialization.test_simplec                 C   s†   t | j| jd�}t|tjƒs t‚t|t| jƒƒs4t‚t|t ƒsBt‚t|j	| jƒ t|j
| jƒ |j
| jk	snt‚t |j
| j¡s‚t‚d S rP   )r   r$   r7   rR   r-   rA   rS   rT   r   r
   r   rU   rV   r   r   r   Útest_structuredo   s    z-TestMaskedArrayInitialization.test_structuredN)r>   r?   r@   rX   rY   r   r   r   r   rO   d   s   
rO   c                  C   sš   t jdtd�} t  dddg¡}|  ¡ }t jdt|d�}t|| ƒ tdt||d�}t|j| ƒ t|j	|ƒ tdt|d�}t|j| ƒ t|j	t  
dt¡ƒ d S )	Nr   r   TF)r   )Úshaper    Úbuffer)r    r   r[   )r    r[   )r-   r.   Úintr0   ÚtobytesrA   r   r   r
   r   ÚzerosÚbool)Za_inZm_inZbuffr   rW   r   r   r   Útest_masked_ndarray_initz   s    
r`   c                	   C   s*   t jtdd�� ttjjƒ W 5 Q R X d S )Nzcannot handle np.ma.masked©Úmatch)ÚpytestÚraisesÚ
ValueErrorr   r-   rW   Úmaskedr   r   r   r   Ú"test_cannot_initialize_with_maskedŒ   s    rg   c               	   C   sL   G dd„ dt jƒ} t  ddg¡ | ¡}tjtdd�� t|ƒ W 5 Q R X d S )Nc                   @   s   e Zd ZdZdS )zEtest_cannot_just_use_anything_with_a_mask_attribute.<locals>.my_arrayTN)r>   r?   r@   r   r   r   r   r   Úmy_array’   s   rh   r   r   r
   ra   )r-   rA   r0   Úviewrc   rd   ÚAttributeErrorr   )rh   r   r   r   r   Ú3test_cannot_just_use_anything_with_a_mask_attribute‘   s    rk   c                   @   sD   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dS )ÚTestMaskedClassCreationzŒTry creating a MaskedList and subclasses.

    By no means meant to be realistic, just to check that the basic
    machinery allows it.
    c                 C   s:   t j ¡ | _t j ¡ | _G dd„ dt tttd�}|| _d S )Nc                       s0   e Zd Zdddœ‡ fdd„
Zedd„ ƒZ‡  ZS )z7TestMaskedClassCreation.setup_class.<locals>.MaskedListNF)r   Úcopyc                   s$   t ƒ  | ¡}|j||Ž|_||_|S r	   )rE   Ú__new__rB   Ú	_unmaskedr   )Úclsr   rm   ÚargsÚkwargsr<   rJ   r   r   rn   §   s    z?TestMaskedClassCreation.setup_class.<locals>.MaskedList.__new__c                 S   s   t | jƒfS r	   )Úlenro   r;   r   r   r   rZ   ®   s    z=TestMaskedClassCreation.setup_class.<locals>.MaskedList.shape)r>   r?   r@   rn   ÚpropertyrZ   rL   r   r   rJ   r   Ú
MaskedList¦   s   ru   )Zbase_clsZdata_cls)r   Ú_base_classesrm   Ú_base_classes_origÚ_masked_classesÚ_masked_classes_origÚlistru   )r<   ru   r   r   r   r=   ¡   s    z#TestMaskedClassCreation.setup_classc                 C   s   | j t_| jt_d S r	   )rw   r   rv   ry   rx   r;   r   r   r   Úteardown_class´   s    z&TestMaskedClassCreation.teardown_classc                 C   s6   t | jtƒst‚t | jtƒs t‚ttƒ| jks2t‚d S r	   )Ú
issubclassru   r   rS   rz   r;   r   r   r   Ú
test_setup¸   s    z"TestMaskedClassCreation.test_setupc                 C   s|   | j tdƒdddgd�}|jdddgks,t‚t|jt dddg¡ƒ |d d… }|jddgksbt‚t|jt ddg¡ƒ d S )Nr   TFrQ   r   r   r   )ru   Úranger
   rS   r   r   r-   r0   )r<   ÚmlZml01r   r   r   Útest_masked_list½   s    z(TestMaskedClassCreation.test_masked_listc                 C   sH   t dddgdddgd�}|jdddgks,t‚t|jt dddg¡ƒ d S )Nr   r   r   TFrQ   )r   r
   rS   r   r   r-   r0   )r<   r   r   r   r   Útest_from_listÅ   s    z&TestMaskedClassCreation.test_from_listc                 C   sž   G dd„ dt ƒ}|tdƒƒ}t|dddgd�}t|tƒs<t‚t||ƒsJt‚t|j|ƒsZt‚|jddd	gksnt‚t|jt 	dddg¡ƒ t|ƒt
|ƒksšt‚d S )
Nc                   @   s   e Zd ZdS )zATestMaskedClassCreation.test_masked_list_subclass.<locals>.MyListN©r>   r?   r@   r   r   r   r   ÚMyListË   s   rƒ   r   FTrQ   r   r   r   )rz   r~   r   rR   rS   r
   r   r   r-   r0   rT   )r<   rƒ   r   Zmmlr   r   r   Útest_masked_list_subclassÊ   s    z1TestMaskedClassCreation.test_masked_list_subclassN)r>   r?   r@   Ú__doc__rC   r=   r{   r}   r€   r�   r„   r   r   r   r   rl   š   s   
rl   c                   @   sj   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Ze	j
 d
eejjg¡dd„ ƒZdd„ Zdd„ Zdd„ ZdS )Ú!TestMaskedNDArraySubclassCreationzCTest that masked subclasses can be created directly and indirectly.c                 C   sH   G dd„ dt jƒ}|| _t  ddg¡ | j¡| _t jddgtd�| _d S )Nc                   @   s   e Zd Zdd„ ZdS )z>TestMaskedNDArraySubclassCreation.setup_class.<locals>.MyArrayc                 _   s   t j||Ž | ¡S r	   )r-   Z
asanyarrayri   )rp   rq   rr   r   r   r   rn   ß   s    zFTestMaskedNDArraySubclassCreation.setup_class.<locals>.MyArray.__new__N)r>   r?   r@   rn   r   r   r   r   ÚMyArrayÞ   s   r‡   r   r   TFr   )r-   rA   r‡   r0   ri   r   r_   rG   )r<   r‡   r   r   r   r=   Ü   s    z-TestMaskedNDArraySubclassCreation.setup_classc                 C   s   t j | jd ¡ d S r	   )r   rx   Úpopr‡   )r<   Úmethodr   r   r   Úteardown_methodæ   s    z1TestMaskedNDArraySubclassCreation.teardown_methodc                 C   s”   | j tjkst‚t| j ƒ}t|tƒs(t‚t|| j ƒs8t‚|jdksFt‚|j d¡sVt‚|| j| j	d�}t
||ƒstt‚t|j| jƒ t|j| j	ƒ d S )NZMaskedMyArrayzMasked version of MyArrayrQ   )r‡   r   rx   rS   r|   r>   r…   Ú
startswithr   rG   rR   r   r
   r   ©r<   ÚmclsÚmmsr   r   r   Útest_direct_creationé   s    
z6TestMaskedNDArraySubclassCreation.test_direct_creationc                 C   sJ   t | jƒ}|| jƒ}t||ƒs"t‚t|j| jƒ t|jt 	|j
t¡ƒ d S r	   )r   r‡   r   rR   rS   r   r
   r   r-   r^   rZ   r_   rŒ   r   r   r   Ú test_initialization_without_maskõ   s
    

zBTestMaskedNDArraySubclassCreation.test_initialization_without_maskÚmasked_arrayc                 C   sf   t | jƒ}|t | j¡| jd�}||ƒ}t|t ƒs6t‚t|| jƒsFt‚t|j	| jƒ t|j
| jƒ d S rP   ©r   r‡   r-   Zasarrayr   rG   rR   rS   r   r
   r   )r<   r‘   r�   rW   rŽ   r   r   r   Ú&test_initialization_with_masked_valuesý   s    
zHTestMaskedNDArraySubclassCreation.test_initialization_with_masked_valuesc                 C   s„   | j tjkst‚t| j| jd�}t|tƒs.t‚t|| j ƒs>t‚t|j| jƒ t|j	| jƒ | j tjksjt‚t| j ƒt
|ƒks€t‚d S rP   )r‡   r   rx   rS   r   rG   rR   r   r
   r   rT   )r<   rŽ   r   r   r   Útest_indirect_creation  s    z8TestMaskedNDArraySubclassCreation.test_indirect_creationc                 C   sb   t | jƒ}|t t | j¡| jd�ƒ}t|t ƒs2t‚t|| jƒsBt‚t|j	| jƒ t|j
| jƒ d S rP   r’   rŒ   r   r   r   Ú&test_can_initialize_with_masked_values  s    
zHTestMaskedNDArraySubclassCreation.test_can_initialize_with_masked_valuesc                 C   sx   t | j| jd�}| ¡ }t|ƒ|jks*t‚t||ƒ | tj	¡}t|ƒt
ksPt‚t|j| j tj	¡ƒ t|j| jƒ d S rP   )r   r   rG   ri   rT   rK   rS   r   r-   rA   r   r   r
   r   )r<   rŽ   Zmms2rW   r   r   r   Útest_viewing  s    
z.TestMaskedNDArraySubclassCreation.test_viewingN)r>   r?   r@   r…   rC   r=   rŠ   r�   r�   rc   ÚmarkÚparametrizer   r-   rW   ÚMaskedArrayr“   r”   r•   r–   r   r   r   r   r†   Ù   s   
	
	
r†   c                   @   sB   e Zd Zdd„ Zdd„ Zdd„ Zej de	e
jjg¡dd	„ ƒZd
S )Ú TestMaskedQuantityInitializationc                 C   s†   t j| jj }|ddgddgtjd�}|jtjks6t‚t 	|j
jddgk¡sPt‚t 	|j
jddgk¡sjt‚t 	|jddgk¡s‚t‚d S )Nr   r   TF)r   Úunit)r   rx   r   rK   rF   Úsr›   rS   r-   ÚallÚvaluer
   r   )r<   r�   Úmqr   r   r   Útest_masked_quantity_class_init&  s    z@TestMaskedQuantityInitialization.test_masked_quantity_class_initc                 C   s&   t j| jj }t tƒ}||ks"t‚d S r	   )r   rx   r   rK   r   rS   )r<   r�   ÚMQr   r   r   Útest_masked_quantity_getting0  s    z=TestMaskedQuantityInitialization.test_masked_quantity_gettingc                 C   s^   t tƒ}|ddgtjƒ}|jtjks(t‚t |jj	ddgk¡sBt‚t |j
ddgk¡sZt‚d S )Nr   r   F)r   r   rF   rœ   r›   rS   r-   r�   rž   r
   r   )r<   r¡   rŸ   r   r   r   r�   5  s
    zATestMaskedQuantityInitialization.test_initialization_without_maskr‘   c                 C   sp   t tƒ}t ddg¡}t ddg¡}|||ƒ}||ƒ}t|t ƒsDt‚t|tƒsRt‚t|jj|ƒ t|j	|ƒ d S )Nr   r   TF)
r   r   r-   r0   rR   rS   r   rž   r
   r   )r<   r‘   r¡   r   rG   rW   rŸ   r   r   r   r“   =  s    
zGTestMaskedQuantityInitialization.test_initialization_with_masked_valuesN)r>   r?   r@   r    r¢   r�   rc   r—   r˜   r   r-   rW   r™   r“   r   r   r   r   rš   %  s
   
rš   c                   @   sN   e Zd Zdd„ Zdd„ Zej de¡dd„ ƒZ	ej ddge ¡d	d
„ ƒZ
dS )ÚTestMaskSettingc                 C   sâ   t | jƒ}|jj|jkst‚|j ¡ r*t‚d|_|jj|jksBt‚|j ¡ sPt‚dgdgg|_|jj|jkspt‚t|jt 	dgd dgd g¡ƒ | j
|_|jj|jks¬t‚t|j| j
ƒ |j| j
k	sÊt‚t |j| j
¡sÞt‚d S )NTFr   )r   r   r   rZ   rS   Úanyr�   r   r-   r0   r1   rU   rV   r   r   r   Útest_whole_mask_setting_simpleK  s    
"z.TestMaskSetting.test_whole_mask_setting_simplec                 C   s  t | jƒ}|jj|jkst‚|jd  ¡ s8|jd  ¡ r<t‚d|_|jj|jksTt‚|jd  ¡ rp|jd  ¡ stt‚dgdgg|_|jj|jks”t‚t|jtj	dgd dgd g| j
d�ƒ | j|_|jj|jksÖt‚t|j| jƒ |j| jk	sôt‚t |j| j¡�s
t‚d S )	Nr   r   TFr!   r   r"   r   )r   r$   r   rZ   rS   r¤   r�   r   r-   r0   r6   r7   rU   rV   r   r   r   Ú"test_whole_mask_setting_structured[  s"    
  þz2TestMaskSetting.test_whole_mask_setting_structuredÚitemc                 C   sž   t | jƒ}d|j|< t |jt¡}d||< t|j|ƒ d|j|< t|jt |jt¡ƒ t | jjt¡}t | j|ƒ}d|j|< t |j|¡sŽt	‚t|j|ƒ d S ©NTF)
r   r   r   r-   r^   rZ   r_   r   rU   rS   ©r<   r§   rW   Úexpectedr   r   r   r   Útest_part_mask_settingn  s    



z&TestMaskSetting.test_part_mask_settingr   c                 C   s¤   t | jƒ}d|j|< t |j| j¡}d||< t|j|ƒ d|j|< t|jt |j| j¡ƒ t | jj| j¡}t | j|ƒ}d|j|< t |j|¡s”t	‚t|j|ƒ d S r¨   )
r   r$   r   r-   r^   rZ   r6   r   rU   rS   r©   r   r   r   Ú!test_part_mask_setting_structured~  s    



z1TestMaskSetting.test_part_mask_setting_structuredN)r>   r?   r@   r¥   r¦   rc   r—   r˜   ÚVARIOUS_ITEMSr«   r¬   r   r   r   r   r£   J  s   
r£   c                       s    e Zd Ze‡ fdd„ƒZ‡  ZS )ÚMaskedArraySetupc                    sz   t ƒ  ¡  t| j| jd�| _t| j| jd�| _t| j	| j
d�| _t| j| jd�| _t| j| jd�| _t| j| jd�| _d S rP   )rE   r=   r   r   r1   rW   r   r2   Úmbr3   r4   Úmcr$   r7   Úmsar%   r8   Úmsbr9   r:   Úmscr;   rJ   r   r   r=   “  s    
zMaskedArraySetup.setup_class)r>   r?   r@   rC   r=   rL   r   r   rJ   r   r®   ’  s   r®   c                   @   s>   e Zd Zdd„ Zdd„ Zej dddg¡dd	„ ƒZd
d„ Z	dS )ÚTestViewingc                 C   s8   | j  t| j ƒ¡}t|| j ƒ | j  ¡ }t|| j ƒ d S r	   )rW   ri   rT   r   )r<   Úma2Úma3r   r   r   Útest_viewing_as_new_typeŸ  s    
z$TestViewing.test_viewing_as_new_typec                 C   s2   | j  d¡}t|j| j d¡ƒ t|j| jƒ d S )NZc8)rW   ri   r   r
   r   r   r1   )r<   rµ   r   r   r   Útest_viewing_as_new_dtype¦  s    z%TestViewing.test_viewing_as_new_dtypeÚ	new_dtypeZ2f4zf8,f8,f8c              	   C   s8   | j  |¡}tjtdd�� | j |j¡ W 5 Q R X d S )Nzdifferent.*sizera   )r   ri   rc   rd   ÚNotImplementedErrorrW   r    )r<   r¹   Úcheckr   r   r   Ú)test_viewing_as_new_dtype_not_implemented¬  s    z5TestViewing.test_viewing_as_new_dtype_not_implementedc              	   C   s8   t  t¡�$ ttjddgtjd�ƒ t¡ W 5 Q R X d S )Nr   r   r   )rc   rd   Ú	TypeErrorr   r-   r0   Zintpri   r;   r   r   r   Ú$test_viewing_as_something_impossible´  s    z0TestViewing.test_viewing_as_something_impossibleN)
r>   r?   r@   r·   r¸   rc   r—   r˜   r¼   r¾   r   r   r   r   r´   ž  s
   
r´   c                   @   sT   e Zd Zdd„ Zej dd¡dd„ ƒZdd„ Zej ddd	g¡d
d„ ƒZ	dd„ Z
dS )ÚTestMaskedArrayCopyFilledc                 C   sp   | j  ¡ }t|ƒt| j ƒks t‚t|j| j jƒ t|j| j jƒ t |j| j j¡rVt‚t |j| j j¡rlt‚d S r	   )	rW   rm   rT   rS   r   r
   r   r-   rU   )r<   Úma_copyr   r   r   Ú	test_copy¼  s    
z#TestMaskedArrayCopyFilled.test_copyÚ
fill_value©r   r   c                 C   sB   |t | jddƒ }| j ¡ }||| jj< | j |¡}t||ƒ d S )Nr›   r   )Úgetattrr   rm   rW   r   Úfilledr   ©r<   rÂ   rª   Úresultr   r   r   Útest_filledÄ  s
    
z%TestMaskedArrayCopyFilled.test_filledc              	   C   s(   t jtdd�� | j ¡  W 5 Q R X d S )Nzmissing 1 requiredra   )rc   rd   r½   rW   rÅ   r;   r   r   r   Útest_filled_no_fill_valueÌ  s    z3TestMaskedArrayCopyFilled.test_filled_no_fill_value)r)   r)   c                 C   s|   t j|| jd�}t| jdƒr(|| jj> }| j ¡ }|d |d | jjd < |d |d | jjd < | j 	|¡}t
||ƒ d S )Nr   r›   r   r   )r-   r0   r5   Úhasattrr$   r›   rm   r±   r   rÅ   r   rÆ   r   r   r   Útest_filled_structuredÐ  s    
z0TestMaskedArrayCopyFilled.test_filled_structuredc                 C   s¬   | j  ¡ }|j}|d }|j| jjd ks.t‚|j| jjd ksDt‚tdd„ t	| j j| jj| jjƒD ƒƒsnt‚| j
d |d< |d | j
d ks’t‚|d | j
d ks¨t‚d S )Nr   c                 s   s(   | ] \}}}|j |ko|j|kV  qd S r	   )r
   r   )Ú.0rW   r   rG   r   r   r   Ú	<genexpr>ã  s   ÿz6TestMaskedArrayCopyFilled.test_flat.<locals>.<genexpr>rÃ   )rW   rm   Zflatr
   r   rS   r   r1   r�   Úzipr   )r<   rÀ   Zma_flatZma_flat1r   r   r   Ú	test_flatÛ  s    
þz#TestMaskedArrayCopyFilled.test_flatN)r>   r?   r@   rÁ   rc   r—   r˜   rÈ   rÉ   rË   rÏ   r   r   r   r   r¿   »  s   


r¿   c                   @   s   e Zd ZdS )ÚTestMaskedQuantityCopyFilledNr‚   r   r   r   r   rÐ   î  s   rÐ   c                   @   s   e Zd ZdS )ÚTestMaskedLongitudeCopyFilledNr‚   r   r   r   r   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S )ÚTestMaskedArrayShapingc                 C   sP   | j  d¡}| j d¡}| j d¡}|j|jks4t‚t|j|ƒ t|j|ƒ d S ©N©é   )	rW   r/   r   r1   rZ   rS   r   r
   r   ©r<   Z
ma_reshapeÚexpected_dataÚexpected_maskr   r   r   Útest_reshape÷  s    z#TestMaskedArrayShaping.test_reshapec                 C   sT   | j  ¡ }d|_| j d¡}| j d¡}|j|jks8t‚t|j|ƒ t|j	|ƒ d S rÓ   )
rW   rm   rZ   r   r/   r1   rS   r   r
   r   rÖ   r   r   r   Útest_shape_settingÿ  s    
z)TestMaskedArrayShaping.test_shape_settingc              	   C   s,  | j  ¡ }tjtdd�� d|_W 5 Q R X |j| j jks<t‚|jj| j jksPt‚tt	 
dgdgg| jj¡| jd�}tjtdd�� d|_W 5 Q R X |j| j jks¤t‚|jj| j jks¸t‚t| j ¡ t	 
d	gd
gg| jj¡d�}tjtdd�� d|_W 5 Q R X |j| j jk�st‚|jj| j jk�s(t‚d S )Nzcannot reshapera   )é   r   r   rQ   zncompatible shaperÔ   TF)rW   rm   rc   rd   re   rZ   rS   r   r   r-   Zbroadcast_tor   r1   rj   )r<   rW   rµ   r¶   r   r   r   Útest_shape_setting_failure  s$    
" ÿz1TestMaskedArrayShaping.test_shape_setting_failurec                 C   sJ   | j  ¡ }| j ¡ }| j ¡ }|j|jks.t‚t|j|ƒ t|j|ƒ d S r	   )	rW   Úravelr   r1   rZ   rS   r   r
   r   )r<   Zma_ravelr×   rØ   r   r   r   Ú
test_ravel"  s    


z!TestMaskedArrayShaping.test_ravelc                 C   sJ   | j  ¡ }| j ¡ }| j ¡ }|j|jks.t‚t|j|ƒ t|j|ƒ d S r	   )	rW   Z	transposer   r1   rZ   rS   r   r
   r   )r<   Zma_transposer×   rØ   r   r   r   Útest_transpose*  s    


z%TestMaskedArrayShaping.test_transposec                 C   s:   t | j| j| jƒD ]"\}}}t|j|ƒ t|j|ƒ qd S r	   )rÎ   rW   r   r1   r   r
   r   )r<   rW   ÚdrG   r   r   r   Ú	test_iter2  s    z TestMaskedArrayShaping.test_iterN)	r>   r?   r@   rÙ   rÚ   rÜ   rÞ   rß   rá   r   r   r   r   rÒ   ö  s   	rÒ   c                	   @   sô   e Zd Zej de¡dd„ ƒZej ddge ¡dd„ ƒZej ddd	gd	fdd	gdfdd	gd
fdd	gddggd
fg¡dd„ ƒZ	ej de¡ej dd
ddg¡dd„ ƒƒZ
ej ddge ¡ej dd
ddg¡dd„ ƒƒZej de¡dd„ ƒZd
S )ÚMaskedItemTestsr§   c                 C   s:   | j | }| j| }| j| }t|j|ƒ t|j|ƒ d S r	   )rW   r   r1   r   r
   r   ©r<   r§   Zma_partr×   rØ   r   r   r   Útest_getitem9  s
    


zMaskedItemTests.test_getitemr   c                 C   s:   | j | }| j| }| j| }t|j|ƒ t|j|ƒ d S r	   )r±   r$   r7   r   r
   r   rã   r   r   r   Útest_getitem_structuredA  s
    


z'MaskedItemTests.test_getitem_structuredzindices,axisr   r   Nr   r   c                 C   sh   | j j||d�}| jj||d�}| jj||d�}t|j|ƒ t|j|ƒ tj| j ||d�}t||ƒ d S ©N©Úaxis)	rW   Ztaker   r1   r   r
   r   r-   r   )r<   Úindicesrè   Zma_taker×   rØ   Zma_take2r   r   r   Ú	test_takeI  s    zMaskedItemTests.test_taker   TFc                 C   s�   | j  ¡ }| j ¡ }| j ¡ }|d kr0| jd nt| jd |ƒ}|||< |d krT|n|j||< |d krjdn|j||< t|j|ƒ t|j|ƒ d S )N©r   r   F)rW   rm   r   r1   r   r
   r   r   ©r<   r§   r   Úbaser×   rØ   rž   r   r   r   Útest_setitemV  s    


"zMaskedItemTests.test_setitemc                 C   sœ   | j  ¡ }| j ¡ }| j ¡ }|dkr0| jd n| jd }|d k	rLt||ƒ}|||< |d kr`|n|j||< |d krvdn|j||< t|j|ƒ t|j|ƒ d S )Nr   r   rë   F)r±   rm   r$   r7   r   r
   r   r   rì   r   r   r   Útest_setitem_structuredc  s    



z'MaskedItemTests.test_setitem_structuredc                 C   sF   | j  ¡ }| j ¡ }tj j||< d||< t|j| jƒ t|j|ƒ d S )NT)	rW   rm   r1   r-   rf   r   r
   r   r   )r<   r§   rí   rØ   r   r   r   Útest_setitem_np_ma_maskedr  s    

z)MaskedItemTests.test_setitem_np_ma_masked)r>   r?   r@   rc   r—   r˜   r­   rä   rå   rê   rî   rï   rð   r   r   r   r   râ   8  s"   

2þ
	râ   c                       s0   e Zd Ze‡ fdd„ƒZdd„ Zdd„ Z‡  ZS )ÚTestMaskedArrayItemsc                    s>   t ƒ  ¡  t ddg¡| _t ddg¡| _t| j| jƒ| _d S )NZaaZbbTF)rE   r=   r-   r0   rà   Zmask_dr   Úmdr;   rJ   r   r   r=   }  s    
z TestMaskedArrayItems.setup_classc                 C   sJ   | j  ¡ }|d }|j| jd ks&t‚|js0t‚|d d … }t||ƒ d S ©Nr   )rò   rm   r
   rà   rS   r   r   )r<   rò   Zmd0Zmd_allr   r   r   Útest_getitem_strings…  s    

z)TestMaskedArrayItems.test_getitem_stringsc                 C   s<   | j  ¡ }tjj|d< t|j| jƒ t|jt 	dt
¡ƒ d S )Nr   r   )rò   rm   r-   rW   rf   r   r
   rà   r   Úonesr_   )r<   rò   r   r   r   Ú!test_setitem_strings_np_ma_masked�  s    
z6TestMaskedArrayItems.test_setitem_strings_np_ma_masked)r>   r?   r@   rC   r=   rô   rö   rL   r   r   rJ   r   rñ   |  s   rñ   c                   @   s   e Zd ZdS )ÚTestMaskedQuantityItemsNr‚   r   r   r   r   r÷   ”  s   r÷   c                   @   s   e Zd ZdS )ÚTestMaskedLongitudeItemsNr‚   r   r   r   r   rø   ˜  s   rø   c                   @   s    e Zd Zej dejejf¡dd„ ƒZ	ej dej
ejf¡dd„ ƒZdd„ Zej dd	d
g¡ej dej
ejf¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚMaskedOperatorTestsÚopc                 C   sH   || j | jƒ}|| j| jƒ}| j j| jjB }t|j|ƒ t|j|ƒ d S r	   ©rW   r¯   r   r   r   r   r
   ©r<   rú   Úmapmbr×   rØ   r   r   r   Útest_add_subtract�  s
    z%MaskedOperatorTests.test_add_subtractc                 C   sH   || j | jƒ}|| j| jƒ}| j j| jjB }t|j|ƒ t|j|ƒ d S r	   rû   rü   r   r   r   Útest_equality§  s
    z!MaskedOperatorTests.test_equalityc              	   C   s$   t  t¡� | jdk W 5 Q R X d S )NÚabc)rc   rd   r½   rW   r;   r   r   r   Útest_not_implemented±  s    z(MaskedOperatorTests.test_not_implementedÚdifferent_namesFTc                 C   sÚ   | j }|r&| dd„ |jj ¡ D ƒ¡}|| j| j ƒ}t |jt	¡}t |jt	¡}| j
jD ]T}| j| | j|  }}	| j| | j|  }
}|	|B }||
k|B }||M }||M }qX|tjkr¾| }t|j|ƒ t|j|ƒ d S )Nc                 S   s   g | ]\}}d |› �|f‘qS )Z
different_r   )rÌ   ÚnameÚdtr   r   r   Ú
<listcomp>»  s     z@MaskedOperatorTests.test_structured_equality.<locals>.<listcomp>)r²   Úastyper    ÚfieldsÚitemsr±   r-   rõ   rZ   r_   r5   Únamesr$   r7   r%   r8   ÚoperatorÚner   r
   r   )r<   rú   r  r²   rý   r×   rØ   ÚfieldÚfaZmfaZfbZmfbZmfequalZfequalr   r   r   Útest_structured_equalityµ  s&    ÿ

z,MaskedOperatorTests.test_structured_equalityc                 C   sÞ   | j j| j  }t|j| jj| j ƒ tj| jdd�}tj 	||¡}t|j
|ƒ | j j| j }t|j| jj| j ƒ tj 	|t dt¡¡}t|j
|ƒ | jj| j  }t|j| jj| j ƒ tj 	t dt¡|¡}t|j
|ƒ d S )Nr   rç   r   )rW   ÚTr   r
   r   r-   r¤   r1   Ú
logical_orÚouterr   r^   r_   )r<   rÇ   Zmask1rØ   Úresult2Zexpected_mask2Úresult3Zexpected_mask3r   r   r   Útest_matmulÑ  s    zMaskedOperatorTests.test_matmulc                 C   sª   | j | j }t |j¡st‚t|j| j| j	 ƒ | j| j }t |j¡sLt‚t|j| j| j	 ƒ | j  
¡ }d|jd< || j	 }t|j| j| j	 ƒ t|j|j d¡ƒ d S )NFrë   r)   )rW   r¯   r-   r�   r   rS   r   r
   r   r   rm   r¤   ©r<   rÇ   r  Znew_mar  r   r   r   Útest_matvecà  s    


zMaskedOperatorTests.test_matvecc                 C   s¶   | j | jj }t |j¡st‚t|j| j	| j
j ƒ | j	| jj }t |j¡sRt‚t|j| j	| j
j ƒ | jj ¡ }d|jd< | j	| }t|j| j	| j
j ƒ t|j|j d¡ƒ d S )NFrë   r   )r¯   rW   r  r-   r�   r   rS   r   r
   r   r   rm   r¤   r  r   r   r   Útest_vecmatî  s    

zMaskedOperatorTests.test_vecmatc                 C   s\   | j | j  }|jdkst‚|js$t‚|j| j| j ks:t‚t| jdƒ}|| }|jrXt‚d S )Nr   F)r¯   rZ   rS   r   r
   r   r   )r<   rÇ   Z
mb_no_maskr  r   r   r   Útest_vecvecû  s    
zMaskedOperatorTests.test_vecvecN)r>   r?   r@   rc   r—   r˜   r
  ÚaddÚsubrþ   Úeqr  rÿ   r  r  r  r  r  r  r   r   r   r   rù   œ  s   
	
	rù   c                   @   s2   e Zd Zej dejejf¡dd„ ƒZ	dd„ Z
dS )ÚTestMaskedArrayOperatorsrú   c                 C   sŠ   t t dddg¡dddgd�}t t dddg¡dddgd�}|||ƒ}t|j||j|jƒƒ t|j|j|jB ƒ |||jƒ}t||ƒ d S )Nr   r   r3   TFrQ   rà   )r   r-   r0   r   r
   r   r   )r<   rú   Úm1Úm2rÇ   r  r   r   r   Útest_equality_strings  s    
z.TestMaskedArrayOperators.test_equality_stringsc              	   C   s,   t  t¡� tddgƒtƒ k W 5 Q R X d S )Nr   r   )rc   rd   r½   r   Úobjectr;   r   r   r   r    s    z-TestMaskedArrayOperators.test_not_implementedN)r>   r?   r@   rc   r—   r˜   r
  r  r  r  r  r   r   r   r   r    s   

r  c                   @   s   e Zd ZdS )ÚTestMaskedQuantityOperatorsNr‚   r   r   r   r   r!    s   r!  c                   @   s   e Zd ZdS )ÚTestMaskedLongitudeOperatorsNr‚   r   r   r   r   r"    s   r"  c                   @   s6  e Zd Zdd„ Zej dd¡dd„ ƒZej dd¡dd„ ƒZej dd¡d	d
„ ƒZ	ej dd¡dd„ ƒZ
dd„ Zdd„ Zdd„ Zej d¡ej d¡ej dd¡dd„ ƒƒƒZej d¡ej dd¡dd„ ƒƒZdd„ Zej d¡ej d¡ej dd¡dd„ ƒƒƒZdd„ Zd d!„ Zej d¡ej d¡ej dd¡d"d#„ ƒƒƒZej dd¡d$d%„ ƒZd&d'„ Zej dd¡d(d)„ ƒZej dd¡d*d+„ ƒZej dd¡d,d-„ ƒZej dd¡d.d/„ ƒZd0d1„ Ze�sÐd2d3„ Zej dd¡d4d5„ ƒZe�sôd6d7„ Z ej dd¡d8d9„ ƒZ!ej d:d;d<d=d>g¡ej dd?d@g¡dAdB„ ƒƒZ"dCdD„ Z#ej ddE¡dFdG„ ƒZ$ej dHd@dIg¡dJdK„ ƒZ%ej dHd@dIg¡dLdM„ ƒZ&dNdO„ Z'ej dPdQdRg¡ej dSdTdUdVdWdXdYdZg¡d[d\„ ƒƒZ(d]d^„ Z)ej dPd_¡ej dd¡d`da„ ƒƒZ*ej dbdE¡dcdd„ ƒZ+ej dbdE¡dedf„ ƒZ,dgdh„ Z-didj„ Z.d;S )kÚTestMaskedArrayMethodsc                 C   s*   | j  ¡ }t| j ¡ | jƒ}t||ƒ d S r	   )r°   Úroundr   r3   r4   r   )r<   Zmrcrª   r   r   r   Ú
test_round   s    
z!TestMaskedArrayMethods.test_roundrè   ©r   r   Nc                 C   sB   | j  |¡}| j |¡}| j j |¡}t|j|ƒ t|j|ƒ d S r	   )rW   Úsumr   r   r¤   r   r
   ©r<   rè   Úma_sumr×   rØ   r   r   r   Útest_sum&  s
    zTestMaskedArrayMethods.test_sumc                 C   sˆ   t  dddgdddgg¡}| jj |@ }| jj||d�}| jjj||d�}t jj| jj||d�|  |¡B }t	|j|ƒ t	|j|ƒ d S ©NTF)Úwhere©rè   r,  )
r-   r0   rW   r   r'  r
   r  Úreducer�   r   )r<   rè   r,  Úwhere_finalr)  r×   rØ   r   r   r   Útest_sum_where.  s"    þÿ  ÿ
þz%TestMaskedArrayMethods.test_sum_wherec                 C   sZ   | j  |¡}| j |¡}| j}|d kr.| ¡ }tjj||d�}t|j	|ƒ t|j
|ƒ d S ræ   )rW   Zcumsumr   r1   rÝ   r-   r  Ú
accumulater   r
   r   ©r<   rè   r)  r×   r   rØ   r   r   r   Útest_cumsum?  s    z"TestMaskedArrayMethods.test_cumsumc                 C   sp   | j  |¡}| j ¡ }d|| j< d| j j t¡ }| |¡| |¡ }| j j 	|¡}t
|j|ƒ t
|j|ƒ d S )Nç        r   )rW   Úmeanr   rm   r1   r   r  r\   r'  r�   r   r
   )r<   rè   Úma_meanrÅ   Úcountr×   rØ   r   r   r   Ú	test_meanJ  s    

z TestMaskedArrayMethods.test_meanc                 C   s>   | j  d¡}| ¡ }|jdks"t‚| d¡ ¡ }t||ƒ d S ©NÚi2r   ©rW   r  r5  r    rS   r   ©r<   rW   r6  rª   r   r   r   Útest_mean_int16U  s
    z&TestMaskedArrayMethods.test_mean_int16c                 C   s@   | j  d¡}| ¡ }|jdks"t‚| j  ¡  d¡}t||ƒ d S )NÚf2r;  r<  r   r   r   Útest_mean_float16\  s
    z(TestMaskedArrayMethods.test_mean_float16c                 C   sF   | j  d¡}tt |j¡ƒ}| j jd|d�}||ks8t‚t||ƒ d S ©Nr   )Úout)rW   r5  r   r-   Ú
zeros_liker
   rS   r   ©r<   rª   rA  rÇ   r   r   r   Útest_mean_inplacec  s
    z(TestMaskedArrayMethods.test_mean_inplacezignore:.*encountered in.*dividezignore:Mean of empty slicec                 C   sˆ   t  dddgdddgg¡}| jj |@ }| jj||d�}| jjj||d�}t jj| jj||d�|  |¡B }t	|j|ƒ t	|j|ƒ d S r+  )
r-   r0   rW   r   r5  r
   r  r.  r�   r   )r<   rè   r,  r/  r6  r×   rØ   r   r   r   Útest_mean_wherej  s"    þÿ  ÿ
þz&TestMaskedArrayMethods.test_mean_wherec                 C   s  | j  |¡}| j| j j|dd� d }d|| j< d| j j t¡  |¡}| |¡| }| j j 	|¡}t
|j|ƒ t
|j|ƒ | j j|dd�}| |¡|d  }| j j 	|¡|dkB }	t
|j|ƒ t
|j|	ƒ | j j|dd�}
t 	t |
j¡ ¡sôt‚|
j 	¡ �st‚d S )NT)Úkeepdimsr   r4  r   ©ÚddofrÛ   )rW   Úvarr   r5  r1   r   r  r\   r'  r�   r   r
   r-   ÚisfiniterS   )r<   rè   Úma_varrÅ   r7  r×   rØ   Úma_var1Zexpected_data1Zexpected_mask1Zma_var5r   r   r   Útest_var}  s     
zTestMaskedArrayMethods.test_varc                 C   s>   | j  d¡}| ¡ }|jdks"t‚| d¡ ¡ }t||ƒ d S r9  )rW   r  rI  r    rS   r   )r<   rW   rK  rª   r   r   r   Útest_var_int16‘  s
    z%TestMaskedArrayMethods.test_var_int16z(ignore:Degrees of freedom <= 0 for slicec                 C   sˆ   t  dddgdddgg¡}| jj |@ }| jj||d�}| jjj||d�}t jj| jj||d�|  |¡B }t	|j|ƒ t	|j|ƒ d S r+  )
r-   r0   rW   r   rI  r
   r  r.  r�   r   )r<   rè   r,  r/  rK  r×   rØ   r   r   r   Útest_var_where˜  s"    þÿ  ÿ
þz%TestMaskedArrayMethods.test_var_wherec                 C   s8   | j jddd�}| j jddd�}t |¡}t||ƒ d S )Nr   rG  )rW   ÚstdrI  r-   Úsqrtr   )r<   Úma_stdrL  rª   r   r   r   Útest_std«  s    
zTestMaskedArrayMethods.test_stdc                 C   sL   | j jddd�}tt |j¡ƒ}| j jdd|d�}||ks>t‚t||ƒ d S )Nr   rG  )rH  rA  )rW   rP  r   r-   rB  r
   rS   r   rC  r   r   r   Útest_std_inplace±  s
    z'TestMaskedArrayMethods.test_std_inplacec                 C   sˆ   t  dddgdddgg¡}| jj |@ }| jj||d�}| jjj||d�}t jj| jj||d�|  |¡B }t	|j|ƒ t	|j|ƒ d S r+  )
r-   r0   rW   r   rP  r
   r  r.  r�   r   )r<   rè   r,  r/  rR  r×   rØ   r   r   r   Útest_std_where¸  s"    þÿ  ÿ
þz%TestMaskedArrayMethods.test_std_wherec                 C   sP   | j  |¡}| j ¡ }| j ¡ || j< | |¡}t|j|ƒ t 	|j
¡rLt‚d S r	   )rW   Úminr   rm   Úmaxr1   r   r
   r-   r¤   r   rS   )r<   rè   Úma_minrÅ   r×   r   r   r   Útest_minË  s    

zTestMaskedArrayMethods.test_minc                 C   sB   t dtjdgdddgd�}| ¡ }t|jt d¡ƒ |jr>t‚d S )Nr   r   FTrQ   )	r   r-   ÚnanrV  r   r
   r0   r   rS   )r<   rW   rX  r   r   r   Útest_min_with_masked_nanÔ  s    z/TestMaskedArrayMethods.test_min_with_masked_nanc                 C   s�   t  dddgdddgg¡}| jj |@ }| jj||t jd�}| jjj||t jd�}t jj| jj||d�|  	|¡B }t
|j|ƒ t
|j|ƒ d S ©NTF)r,  Úinitialr-  )r-   r0   rW   r   rV  Úinfr
   r  r.  r�   r   )r<   rè   r,  r/  rX  r×   rØ   r   r   r   Útest_min_whereÚ  s"    þÿ  ÿ
þz%TestMaskedArrayMethods.test_min_wherec                 C   sP   | j  |¡}| j ¡ }| j ¡ || j< | |¡}t|j|ƒ t 	|j
¡rLt‚d S r	   )rW   rW  r   rm   rV  r1   r   r
   r-   r¤   r   rS   )r<   rè   Úma_maxrÅ   r×   r   r   r   Útest_maxë  s    

zTestMaskedArrayMethods.test_maxc                 C   s”   t  dddgdddgg¡}| jj |@ }| jj||t j d�}| jjj||t j d�}t jj| jj||d�|  	|¡B }t
|j|ƒ t
|j|ƒ d S r\  )r-   r0   rW   r   rW  r^  r
   r  r.  r�   r   )r<   rè   r,  r/  r`  r×   rØ   r   r   r   Útest_max_whereô  s"    þÿ  ÿ
þz%TestMaskedArrayMethods.test_max_wherec                 C   s>   | j  |¡}| j ¡ }| j ¡ || j< | |¡}t||ƒ d S r	   )rW   Úargminr   rm   rW  r1   r   )r<   rè   Z	ma_argminrÅ   r×   r   r   r   Útest_argmin  s
    

z"TestMaskedArrayMethods.test_argminc                 C   s(   t ddgddgd�}| ¡ dks$t‚d S )Nr   r   TF©Údatar   )r   rc  rS   rV   r   r   r   Ú%test_argmin_only_one_unmasked_element  s    z<TestMaskedArrayMethods.test_argmin_only_one_unmasked_elementc                 C   sH   t ddgddggddgddggd�}t|jddd	�t ddgg¡ƒ d S )
Nr   r   r   r(   TFre  r   ©rè   rF  )r   r   rc  r-   r0   rV   r   r   r   Útest_argmin_keepdims  s    $z+TestMaskedArrayMethods.test_argmin_keepdimsc                 C   s>   | j  |¡}| j ¡ }| j ¡ || j< | |¡}t||ƒ d S r	   )rW   Úargmaxr   rm   rV  r1   r   )r<   rè   Z	ma_argmaxrÅ   r×   r   r   r   Útest_argmax  s
    

z"TestMaskedArrayMethods.test_argmaxc                 C   sJ   t ddgddggddgddggd�}t|jddd�t dgdgg¡ƒ d S )	Nr   r   r   r(   TFre  rh  )r   r   rj  r-   r0   rV   r   r   r   Útest_argmax_keepdims#  s    $z+TestMaskedArrayMethods.test_argmax_keepdimsc                 C   sB   | j  |¡}| j ¡ }| j ¡ d || j< | |¡}t||ƒ d S )Ngš™™™™™ñ?)rW   Úargsortr   rm   rW  r1   r   )r<   rè   Ú
ma_argsortrÅ   r×   r   r   r   Útest_argsort'  s
    

z#TestMaskedArrayMethods.test_argsortÚorderNr   r   )r   r   r   r   c                 C   sN   | j j||d�}| j jtjtjtjf| jd�d�}|j||d�}t||ƒ d S )N)rp  r   )rÂ   )r±   rm  rÅ   r-   r0   r^  r5   r   )r<   rè   rp  rn  rÅ   r×   r   r   r   Útest_structured_argsort/  s    "z.TestMaskedArrayMethods.test_structured_argsortc              	   C   s.   t jtdd�� | jjddd� W 5 Q R X d S )Nzwhen the array has no fieldsra   r   r   )rè   rp  )rc   rd   re   rW   rm  r;   r   r   r   Útest_argsort_error7  s    z)TestMaskedArrayMethods.test_argsort_errorrÃ   c                 C   s`   | j  ¡ }| |¡ | j  |¡}t | j j||¡}t | j j||¡}t|j|ƒ t|j|ƒ d S r	   )	rW   rm   Úsortrm  r-   Ztake_along_axisr
   r   r   )r<   rè   Zma_sortré   r×   rØ   r   r   r   Ú	test_sort;  s    

z TestMaskedArrayMethods.test_sortÚkthr   c                 C   s�   | j  ¡ }| |¡}|| }|d |… || k  ¡ s8t‚||d … || k ¡ sTt‚|| jrvt|j|d … ƒsŒt‚nt|jd |… ƒrŒt‚d S r	   )rW   rÝ   Zargpartitionr�   rS   r   r¤   )r<   ru  rW   Zma_argpartitionÚpartitionedr   r   r   Útest_argpartitionE  s    


z(TestMaskedArrayMethods.test_argpartitionc                 C   sˆ   | j  ¡ }| |¡ |d |… || k  ¡ s0t‚||d … || k ¡ sLt‚|| jrnt|j|d … ƒs„t‚nt|jd |… ƒr„t‚d S r	   )rW   ÚflattenÚ	partitionr�   rS   r   r¤   )r<   ru  rv  r   r   r   Útest_partitionQ  s    


z%TestMaskedArrayMethods.test_partitionc                 C   s„  t  ddgddgg¡}t  ddgddgg¡}| jt jk	rX|  || jj¡}|  || jj¡}t|ddgddggd�}t|ddgddggd�}||k}t|jt  ddgddgg¡ƒ t|j	t  ddgddgg¡ƒ | 
¡ sØt‚||k 
¡ rèt‚| 
d	¡}t|j	t  ddg¡ƒ t|d
 ƒdk�st‚t|d	 ƒdk�s4t‚| 
d
¡}t|j	t  ddg¡ƒ t|d
 ƒdk�sjt‚t|d	 ƒdk�s€t‚d S )Nr   r   r   r   r4  FTrQ   r   r   )r-   r0   rB   rA   r   r›   r   r   r
   r   r�   rS   r_   )r<   Za1Za2Zma1rµ   Z
ma1_eq_ma2Zma_eq1Zma_eq0r   r   r   Útest_all_explicit\  sh    þÿþÿþþþþþÿþ	þÿþ	

z(TestMaskedArrayMethods.test_all_explicitr‰   r¤   r�   z
array,axis)r   r   )r   r   )r   N)r   N)r3   r   )r3   r   )r3   Nc                 C   s¬   t | d| ƒ}||k}t ||ƒ|d�}|j ¡ }|dk||j< t ||ƒ|d�}|j |¡}	t|j|	ƒ t|j|ƒ dd„ | ¡ D ƒ}
dd„ ||	 @  ¡ D ƒ}|
|ks¨t‚d S )NrG   rç   r�   c                 S   s   g | ]}t |ƒ‘qS r   ©r_   ©rÌ   r   r   r   r   r  ¨  s     z;TestMaskedArrayMethods.test_all_and_any.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r   r|  r}  r   r   r   r  ©  s     )rÄ   r
   rm   r   r�   r   rÝ   rS   )r<   r0   rè   r‰   rW   Úma_eqZma_all_or_anyrÅ   Za_all_or_anyZ
all_maskedZas_boolrª   r   r   r   Útest_all_and_any˜  s    
z'TestMaskedArrayMethods.test_all_and_anyc                 C   sN   | j | j k}| d¡}tt |j¡ƒ}|jd|d�}||ks@t‚t||ƒ d S r@  )rW   r¤   r   r-   rB  r
   rS   r   )r<   r~  rª   rA  rÇ   r   r   r   Útest_any_inplace¬  s    
z'TestMaskedArrayMethods.test_any_inplace)r�   r¤   c           	      C   s˜   t  dddgdddgg¡}| jj |@ }| j| jk}t||ƒ||d�}t|j|ƒ||d�}t jj| jj||d�|  |¡B }t	|j|ƒ t	|j|ƒ d S r+  )
r-   r0   rW   r   rÄ   r
   r  r.  r�   r   )	r<   r‰   rè   r,  r/  r~  Zma_anyr×   rØ   r   r   r   Útest_all_and_any_where´  s$    þÿ  ÿ
þz-TestMaskedArrayMethods.test_all_and_any_whereÚoffsetc                 C   s:   | j j|d�}t| jj|d�| jj|d�ƒ}t||ƒ d S )N©r‚  )rW   Zdiagonalr   r   r1   r   )r<   r‚  Zmdarª   r   r   r   Útest_diagonalÇ  s     ÿz$TestMaskedArrayMethods.test_diagonalc                 C   s<   | j j|d�}t| jj|d�| jj|td�ƒ}t||ƒ d S )Nrƒ  )r‚  r    )rW   Útracer   r   r1   r_   r   )r<   r‚  Zmtarª   r   r   r   Ú
test_traceÏ  s     ÿz!TestMaskedArrayMethods.test_tracec                 C   s:   | j  | j| j¡}t| j | j| j¡| jƒ}t||ƒ d S r	   )rW   Úclipr   r3   r   r   r1   r   )r<   Úmacliprª   r   r   r   Ú	test_clip×  s    z TestMaskedArrayMethods.test_clipc                 C   s„   | j  | j| j¡}t t | j| j¡| j¡ 	¡ }t 
t 
| j| j¡| j¡ ¡ }t| j | j |¡| j |¡¡| jd�}t||ƒ d S rP   )rW   r‡  r¯   r°   r-   Úmaximumr   r   r3   rW  ÚminimumrV  r   rÅ   r1   r   )r<   rˆ  ZdmaxZdminrª   r   r   r   Útest_clip_masked_min_maxÜ  s     ÿz/TestMaskedArrayMethods.test_clip_masked_min_max)/r>   r?   r@   r%  rc   r—   r˜   r*  r0  r3  r8  r=  r?  rD  ÚfilterwarningsrE  rM  rN  rO  rS  rT  rU  rY  r[  r_  ra  rb  rd  rg  r   ri  rk  rl  ro  rq  rr  rt  rw  rz  r{  r  r€  r�  r„  r†  r‰  rŒ  r   r   r   r   r#    sš   




















	


<þ

r#  c                   @   s   e Zd ZdS )ÚTestMaskedQuantityMethodsNr‚   r   r   r   r   rŽ  ç  s   rŽ  c                   @   s   e Zd ZdS )ÚTestMaskedLongitudeMethodsNr‚   r   r   r   r   r�  ë  s   r�  c                   @   s8   e Zd Zej dd¡dd„ ƒZej dd¡dd„ ƒZdS )ÚTestMaskedArrayProductMethodsrè   r&  c                 C   sB   | j  |¡}| j |¡}| j j |¡}t|j|ƒ t|j|ƒ d S r	   )rW   Úprodr   r   r¤   r   r
   r(  r   r   r   Ú	test_prodñ  s
    z'TestMaskedArrayProductMethods.test_prodc                 C   sZ   | j  |¡}| j |¡}| j}|d kr.| ¡ }tjj||d�}t|j	|ƒ t|j
|ƒ d S ræ   )rW   Zcumprodr   r1   rÝ   r-   r  r1  r   r
   r   r2  r   r   r   Útest_cumprodù  s    z*TestMaskedArrayProductMethods.test_cumprodN)r>   r?   r@   rc   r—   r˜   r’  r“  r   r   r   r   r�  ï  s   
r�  c               	   C   s†   t jddgdd�} t| ddgƒ}t|ƒdks0t‚t|d ƒd	ksDt‚t|d
 ƒdksXt‚t jddd�� t|ƒdksxt‚W 5 Q R X d S )Nr   r   zf8,f8r   r#   r"   u   [(1., â€”â€”) (3., 4.)]r   u   (1., â€”â€”)r   z(3., 4.)r   Zfixed)Ú	precisionZ	floatmodeu%   [(1.000,   â€”â€”â€”) (3.000, 4.000)])r-   r0   r   ÚstrrS   Úprintoptions©r$   r±   r   r   r   Útest_masked_str_explicit  s    r˜  c                  C   s\   t jddgdd�} t| ddgƒ}t|ƒdks0t‚t|d ƒd	ksDt‚t|d
 ƒdksXt‚d S )Nr   r   z>f8,>f8r   r#   r"   uM   MaskedNDArray([(1., â€”â€”), (3., 4.)], dtype=[('f0', '>f8'), ('f1', '>f8')])r   uA   MaskedNDArray((1., â€”â€”), dtype=[('f0', '>f8'), ('f1', '>f8')])r   z=MaskedNDArray((3., 4.), dtype=[('f0', '>f8'), ('f1', '>f8')]))r-   r0   r   ÚreprrS   r—  r   r   r   Útest_masked_repr_explicit  s    ÿÿÿÿrš  c               	   C   sJ   t t d¡dgdgd  d�} tjdd�� t| ƒdks<t‚W 5 Q R X d S )	Ng      .@TFé   rQ   r   )Ú	thresholdu8   MaskedNDArray([â€”â€”â€”,  1.,  2., ..., 12., 13., 14.]))r   r-   r.   r–  r™  rS   )rW   r   r   r   Útest_masked_repr_summary  s    r�  c                   C   s   t tg ƒƒdkst‚d S )Nz MaskedNDArray([], dtype=float64))r™  r   rS   r   r   r   r   Útest_masked_repr_nodata%  s    rž  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestMaskedArrayReprc                 C   s@   t | jƒ t | jƒ t | jƒ t | jƒ t | jƒ t | jƒ d S r	   )r•  rW   r¯   r°   r±   r²   r³   r;   r   r   r   Útest_array_str*  s    




z"TestMaskedArrayRepr.test_array_strc                 C   sj   | j d jdkst‚t| j d ƒ | jd jdks6t‚t| jd ƒ | jd jdksXt‚t| jd ƒ d S )Nr   r   )r¯   rZ   rS   r•  r²   r³   r;   r   r   r   Útest_scalar_str3  s    z#TestMaskedArrayRepr.test_scalar_strc                 C   s@   t | jƒ t | jƒ t | jƒ t | jƒ t | jƒ t | jƒ d S r	   )r™  rW   r¯   r°   r±   r²   r³   r;   r   r   r   Útest_array_repr;  s    




z#TestMaskedArrayRepr.test_array_reprc                 C   s.   t | jd ƒ t | jd ƒ t | jd ƒ d S ró   )r™  r¯   r²   r³   r;   r   r   r   Útest_scalar_reprC  s    z$TestMaskedArrayRepr.test_scalar_reprN)r>   r?   r@   r   r¡  r¢  r£  r   r   r   r   rŸ  )  s   	rŸ  c                   @   s   e Zd ZdS )ÚTestMaskedQuantityReprNr‚   r   r   r   r   r¤  I  s   r¤  c                       sd   e Zd Ze‡ fdd„ƒZdd„ Zdd„ Zej 	ddd	g¡d
d„ ƒZ
ej 	ddd	g¡dd„ ƒZ‡  ZS )ÚTestMaskedRecarrayc                    s0   t ƒ  ¡  | j tj¡| _t| j| jd�| _	d S rP   )
rE   r=   r$   ri   r-   ÚrecarrayÚrar   r7   Úmrar;   rJ   r   r   r=   N  s    
zTestMaskedRecarray.setup_classc                 C   sª   t | jtƒst‚t | jtjƒs"t‚t | jj| jk¡s:t‚t | jj	| j
k¡sRt‚t| j tj¡| jƒ t | jjtƒszt‚t| jjj| jd ƒ t| jjj	| j
d ƒ d S ©Nr   )rR   r¨  r   rS   r-   r¦  r�   r
   r§  r   r7   r   ri   rA   r$   r   r;   r   r   r   Útest_recarray_setupT  s    z&TestMaskedRecarray.test_recarray_setupc                 C   sF   | j  ¡ }| jd |_t|jj| jd jƒ t|jj| jd jƒ d S ©Nr   )r¨  rm   r±   r   r   r
   r   )r<   r¨  r   r   r   Útest_recarray_setting^  s    
z(TestMaskedRecarray.test_recarray_settingÚattrr   r   c                 C   sB   | j  |¡}t|tƒst‚t|j| jd ƒ t|j| j	d ƒ d S r©  )
r¨  r  rR   r   rS   r   r
   r$   r   r7   )r<   r­  Zmra_ar   r   r   Útest_recarray_field_gettingd  s    z.TestMaskedRecarray.test_recarray_field_gettingc                 C   sL   | j  ¡ }| || jd ¡ t|jj| jd jƒ t|jj| jd jƒ d S r«  )r¨  rm   r  r±   r   r   r
   r   )r<   r­  r¨  r   r   r   Útest_recarray_field_settingk  s    
z.TestMaskedRecarray.test_recarray_field_setting)r>   r?   r@   rC   r=   rª  r¬  rc   r—   r˜   r®  r¯  rL   r   r   rJ   r   r¥  M  s   

r¥  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú%TestMaskedArrayInteractionWithNumpyMAc                 C   sj   t j | j¡}t|ƒt jjks"t‚t|jƒ| jks6t‚t|jƒt jksJt‚t	|j| j
ƒ t	|j| jƒ dS )z4Check that we can initialize a MaskedArray properly.N)r-   rW   r™   rT   rS   rf  rB   r   rA   r   r   r1   ©r<   Znp_mar   r   r   Útest_masked_array_from_maskedt  s    zCTestMaskedArrayInteractionWithNumpyMA.test_masked_array_from_maskedc                 C   sl   | j  tj j¡}t|ƒtj jks$t‚t|jƒ| jks8t‚t|jƒtj	ksLt‚t
|j| jƒ t
|j| jƒ dS )z,Test that we can be viewed as a MaskedArray.N)rW   ri   r-   r™   rT   rS   rf  rB   r   rA   r   r   r1   r±  r   r   r   Útest_view_as_masked_array}  s    z?TestMaskedArrayInteractionWithNumpyMA.test_view_as_masked_arrayN)r>   r?   r@   r²  r³  r   r   r   r   r°  s  s   	r°  c                   @   s   e Zd ZdS )Ú(TestMaskedQuantityInteractionWithNumpyMANr‚   r   r   r   r   r´  ‡  s   r´  )<r…   r
  Únumpyr-   rc   Znumpy.testingr   Zastropyr   rF   Zastropy.coordinatesr   Zastropy.unitsr   Zastropy.utils.compatr   Zastropy.utils.maskedr   r   r   Úslicer­   r   rD   rM   rO   r`   rg   rk   rl   r†   rš   r£   r®   r´   r¿   rÐ   rÑ   rÒ   râ   rñ   r÷   rø   rù   r  r!  r"  r#  rŽ  r�  r�  r˜  rš  r�  rž  rŸ  r¤  r¥  r°  r´  r   r   r   r   Ú<module>   sn   /	?L%H3BDi   K
 &
 ÿ