U
    Hvfe                     @   s>   d dl Zd dlmZmZ d dlZd dlmZ G dd dZdS )    N)assert_equalassert_allclose)	variationc                   @   s  e Zd ZdZdd Zejdddgdd Zd	d
 Z	ejdde
jfde
dd fgdd Zdd Zdd Zdd Zejdde
dfde
jde
jdfgdd Zejdde
jfde
jfgd d! Zd"d# Zd$d% Zd&d' Zd(d) Zejd*e
d+g dd,e
jd-ggd.d/ Zejddg fde
jgd0 fd1e
jfgd2d3 Zd4d5 Zejd6ddgd7d8 Zejd9de
d:e
d;e
jde
jd<e
jgfdd=e
d>e
jde
jde
jgfd,e
d=e
d?e
je
je
jde
jgfgd@dA ZdBdC Z d1S )DTestVariationz.
    Test class for scipy.stats.variation
    c                 C   s*   t d}tt|ddt dd  d S )N      "@   ddofg      @   )nparanger   r   sqrtselfx r   D/tmp/pip-unpacked-wheel-96ln3f52/scipy/stats/tests/test_variation.py	test_ddof   s    
zTestVariation.test_ddofsgnr   c                 C   sD   t dddddg}t|| }|t d d }t||dd d S )Nr         r
      g|=)Zrtol)r   arrayr   r   r   )r   r   r   vexpectedr   r   r   	test_sign   s    zTestVariation.test_signc                 C   s   t tdd d S )N      @        )r   r   r   r   r   r   test_scalar   s    zTestVariation.test_scalarznan_policy, expected	propagateomitg@r
   c                 C   s*   t d}t j|d< tt||d| d S )Ng      $@	   
nan_policy)r   r   nanr   r   )r   r%   r   r   r   r   r   test_variation_nan   s    

z TestVariation.test_variation_nanc              	   C   s>   t ddt jdg}tjtdd t|dd W 5 Q R X d S )N      ?       @      @zinput contains nanmatchraiser$   )r   r   r&   pytestraises
ValueErrorr   r   r   r   r   test_nan_policy_raise#   s    z#TestVariation.test_nan_policy_raisec              	   C   s0   t jtdd tdddgdd W 5 Q R X d S )Nzmust be one ofr+   r   r   r   Zfoobarr$   )r.   r/   r0   r   r   r   r   r   test_bad_nan_policy(   s    z!TestVariation.test_bad_nan_policyc                 C   sT   t ddd}t|ddd}t t dd gt dd gg}t|| d S )N
   r   r   r   Taxiskeepdims   )r   r   reshaper   r   r   r   )r   r   yr   r   r   r   test_keepdims,   s    zTestVariation.test_keepdimszaxis, expectedr   r   r   )r   r   Z
fill_valuec                 C   s&   t d}t||dd}t|| d S )N)r   r   Tr4   )r   zerosr   r   r   r5   r   r   r9   r   r   r   test_keepdims_size03   s    
z!TestVariation.test_keepdims_size0zincr, expected_fillc                 C   sP   t ddddgddddgg}t|d|jd | dd}t|t jd|d d S )Nr   r   r   T)r5   r	   r6   )r   r   r<   )r   r   r   shaper   full)r   incrZexpected_fillr   r9   r   r   r   'test_keepdims_and_ddof_eq_len_plus_incr;   s    z5TestVariation.test_keepdims_and_ddof_eq_len_plus_incrc                 C   sR   t dddt}t j|d< t|ddd}t|t dd	 t jgd
d d S )N   r   r   r;   r   r!   r5   r%         ?      ?gV瞯<)Zatol)	r   r   r8   Zastypefloatr&   r   r   r   )r   ar   r   r   r   test_propagate_nanA   s    
z TestVariation.test_propagate_nanc                 C   s0   t ddgddggd d}t|tdd  d S )Nr   r   r   r   r5   rF   rG   )r   r   r   r   )r   r9   r   r   r   test_axis_noneI   s    zTestVariation.test_axis_nonec              	   C   sB   t dddgdddgg}tt j t|dd W 5 Q R X d S )	Nr   r   r   r
   r      r3   rK   )r   r   r.   r/   Z	AxisErrorr   r   r   r   r   test_bad_axisO   s    zTestVariation.test_bad_axisc                 C   s\   t dddddg}t|}t|t j t |d| g}t|dd}t|t jt jg d S )Nr3   r   rK   )r   r   r   r   inf)r   r   r9   x2y2r   r   r   test_mean_zeroU   s    zTestVariation.test_mean_zeror   r   r   r#   c                 C   s   t |}t|tj d S )N)r   r   r   r&   )r   r   r9   r   r   r   test_return_nan`   s    zTestVariation.test_return_nanr   Nc                 C   s$   t d}t||d}t|| d S )N)r   r   rK   )r   emptyr   r   r>   r   r   r   test_2d_size_zero_with_axisf   s    
z)TestVariation.test_2d_size_zero_with_axisc                 C   sp   t ddg}tt|ddt j  t t jddt jgddt jt jgg}tt|dddd	t j t j g d S )
NrO   r   r   r   rQ   ir"   r5   r	   r%   )r   r   r   r   rR   r&   )r   x1rS   r   r   r   test_neg_infm   s    zTestVariation.test_neg_infr%   c                 C   sb   t ddt jdgddt jdgddt jdgg}t|d|d}t|t jt jt jt dd g d S )	Nr   r3   r   rY   r   r   rE   gUUUUUU?)r   r   r&   r   r   rR   r   )r   r%   r   r9   r   r   r   test_combined_edge_casesx   s    z&TestVariation.test_combined_edge_caseszddof, expectedgUUUUUU?g      ?r         ?g?rF   c                 C   st   t j}t dd|dgddddg|dd|g|dd|g||||gddddgddddgg}t|d	|d
d}t|| d S )Nr(   r)   r*   r   r   g      r^   r   r   r"   rZ   )r   r&   r   r   r   )r   r	   r   r&   r   r   r   r   r   test_more_nan_policy_omit_tests   s    





z-TestVariation.test_more_nan_policy_omit_testsc              	   C   sn   t dddddg}t dddt jddt jg}t|dd}t|ddd}t|t d	d  ||ksjtd S )
Nr   r   r   r
   r   r   r"   )r%   r	   g      @)r   r   r&   r   r   r   AssertionError)r   rI   Znan_ar9   Znan_yr   r   r   test_variation_ddof   s    z!TestVariation.test_variation_ddof)!__name__
__module____qualname____doc__r   r.   markZparametrizer   r    r   r&   r   r'   r1   r2   r:   rW   rA   r?   rR   rC   rJ   rL   rN   rU   r=   rV   rX   r\   r]   r_   ra   r   r   r   r   r      sX   



"


& (
r   )	Znumpyr   Znumpy.testingr   r   r.   Zscipy.statsr   r   r   r   r   r   <module>   s   