U
    Kvf"                     @   st   d Z ddlmZmZ ddlmZmZmZmZ ddl	Z
ddlZddlmZmZ dd ZG dd	 d	ZG d
d dZdS )zThe 'handful' tests are intended to aid refactoring. The tests with the
@pytest.mark..slow are empirical (test within error limits) and intended to more
extensively ensure the stability and accuracy of the functions    )lziplmap)assert_equalassert_almost_equalassert_array_almost_equalassert_raisesN)qsturngpsturngc              	   C   s^   t | dd}| }W 5 Q R X tdd |D  \}}}}tt|tt|tt|tt|fS )Nzutf-8)encodingc                 S   s   g | ]}| d qS ),)split).0L r   S/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/libqsturng/tests/test_qsturng.py
<listcomp>   s     zread_ch.<locals>.<listcomp>)open	readlinesr   r   float)fnameflinespsrsvsqsr   r   r   read_ch   s    r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zejj	d	d
 Z
dd Zejjdd ZdS )TestQsturngc                 C   s   t dtdddd d S )N/
.@?      r   r   selfr   r   r   test_scalar   s    zTestQsturng.test_scalarc                 C   s6   t tdddgtdddgdddgdddgd	 d S )
Nx>[@ݵB`E@D\X@g0*?gCl?g58EGr?   r!   r    )r   nparrayr   r#   r   r   r   test_vector!   s    
zTestQsturng.test_vectorc                 C   sX   t ttddd t ttddd t ttddd t ttddd t ttftddd	 d S )
N皙r    r!   g-?g{Gz?   r   r      )r   
ValueErrorr   OverflowErrorr#   r   r   r   test_invalid_parameters+   s
    z#TestQsturng.test_invalid_parametersc                 C   sV   ddddddddd	d
ddddddddddg}|D ] \}}}}t |t|||d q0d S )N)      ?      >@      (@ga5@)g333333?      .@      2@gUb@)皙?       @      &@g%3?)gףp=
?      @      1@g!@)333333?r6   r7   g@)r3   r<   r7   gvS@)r3         N@g      0@g#<U@)Gz?g      Y@       @g.j1I@)r   r@   g      D@g[@)皙?r5         4@gL@)皙?r9         ,@g}@	
@)r3   r4   g      8@g{@)r3   r@   r7   g3?)r?         @g      ^@gV*ީb@)rA   g      3@r6   gkW@)rA   r6   r9   g` X77@)g      ?r5   r:   g)
@)r=   r4   r@   g2v$@)rC   rB   r7   g~?@)r8   r>   r>   gJf@r    r"   r$   Zcasesprvqr   r   r   test_handful_to_tbl7   s.    zTestQsturng.test_handful_to_tblc                 C   s   ddl m}m} g g g g f\}}}}|D ]X}|| D ]J}| D ]<}	|| || ||	 ||| | ||	   q@q4q(t|}t|t||| | }
t	tg t
|
dkd  d S )Nr   )TRQ?)Z&statsmodels.stats.libqsturng.make_tblsrL   rM   keysappendr*   r+   absr   r   where)r$   rL   rM   r   r   r   r   rG   rI   rH   errorsr   r   r   test_all_to_tblS   s    


 
zTestQsturng.test_all_to_tblc                 C   sV   ddddddddd	d
ddddddddddg}|D ] \}}}}t |t|||d q0d S )N)gD:?g      $@g]C}@g~@)g{[c?g     E@ggwj@ga@)g:kB?r:   gZӼ(x@g۴
@)gWBwI?g     I@g}?5^R@g\oY>@)g俛?     @S@gǘ}@ge@)gJ{?rU   g48@g9%@)g5?rE   gL
F%kl@gq@)g?r>   gTR'Ut@gy;{.@)gH?g     N@g}?5^:@gvzH@)g@j?g      R@g_vOs@gvB;&4@)gd,	?g      L@g~k.@g(s@)g(7H?g     D@gp`@glj@)gNl w?g      F@gEGr@g{'g@)gt?rD   g:Mmo@g25Q@)g8?g     F@gjta@g8@)gm4@?r;   gyX5/r@g&ؗ
@)gRE*k?g     T@gk	@gV%Bc@)gF(e?r7   gDt@g9@P@)gqh?r@   g#~j@grDUfL@)giDzH?g     W@g.s,&V@g|!@r    r"   rF   r   r   r   test_handful_to_chc   s.    zTestQsturng.test_handful_to_chc                 C   s   dd l }|j|jt}t|j|j|d d d \}}}}t|}t	|t
||| | }ttg t|dkd  d S )Nr   z/tests/results/bootleg.csvrN   )ospathdirnameabspath__file__r   r   r*   r+   rQ   r   r   rR   )r$   rW   curdirr   r   r   r   rS   r   r   r   test_10000_to_ch|   s    
zTestQsturng.test_10000_to_chN)__name__
__module____qualname__r%   r,   r2   rK   pytestmarkskiprT   rV   slowr]   r   r   r   r   r      s   

