a
    ˆù»j3  ã                   @   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   úFE:\soccer\ml_env\Lib\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   iìÿÿÿr$   ©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
   