o
    Ebe                     @   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   B/usr/lib/python3/dist-packages/scipy/stats/tests/test_variation.py	test_ddof   s   
 zTestVariation.test_ddofsgnr   c                 C   s>   t g d}t|| }|t d d }t||dd d S )Nr         r
      r   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   sT   t ddt jdg}tjtdd t|dd W d    d S 1 s#w   Y  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   sD   t jtdd tg ddd W d    d S 1 sw   Y  d S )Nzmust be one ofr,   r   r   r   Zfoobarr%   )r/   r0   r1   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   Tr6   )r   zerosr   r   r   r7   r   r   r;   r   r   r   test_keepdims_size03   s   
z!TestVariation.test_keepdims_size0zincr, expected_fillc                 C   sH   t g dg dg}t|d|jd | dd}t|t jd|d d S )N)r   r   r   r   )r   r   r   r   r   T)r7   r	   r8   )r   r   r>   )r   r   r   shaper   full)r   ZincrZexpected_fillr   r;   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"   r7   r&         ?      ?gV瞯<)Zatol)	r   r   r:   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   r7   rG   rH   )r   r   r   r   )r   r;   r   r   r   test_axis_noneI   s   zTestVariation.test_axis_nonec                 C   sT   t g dg dg}tt j t|dd W d    d S 1 s#w   Y  d S )Nr3   )r
   r      r5   rL   )r   r   r/   r0   Z	AxisErrorr   r   r   r   r   test_bad_axisO   s   "zTestVariation.test_bad_axisc                 C   sV   t g d}t|}t|t j t |d| g}t|dd}t|t jt jg d S )N)r5   r   rQ   r   rL   )r   r   r   r   inf)r   r   r;   x2Z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   r;   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   rL   )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 )
NrP   r   r   r   rR   ir#   r7   r	   r&   )r   r   r   r   rS   r'   )r   Zx1rT   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   r5   r   rY   r   r   rF   gUUUUUU?)r   r   r'   r   r   rS   r   )r   r&   r   r;   r   r   r   test_combined_edge_casesx   s   &z&TestVariation.test_combined_edge_caseszddof, expectedgUUUUUU?g      ?r         ?g?rG   c              
   C   sh   t j}t dd|dgg d|dd|g|dd|g||||gg dg d	g}t|d
|dd}t|| d S )Nr)   r*   r+   )r   r   r+   r)   g      r]   r   )r+   r+   r+   r+   )r   r   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   sh   t g d}t dddt jddt jg}t|dd}t|ddd	}t|t d
d  ||ks2J d S )Nr   r   r   r   r
   r   r   r#   )r&   r	   g      @)r   r   r'   r   r   r   )r   rJ   Znan_ar;   Znan_yr   r   r   test_variation_ddof   s   z!TestVariation.test_variation_ddof)!__name__
__module____qualname____doc__r   r/   ZmarkZparametrizer   r!   r   r'   r   r(   r2   r4   r<   rW   rC   rA   rS   rD   rK   rM   rO   rU   r?   rV   rX   r[   r\   r^   r_   r   r   r   r   r      sZ    



"


& (
r   )	Znumpyr   Znumpy.testingr   r   r/   Zscipy.statsr   r   r   r   r   r   <module>   s
    