o
    5Bi                     @   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/Trade-python/venv/lib/python3.10/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|=)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   foobarr'   )r1   r2   r3   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   
fill_valuec                 C   s&   t d}t||dd}t|| d S )N)r   r   Tr9   )r   zerosr   r   r   r:   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)r:   r
   r;   )r   r   rA   )r   r   r   shaper   full)r   incr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$   r:   r(         ?      ?gV瞯<)atol)	r   r   r=   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   r:   rM   rN   )r   r   r   r   )r   r>   r   r   r   test_axis_noneJ   s   zTestVariation.test_axis_nonec                 C   sR   t g dg dg}tt t|dd W d    d S 1 s"w   Y  d S )Nr5   )r   r      r8   rT   )r   r   r1   r2   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)r8   r   rY   r   rT   )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   rT   )r   emptyr   r   rD   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 )
NrX   r   r	   r   rZ   ir%   r:   r
   r(   )r   r   r   r   r[   r)   )r   x1r\   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   r8   r   rb   r   r   rL   gUUUUUU?)r   r   r)   r   r   r[   r   )r   r(   r   r>   r   r   r   test_combined_edge_casesy   s   &z&TestVariation.test_combined_edge_caseszddof, expectedgUUUUUU?g      ?r!         ?g?rM   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      rg   r   )r-   r-   r-   r-   )r!   r!   r!   r!   r   r%   rc   )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   rR   nan_ar>   nan_yr   r   r   test_variation_ddof   s   z!TestVariation.test_variation_ddof)!__name__
__module____qualname____doc__r   r1   markparametrizer   r#   r   r)   r   r*   r4   r7   r?   r`   rG   rE   r[   rJ   rS   rU   rW   r^   rC   r_   ra   re   rf   rh   rk   r   r   r   r   r      sZ    



"


& (
r   )numpyr   numpy.testingr   r   r1   scipy.statsr   scipy._lib._utilr   r   r   r   r   r   <module>   s    