r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
dd ZdS )TestPsturngc                 C   s   t dtdddd dS )zscalar input -> scalar outputr8   r   r    r!   Nr   r	   r#   r   r   r   r%      s    zTestPsturng.test_scalarc                 C   s6   t tdddgtdddgdddgdddgd	 d
S )zvector input -> vector outputg,W?g_o(İ?gQx?r&   r'   r(   r)   r!   r    N)r   r*   r+   r	   r#   r   r   r   r,      s    zTestPsturng.test_vectorc                 C   s   t dtdddd d S )Nr8   g?r    r.   rf   r#   r   r   r   test_v_equal_one   s    zTestPsturng.test_v_equal_onec                 C   s(   t ttddd t ttftddd d S )Nr-   r    r!   r   r.   r/   )r   r0   r	   r1   r#   r   r   r   r2      s    z#TestPsturng.test_invalid_parametersc                 C   sZ   ddddddddd	d
ddddddddddg}|D ]$\}}}}t d| t|||d q0d S )N)gjb>?C   g`Ψ@ge5@)g.?   gi@\@gǭIؒ
@)gr:1a?r/   gDNm~@gpYs$@)g	zP?B   g
DMjP@gP{3LB@)g۹+?J   gc@glaHh$@)g|-T>?1   g̜@gts @)g)]~9?   g"B@g7\@)gFpa?2   g<𸺔p@g*(e@)gkᾛk?;   gίQ@g`@)g6?=   g0=x@g.+э{@)g~cš?M   gM̜Z@ga
H@)gL\?S   gL,dT@gDO1@)gS?ri   g"&-@gP>@)gʠѭ_?   g4-p@gTT.@)gOs6?Q   gik7 @g9@p@)gB\?rm   gkkJ˴1@gɠ	@)ggG?H   gHh{@gae@)gdbX?/   g@% @g>@)gA+|T?$   g@gK@)gcπe?rq   g#z@gcK5)@      ?r    rf   rF   r   r   r   test_handful_to_known_values   s.    z(TestPsturng.test_handful_to_known_valuesc                 C   s   d}t jd}||d d }|dd|}||d d }t|||}t|||}d	| }	||	 }
tt g t 	|
d
kd  d S )Nd   i90  gS㥛?r8   r/   e   g     0@r@   rx   gh㈵>r   )
r*   randomZRandomStateZrandom_samplerandintr   r	   r   r+   rR   )r$   Zreset_randomstatenZrandom_stater   r   r   r   Z	estimatesZactualsrS   r   r   r   test_100_random_values   s    z"TestPsturng.test_100_random_valuesN)r^   r_   r`   r%   r,   rg   r2   ry   ra   rb   rd   r   r   r   r   r   re      s   re   )__doc__Zstatsmodels.compat.pythonr   r   Znumpy.testingr   r   r   r   Znumpyr*   ra   Zstatsmodels.stats.libqsturngr   r	   r   r   re   r   r   r   r   <module>   s   l