a
    h                     @   sJ   d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	 G dd dZ
dS )    N)assert_equalassert_allclose)	variation)	AxisErrorc                   @   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   \/var/www/html/assistant/venv/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&   )r0   r1   r2   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   Tr7   )r   zerosr   r   r   r8   r   r   r<   r   r   r   test_keepdims_size04   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)r8   r
   r9   )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#   r8   r'         ?      ?gV瞯<)Zatol)	r   r   r;   Zastypefloatr(   r   r   r   )r   ar   r   r   r   test_propagate_nanB   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   r8   rI   rJ   )r   r   r   r   )r   r<   r   r   r   test_axis_noneJ   s    zTestVariation.test_axis_nonec                 C   sP   t g dg dg}tt t|dd W d    n1 sB0    Y  d S )Nr4   )r   r      r6   rN   )r   r   r0   r1   r   r   r   r   r   r   test_bad_axisP   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)r6   r   rS   r   rN   )r   r   r   r   inf)r   r   r<   x2y2r   r   r   test_mean_zeroV   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_nana   s    zTestVariation.test_return_nanr   Nc                 C   s$   t d}t||d}t|| d S )N)r   r   rN   )r   emptyr   r   rA   r   r   r   test_2d_size_zero_with_axisg   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 )
NrR   r   r	   r   rT   ir$   r8   r
   r'   )r   r   r   r   rU   r(   )r   x1rV   r   r   r   test_neg_infn   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   r6   r   r\   r   r   rH   gUUUUUU?)r   r   r(   r   r   rU   r   )r   r'   r   r<   r   r   r   test_combined_edge_casesy   s    z&TestVariation.test_combined_edge_caseszddof, expectedgUUUUUU?g      ?r          ?g?rI   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      ra   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   rL   Znan_ar<   Znan_yr   r   r   test_variation_ddof   s    z!TestVariation.test_variation_ddof)!__name__
__module____qualname____doc__r   r0   markZparametrizer   r"   r   r(   r   r)   r3   r5   r=   rZ   rD   rB   rU   rF   rM   rO   rQ   rX   r@   rY   r[   r_   r`   rb   rc   r   r   r   r   r      sX   



"


& (
r   )numpyr   Znumpy.testingr   r   r0   Zscipy.statsr   Zscipy._lib._utilr   r   r   r   r   r   <module>   s
   