a
    Qee                     @   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   T/var/www/sunrise/env/lib/python3.9/site-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   sR   t ddt jdg}tjtdd t|dd W d    n1 sD0    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   sB   t jtdd  tg ddd W d    n1 s40    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   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   rH   rI   )r   r   r   r   )r   r;   r   r   r   test_axis_noneI   s    zTestVariation.test_axis_nonec                 C   sR   t g dg dg}tt j t|dd W d    n1 sD0    Y  d S )Nr3   )r
   r      r5   rM   )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   rR   r   rM   )r   r   r   r   inf)r   r   r;   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   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   rM   )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 )
NrQ   r   r   r   rS   ir#   r7   r	   r&   )r   r   r   r   rT   r'   )r   x1rU   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   r[   r   r   rG   gUUUUUU?)r   r   r'   r   r   rT   r   )r   r&   r   r;   r   r   r   test_combined_edge_casesx   s    z&TestVariation.test_combined_edge_caseszddof, expectedgUUUUUU?g      ?r         ?g?rH   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#   r\   )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sdJ d S )Nr   r   r   r   r
   r   r   r#   )r&   r	   g      @)r   r   r'   r   r   r   )r   rK   Znan_ar;   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(   r2   r4   r<   rY   rC   rA   rT   rE   rL   rN   rP   rW   r?   rX   rZ   r^   r_   ra   rb   r   r   r   r   r      sX   



"


& (
r   )	numpyr   Znumpy.testingr   r   r/   Zscipy.statsr   r   r   r   r   r   <module>   s   