B
    .uf                @   s   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlZG dd dZG dd dZG dd	 d	ZG d
d dZG dd dZG dd dZG dd dZG dd dZG dd dZdS )    N)assert_assert_raisesassert_equalassert_warnsassert_no_warningsassert_array_equalassert_array_almost_equalsuppress_warnings)randomc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSeedc             C   s<   t jd}t|dd t jd}t|dd d S )Nr   i  i  l    i  )npr
   RandomStater   randint)selfs r   `/home/ankuromar296_gmail_com/myenv/lib/python3.7/site-packages/numpy/random/tests/test_random.pytest_scalar   s    zTestSeed.test_scalarc             C   s   t jtd}t|dd t jt d}t|dd t jdg}t|dd t jdg}t|dd d S )N
   i  i  r   i  l    i	  )r   r
   r   ranger   r   arange)r   r   r   r   r   
test_array   s    zTestSeed.test_arrayc             C   s$   t ttjjd t ttjjd d S )Ng      )r   	TypeErrorr   r
   r   
ValueError)r   r   r   r   test_invalid_scalar    s    zTestSeed.test_invalid_scalarc             C   sf   t ttjjdg t ttjjdg t ttjjdg t ttjjdddg t ttjjdddg d S )Ng      r   l              )r   r   r   r
   r   r   )r   r   r   r   test_invalid_array%   s
    zTestSeed.test_invalid_arrayc             C   sX   t ttjjtjg tjd t ttjjdddgg t ttjjdddgdddgg d S )N)dtyper   r               )r   r   r   r
   r   arrayint64)r   r   r   r   test_invalid_array_shape-   s
    
z!TestSeed.test_invalid_array_shapeN)__name__
__module____qualname__r   r   r   r   r'   r   r   r   r   r      s
   
r   c               @   s   e Zd Zdd Zdd ZdS )TestBinomialc             C   sF   t jddd}x2dD ]*}ttd|dk tt||| qW d S )Nr   int)r    )r   g      ?r   r   )r   zerosr   r
   binomialr   )r   r-   pr   r   r   test_n_zero7   s    
zTestBinomial.test_n_zeroc             C   s   t ttjdtj d S )Nr   )r   r   r
   r.   r   nan)r   r   r   r   test_p_is_nan@   s    zTestBinomial.test_p_is_nanN)r(   r)   r*   r0   r2   r   r   r   r   r+   6   s   	r+   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestMultinomialc             C   s   t dddg d S )Nd   g?g?)r
   multinomial)r   r   r   r   
test_basicF   s    zTestMultinomial.test_basicc             C   s   t ddddddg d S )Nr4   g?g?g        )r
   r5   )r   r   r   r   test_zero_probabilityI   s    z%TestMultinomial.test_zero_probabilityc             C   sZ   t dtdd  kodk n   tddd}t td|k t t|dk  d S )Nr   r#   )r   r
   r   r   all)r   xr   r   r   test_int_negative_intervalL   s    $z*TestMultinomial.test_int_negative_intervalc             C   s   ddg}t tjd|tdjd t tjd|tdjd t tjd|tdjd t tjd|ddgjd t tjd|djd t tjd|tdjd tttjjd|t	d d S )Ng      ?r   )r   r   r   )r   r   r   )r   r   )
r   r   r
   r5   uint32shaper%   r   r   float)r   r/   r   r   r   	test_sizeR   s    zTestMultinomial.test_sizec          	   C   s   t ttjjdddgg t ttjjddgdgg t ttjjddgdggdgdggg t ttjjdtddgddgg d S )Nr   r   r   )r   r   r   r
   r5   r%   )r   r   r   r   test_multidimensional_pvals`   s    &z+TestMultinomial.test_multidimensional_pvalsN)r(   r)   r*   r6   r7   r;   r?   r@   r   r   r   r   r3   E   s
   r3   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestSetStatec             C   s$   d| _ t| j | _| j | _d S )NiI)seedr
   r   prng	get_statestate)r   r   r   r   setuph   s    zTestSetState.setupc             C   s<   | j d}| j | j | j d}tt||k d S )N   )rC   Ztomaxint	set_staterE   r   r   r9   )r   oldnewr   r   r   r6   m   s    zTestSetState.test_basicc             C   s@   | j jdd}| j | j | j jdd}tt||k d S )Nr!   )size)rC   standard_normalrH   rE   r   r   r9   )r   rI   rJ   r   r   r   test_gaussian_resets   s    z TestSetState.test_gaussian_resetc             C   sR   | j   | j  }| j jdd}| j | | j jdd}tt||k d S )Nr!   )rK   )rC   rL   rD   rH   r   r   r9   )r   rE   rI   rJ   r   r   r    test_gaussian_reset_in_media_resz   s    

z-TestSetState.test_gaussian_reset_in_media_resc             C   sz   | j d d }| jjdd}| j| | jjdd}| j| j  | jjdd}tt||k tt||k d S )Nr   rG   )rK   )rE   rC   rL   rH   r   r   r9   )r   	old_statex1Zx2Zx3r   r   r   test_backwards_compatibility   s    z)TestSetState.test_backwards_compatibilityc             C   s   | j dd d S )Ng      ?)rC   negative_binomial)r   r   r   r   test_negative_binomial   s    z#TestSetState.test_negative_binomialN)	r(   r)   r*   rF   r6   rM   rN   rQ   rS   r   r   r   r   rA   g   s   rA   c            	   @   s|   e Zd ZejjZejejej	ej
ejejejejejg	Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Zdd ZdS )TestRandintc             C   s   t t| jdtd d S )Nr   )r    )r   r   rfuncr>   )r   r   r   r   test_unsupported_type   s    z!TestRandint.test_unsupported_typec             C   s   x| j D ]}|tjkrdn
t|j}|tjkr4dnt|jd }tt| j|d ||d tt| j||d |d tt| j|||d tt| jdd|d qW d S )Nr   r   r   )r    )	ityper   bool_iinfominmaxr   r   rU   )r   dtlbndubndr   r   r   test_bounds_checking   s    z TestRandint.test_bounds_checkingc             C   s   x| j D ]}|tjkrdn
t|j}|tjkr4dnt|jd }|d }t| j||d d|d| |}t| j||d d|d| || d }t| j||d d|d| qW d S )Nr   r   r   i  )rK   r    )rW   r   rX   rY   rZ   r[   r   rU   )r   r\   r]   r^   tgtr   r   r   test_rng_zero_and_extremes   s    z&TestRandint.test_rng_zero_and_extremesc             C   s   x| j D ]}|tjkrdn
t|j}|tjkr4dnt|jd }y| j|||d W q tk
r } ztdt	| W d d }~X Y qX qW d S )Nr   r   r   )r    zMNo error should have been raised, but one was with the following message:

%s)
rW   r   rX   rY   rZ   r[   rU   	ExceptionAssertionErrorstr)r   r\   r]   r^   er   r   r   test_full_range   s    zTestRandint.test_full_rangec             C   s   t j  xV| jdd  D ]D}x>dD ]6}| jd|d|d}t| |k  t| dk q$W qW | jdddt jd}t| dk  t| dk d S )Nr   )r"      rG   r   i   )rK   r    r   )	r   r
   rB   rW   rU   r   r[   rZ   rX   )r   r\   r^   valsr   r   r   test_in_bounds_fuzz   s    

zTestRandint.test_in_bounds_fuzzc          
   C   s   dd l }dddddddddd	}x| jdd  D ]r}tjd	 tjd
kr^| jddd|d}n| jddd|d }|	|
tj }t|t|j |k q0W tjd	 | jdddtd
tj}|	| }t|ttj |k d S )Nr   Z@509aea74d792fb931784c4b0135392c65aec64beee12b0cc167548a2c3d31e71Z@7b07f1a920e46f6d0fe02314155a2330bcfd7635e708da50e536c5ebb631a7d4Z@e577bfed6c935de944424667e3da285012e741892dcb7051a8f1ce68ab05c92fZ@0fbead0b06759df2cfb55e43148822d4a1ff953c7eb19a5b08445a63bb64fa9eZ@001aac3a5acb935a9b186cbe14a1ca064b8bb2dd0b045d48abeacf74d0203404)	boolint16int32r&   int8uint16r<   uint64uint8r   i  littler$   i  )rK   r    r   )hashlibrW   r   r
   rB   sys	byteorderrU   byteswapsha256viewrm   	hexdigestr   r    namerj   )r   rr   r`   r\   valresr   r   r   test_repeatability   s*    
zTestRandint.test_repeatabilityc             C   s`   t j}t t jj}t t t jj}t t t jjd }t jj|||d}t|| d S )Nr   )r    )r   r&   rY   r[   ro   r
   r   r   )r   r\   r`   r]   r^   actualr   r   r   test_int64_uint64_corner_case   s    z)TestRandint.test_int64_uint64_corner_casec             C   s   xh| j D ]^}|tjkrdn
t|j}|tjkr4dnt|jd }| j|||d}t|jt| qW xxt	t
tjjfD ]f}|t	krdn
t|j}|t	krdnt|jd }| j|||d}tt|d  tt|| qzW d S )Nr   r   r   )r    r    )rW   r   rX   rY   rZ   r[   rU   r   r    rj   r,   compatlongr   hasattrtype)r   r\   r]   r^   sampler   r   r   test_respect_dtype_singleton  s    z(TestRandint.test_respect_dtype_singletonN)r(   r)   r*   r   r
   r   rU   rX   rm   rp   rk   rn   rl   r<   r&   ro   rW   rV   r_   ra   rf   ri   r|   r~   r   r   r   r   r   rT      s   	!rT   c               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zejd'ejej ej gd(d) Zejd'ejej ej gejd*d+d,gd-d. Zd/d0 Zd1d2 Z d3d4 Z!d5d6 Z"d7d8 Z#d9d: Z$d;d< Z%d=d> Z&d?d@ Z'dAdB Z(dCdD Z)dEdF Z*dGdH Z+dIdJ Z,dKdL Z-dMdN Z.dOdP Z/dQdR Z0dSdT Z1dUdV Z2dWdX Z3dYdZ Z4d[d\ Z5d]d^ Z6d_d` Z7dadb Z8dcdd Z9dedf Z:dgdh Z;didj Z<dkdl Z=dmdn Z>dodp Z?dqdr Z@dsdt ZAdudv ZBdwdx ZCdydz ZDd{d| ZEd}d~ ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdS )TestRandomDistc             C   s
   d| _ d S )NiI)rB   )r   r   r   r   rF   %  s    zTestRandomDist.setupc             C   sJ   t j| j t jdd}t ddgddgddgg}t||d	d
 d S )Nr!   r   g_\*?g?g<p?g,o?gH?gZ?   )decimal)r   r
   rB   Zrandr%   r   )r   r}   desiredr   r   r   	test_rand(  s    
zTestRandomDist.test_randc             C   sJ   t j| j t jdd}t ddgddgddgg}t||d	d
 d S )Nr!   r   g!<Oq?g4u,?g3?gLI/DͿg@? @gHS\@r   )r   )r   r
   rB   Zrandnr%   r   )r   r}   r   r   r   r   
test_randn0  s    
zTestRandomDist.test_randnc             C   sJ   t j| j t jjdddd}t ddgddgd	d
gg}t|| d S )Nic   )r!   r   )rK      r!   i)   ii)r   r
   rB   r   r%   r   )r   r}   r   r   r   r   test_randint8  s    
zTestRandomDist.test_randintc          	   C   sv   t j| j t 2}|t}t jjdddd}tt|dk W d Q R X t 	ddgdd	gd
dgg}t
|| d S )Nir   )r!   r   )rK   r   r   r!   ir   ii)r   r
   rB   r	   recordDeprecationWarningrandom_integersr   lenr%   r   )r   supwr}   r   r   r   r   test_random_integers@  s    

z#TestRandomDist.test_random_integersc          	   C   sd   t  >}|t}tjtdjtdj}tt	|dk W d Q R X tdj}t
|| d S )Nlr   )r	   r   r   r   r
   r   rY   r[   r   r   r   )r   r   r   r}   r   r   r   r   test_random_integers_max_intK  s    
z+TestRandomDist.test_random_integers_max_intc          	   C   s^   t  L t dt tttjjtdj	 tttjjtdj	tdj	 W d Q R X d S )Nerrorr   )
warningscatch_warningssimplefilterr   r   r   r
   r   rY   r[   )r   r   r   r   test_random_integers_deprecatedZ  s    
z.TestRandomDist.test_random_integers_deprecatedc             C   sH   t j| j t jd}t ddgddgddgg}t||dd	 d S )
N)r!   r   g_\*?g?g<p?g,o?gH?gZ?r   )r   )r   r
   rB   r%   r   )r   r}   r   r   r   r   test_randomh  s    
zTestRandomDist.test_randomc             C   s<   t j| j t jdd}t ddddg}t|| d S )Nr"   r   r!   )r   r
   rB   choicer%   r   )r   r}   r   r   r   r   test_choice_uniform_replacep  s    z*TestRandomDist.test_choice_uniform_replacec             C   sH   t j| j t jjddddddgd}t ddddg}t|| d S )Nr"   g?g?)r/   r   r   )r   r
   rB   r   r%   r   )r   r}   r   r   r   r   test_choice_nonuniform_replacev  s    z-TestRandomDist.test_choice_nonuniform_replacec             C   s>   t j| j t jjdddd}t dddg}t|| d S )Nr"   r!   F)replacer   r   )r   r
   rB   r   r%   r   )r   r}   r   r   r   r   test_choice_uniform_noreplace|  s    z,TestRandomDist.test_choice_uniform_noreplacec             C   sH   t j| j t jjdddddddgd}t ddd	g}t|| d S )
Nr"   r!   Fg?g333333?g      ?)r   r/   r   r   )r   r
   rB   r   r%   r   )r   r}   r   r   r   r    test_choice_nonuniform_noreplace  s
    z/TestRandomDist.test_choice_nonuniform_noreplacec             C   sD   t j| j t jddddgd}t ddddg}t|| d S )Nabcdr"   )r   r
   rB   r   r%   r   )r   r}   r   r   r   r   test_choice_noninteger  s    z%TestRandomDist.test_choice_nonintegerc          	   C   sF  t jj}tt|dd tt|dd tt|ddgddggd tt|g d tt|ddddgdddgddggd tt|ddgdd	d	d
gd tt|ddgdddgd tt|ddgdd	d	gd tt|dddgddd tt|dddgddd tt|dddgddd tt|dddgddd tt|dddgdddddgd d S )Nr   r!   g      @r   r   r"   g      ?)r/   g?g?g?gF)r   r   )r   )r   r   r   )r   r/   )r   r
   r   r   r   )r   r   r   r   r   test_choice_exceptions  s     z%TestRandomDist.test_choice_exceptionsc          	   C   s<  ddg}t ttjjddd t ttjjddd t ttjjdd|d t ttjjdd|d t ttjjddgdd t tjjd gddd k tddg}tjdtd	}||d
< t tjj|dd|k t }t ttjjd|dd  t ttjjd|dd  t ttjjd|d|d  t ttjjd|d|d  t ttjjddg|dd  t tjjd g|ddj	d
k tddg}tjdtd	}||d
< t tjj||dd
 |k d}ddddddg}ttjjd|ddj| ttjjd|ddj| ttjjd|d|dj| ttjjd|d|dj| ttjjtd|ddj| ttjjd
d
ddjd ttjjd
dd
djd ttjjddd
djd ttjjd
d
djd ttjjg ddjd ttjjddgddjd tttjjg d d S )Ng?g?r   T)r   F)r   r/   r   )r    r   )r   r!   g?g?r$   )r!   r   r"   )rK   i)r   r   r   r   )r   r   Zisscalarr
   r   r%   emptyobjecttuplendimitemr   r=   r   r   r   r   )r   r/   r   arrr   r   r   r   test_choice_return_shape  sJ      " z'TestRandomDist.test_choice_return_shapec             C   s2   t dddg}d d d g}ttt jj||d d S )N*   r   r   )r/   )r   r%   r   r   r
   r   )r   r   r/   r   r   r   test_choice_nan_probabilities  s    
z,TestRandomDist.test_choice_nan_probabilitiesc             C   s,   t j| j t jd}d}t|| d S )Nr   s
   Ui+Wf)r   r
   rB   bytesr   )r   r}   r   r   r   r   
test_bytes  s    zTestRandomDist.test_bytesc             C   s   xdd dd dd dd dd dd dd d	d d
d dd dd gD ]d}t j| j |ddddddddddg
}t j| |}|ddddddddddg
}t|| qHW d S )Nc             S   s
   t g S )N)r   r%   )r:   r   r   r   <lambda>      z-TestRandomDist.test_shuffle.<locals>.<lambda>c             S   s   | S )Nr   )r:   r   r   r   r     r   c             S   s   t | t jS )N)r   asarrayastyperm   )r:   r   r   r   r     r   c             S   s   t | t jS )N)r   r   r   float32)r:   r   r   r   r     r   c             S   s   t | t jS )N)r   r   r   Z	complex64)r:   r   r   r   r     r   c             S   s   t | tS )N)r   r   r   r   )r:   r   r   r   r     r   c             S   s   dd | D S )Nc             S   s   g | ]}||fqS r   r   ).0ir   r   r   
<listcomp>  s    zATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r   )r:   r   r   r   r     r   c             S   s   t dd | D S )Nc             S   s   g | ]}||gqS r   r   )r   r   r   r   r   r     s    zATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>)r   r   )r:   r   r   r   r     r   c             S   s   t | | gjS )N)r   ZvstackT)r:   r   r   r   r     r   c             S   s*   t dd | D dtfdtfgt jS )Nc             S   s   g | ]}||fqS r   r   )r   r   r   r   r   r     s    zATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r   r   )r   r   r,   rw   Zrecarray)r:   r   r   r   r     s   c             S   s$   t dd | D dtfdt jfgS )Nc             S   s   g | ]}||fqS r   r   )r   r   r   r   r   r     s    zATestRandomDist.test_shuffle.<locals>.<lambda>.<locals>.<listcomp>r   r   )r   r   r   rl   )r:   r   r   r   r     s   r   r   r!   r"   r#   r$      rg   	   r   )r   r
   rB   shuffler   )r   convalistr}   r   r   r   r   test_shuffle  s"    zTestRandomDist.test_shufflec             C   s   t jt tddd d d}t jt dd d d}| }| }xttdD ]h}t j| t	t
|j|j  t
|j|j   t j| t	t
|j|j  t
|j|j   qXW d S )N   )r#   r"   r!   r   r   2   )r   maZmasked_valuesZreshaper   r   copyr
   r   r   sorteddatamask)r   r   r   Za_origZb_origr   r   r   r   test_shuffle_masked  s    "$z"TestRandomDist.test_shuffle_maskedr
   c          	   C   sN   dddddddd}t jtd	d
}|| W d Q R X d|d jksJtd S )Nr   r   r   r!   r"   r#   r$   )r   r   r   r!   r"   r#   r$   z!you are shuffling a 'dict' object)matchr   )pytestwarnsUserWarningr   filenamerc   )r   r
   valuesZrecr   r   r   test_shuffle_untyped_warning  s
    
z+TestRandomDist.test_shuffle_untyped_warninguse_array_likeTFc          	      s   G dd dt j}d t dgt dt dt dg}t j|td}dd |D  |rd||}t fd	d
|D s~t|rt|t j	j
stjtdd || W d Q R X n$|| t fdd
|D std S )Nc               @   s   e Zd ZdS )z>TestRandomDist.test_shuffle_no_object_unpacking.<locals>.MyArrN)r(   r)   r*   r   r   r   r   MyArr  s   r   r!   r   r   )r    c             S   s   h | ]}t |qS r   )id)r   r   r   r   r   	<setcomp>  s    zBTestRandomDist.test_shuffle_no_object_unpacking.<locals>.<setcomp>c             3   s   | ]}t | kV  qd S )N)r   )r   r   )item_idsr   r   	<genexpr>  s    zBTestRandomDist.test_shuffle_no_object_unpacking.<locals>.<genexpr>z#Shuffling a one dimensional array.*)r   c             3   s   | ]}t | kV  qd S )N)r   )r   r   )r   r   r   r   &  s    )r   ndarrayr%   Zfloat64r   rw   r9   rc   
isinstancer
   	Generatorr   r   r   r   )r   r
   r   r   itemsr   r   )r   r    test_shuffle_no_object_unpacking  s    (


z/TestRandomDist.test_shuffle_no_object_unpackingc             C   s   t j| j t dj}t j| tt |dddddg t j| j}|| tt |dddddg t j	| j}|| tt |dddddg d S )Nr#   r   r   r"   r!   r   )
r   r
   rB   r   r   r   r   r   r   default_rng)r   r   rngr   r   r   test_shuffle_memoryview(  s    

z&TestRandomDist.test_shuffle_memoryviewc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Ng?g?)r!   r   )rK   gAKč?ghA?g ҇o>gάXf+q?gS1$?g'8zX ?r   )r   )r   r
   rB   betar%   r   )r   r}   r   r   r   r   	test_beta7  s    zTestRandomDist.test_betac             C   sJ   t j| j t jjdddd}t ddgddgd	d
gg}t|| d S )Nr4   gv/?)r!   r   )rK   %   +   r   0   .   -   )r   r
   rB   r.   r%   r   )r   r}   r   r   r   r   test_binomial@  s    
zTestRandomDist.test_binomialc             C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr   )r!   r   )rK   g+Q]uO@g+Q@gY7`ZqP@ge(fG@gvtR@gEIȋR@   )r   )r   r
   rB   	chisquarer%   r   )r   r}   r   r   r   r   test_chisquareH  s    
zTestRandomDist.test_chisquarec             C   st   t j| j t ddg}t jjj|dd}t ddgddggd	d
gddggddgddggg}t||dd d S )NgI<I@gEZC@)r!   r   )rK   gi{s?gn,	A?g]^?gpDB?gȧ#y?gr?g1U?gѨUC?g^,%?gB?gډOoX;?gM`!O?r   )r   )r   r
   rB   r%   mtrand	dirichletr   )r   alphar}   r   r   r   r   test_dirichletP  s    
zTestRandomDist.test_dirichletc             C   s   t ddg}tt j|t djd tt j|t djd tt j|t djd tt j|ddgjd tt j|djd tt j|t djd ttt jj|t	d d S )NgI<I@gEZC@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_dirichlet_size\  s    z"TestRandomDist.test_dirichlet_sizec             C   s   t ddg}ttt jjj| tttjddgg tttjdgdgg tttjdgdggdgdggg tttjt ddgddgg d S )NgHzG?gؗҜr#   r   )r   r%   r   r   r
   r   r   )r   r   r   r   r   test_dirichlet_bad_alphah  s    "z'TestRandomDist.test_dirichlet_bad_alphac             C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Ng8EGr?)r!   r   )rK   gNU?gbI0?gVU\@g:3@gU?g"qo?r   )r   )r   r
   rB   exponentialr%   r   )r   r}   r   r   r   r   test_exponentials  s    
zTestRandomDist.test_exponentialc             C   s*   t tjjddd tttjjdd d S )Nr   )scaleg       )r   r   r
   r   r   r   )r   r   r   r   test_exponential_0{  s    z!TestRandomDist.test_exponential_0c             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )N   M   )r!   r   )rK   g7?g`j?g6"+?gܳ2>?gc>+Y?g_}S?r   )r   )r   r
   rB   fr%   r   )r   r}   r   r   r   r   test_f  s    
zTestRandomDist.test_fc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Nr#   r!   )r!   r   )rK   gԏGM8@gȌ<@g	":@gv#)@gZQ?@gr[@@   )r   )r   r
   rB   gammar%   r   )r   r}   r   r   r   r   
test_gamma  s    
zTestRandomDist.test_gammac             C   s.   t tjjdddd tttjjddd d S )Nr   )r=   r   g       )r   r   r
   r   r   r   )r   r   r   r   test_gamma_0  s    zTestRandomDist.test_gamma_0c             C   sH   t j| j t jjddd}t ddgddgddgg}t|| d S )	Ng_c97ݚ?)r!   r   )rK   rg   r      r#   r   )r   r
   rB   	geometricr%   r   )r   r}   r   r   r   r   test_geometric  s    
zTestRandomDist.test_geometricc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Ng_c97ݚ?g       @)r!   r   )locr   rK   gؕ?gs0 ?g#0g(xg-KD?gůp`@r   )r   )r   r
   rB   gumbelr%   r   )r   r}   r   r   r   r   test_gumbel  s    
zTestRandomDist.test_gumbelc             C   s*   t tjjddd tttjjdd d S )Nr   )r   g       )r   r   r
   r  r   r   )r   r   r   r   test_gumbel_0  s    zTestRandomDist.test_gumbel_0c             C   s  t j| j t jjddddd}t ddgddgddgg}t|| t jjdddd	d}t ddddg}t|| t jjd
ddd	d}t ddddg}t|| t jjdddd	d}t ddddg}t|| t jjdd
dd	d}t ddddg}t|| d S )Nr   r#   r   )r!   r   )rK   r   r   r!   r"   r   r   )r   r
   rB   hypergeometricr%   r   )r   r}   r   r   r   r   test_hypergeometric  s$    




z"TestRandomDist.test_hypergeometricc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Ng_c97ݚ?g       @)r!   r   )r  r   rK   g bO?g¸?gpJm	@g{K*t	@g:^w-gY~o?r   )r   )r   r
   rB   laplacer%   r   )r   r}   r   r   r   r   test_laplace  s    
zTestRandomDist.test_laplacec             C   s*   t tjjddd tttjjdd d S )Nr   )r   g       )r   r   r
   r  r   r   )r   r   r   r   test_laplace_0  s    zTestRandomDist.test_laplace_0c             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Ng_c97ݚ?g       @)r!   r   )r  r   rK   g#K-z?gJ?g92@gر[@g#+^˿g-@r   )r   )r   r
   rB   logisticr%   r   )r   r}   r   r   r   r   test_logistic  s    
zTestRandomDist.test_logisticc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Ng_c97ݚ?g       @)r!   r   )meansigmarK   gɁ0@go,+4FB@g)ʭ6@g5?gnxNnP@g)U@r   )r   )r   r
   rB   	lognormalr%   r   )r   r}   r   r   r   r   test_lognormal  s    
zTestRandomDist.test_lognormalc             C   s*   t tjjddd tttjjdd d S )Nr   )r  r   g       )r   r   r
   r  r   r   )r   r   r   r   test_lognormal_0  s    zTestRandomDist.test_lognormal_0c             C   sH   t j| j t jjddd}t ddgddgddgg}t|| d S )Ngƀ@?)r!   r   )r/   rK   r   r$   r   r!   )r   r
   rB   	logseriesr%   r   )r   r}   r   r   r   r   test_logseries  s    
zTestRandomDist.test_logseriesc             C   s   t j| j t jjddgd dd}t ddddd	d	gdd	d
d	d	dggddddddgd	dddddggddd	dd	dgdddd	ddggg}t|| d S )Nr   gUUUUUU?r$   )r!   r   )rK   r"   r!   r#   r   rg   r   r   )r   r
   rB   r5   r%   r   )r   r}   r   r   r   r   test_multinomial  s    zTestRandomDist.test_multinomialc          	   C   sR  t j| j d}ddgddgg}d}t j|||}t ddgddggd	d
gddggddgddggg}t||dd t j||}t ddg}t||dd ddg}ddgddgg}ttt jj|| tt jj||dd t	t
t jj||dd t jddgddggt jd}t 0}t j|| |t}t|dksDtW d Q R X d S )N)g_c97ݚ?r   r   r   )r!   r   g4Vj?gy'@gI1?gSB#@ge<@g 4W(@g6R¿?g9r
v"@gс?g{#@g4xg"f"@r   )r   gN}O6?gYMW"@r   ignore)Zcheck_validraiseg?)r    )r   r
   rB   Zmultivariate_normalr%   r   r   RuntimeWarningr   r   r   r   r	   r   r   rc   )r   r  ZcovrK   r}   r   r   r   r   r   r   test_multivariate_normal  s6    

z'TestRandomDist.test_multivariate_normalc             C   sJ   t j| j t jjdddd}t ddgddgd	d
gg}t|| d S )Nr4   g|Pk?)r!   r   )nr/   rK   iP  iI  i|  ic  i  i  )r   r
   rB   rR   r%   r   )r   r}   r   r   r   r   rS     s    
z%TestRandomDist.test_negative_binomialc             C   s   t j| j t jjdddd}t ddgddgdd	gg}t||d
d t jjdddd}t ddgddgddgg}t||d
d t j| j t jjdddd}t ddgddgddgg}t||d
d d S )Nr#   )r!   r   )dfnoncrK   gG7@g! ܴ*@g1}z9?@g+驸0@g26E_r#@gI!1@r   )r   g      ?g?g?gTD?g?T?g+qnl?g~|D?g밬?r   g{01#@gprs'@g~;$@g"dI@g*@g}',@)r   r
   rB   noncentral_chisquarer%   r   )r   r}   r   r   r   r   test_noncentral_chisquare$  s"    


z(TestRandomDist.test_noncentral_chisquarec             C   sP   t j| j t jjddddd}t ddgdd	gd
dgg}t||dd d S )Nr#   r   r   )r!   r   )dfnumdfdenr  rK   g^~?g/+c?g".@g@g7?gE?r   )r   )r   r
   rB   noncentral_fr%   r   )r   r}   r   r   r   r   test_noncentral_f9  s    
z TestRandomDist.test_noncentral_fc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )Ng_c97ݚ?g       @)r!   r   )r  r   rK   g&&n@gOG_@g~w@gtw]տgm&5@g$>@r   )r   )r   r
   rB   normalr%   r   )r   r}   r   r   r   r   test_normalB  s    
zTestRandomDist.test_normalc             C   s*   t tjjddd tttjjdd d S )Nr   )r   g       )r   r   r
   r!  r   r   )r   r   r   r   test_normal_0J  s    zTestRandomDist.test_normal_0c             C   sP   t j| j t jjddd}t ddgddgdd	gg}t jj||d
d d S )Ng_c97ݚ?)r!   r   )r   rK   gWI@gԨy@gy]0Ag1~\Aga@gY
7A   )Znulp)r   r
   rB   paretor%   testingZassert_array_almost_equal_nulp)r   r}   r   r   r   r   test_paretoN  s    zTestRandomDist.test_paretoc             C   sH   t j| j t jjddd}t ddgddgddgg}t|| d S )Ng_c97ݚ?)r!   r   )lamrK   r   r   )r   r
   rB   poissonr%   r   )r   r}   r   r   r   r   test_poisson]  s    
zTestRandomDist.test_poissonc             C   s`   t dj}d}ttt jj| ttt jj|gd  ttt jj| ttt jj|gd  d S )Nr   r   r   )r   rY   r[   r   r   r
   r)  )r   ZlambigZlamnegr   r   r   test_poisson_exceptionse  s    z&TestRandomDist.test_poisson_exceptionsc             C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Ng_c97ݚ?)r!   r   )r   rK   g;'?gܴw*?g5?gFG?g D]?g$`?r   )r   )r   r
   rB   powerr%   r   )r   r}   r   r   r   r   
test_powerm  s    
zTestRandomDist.test_powerc             C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr   )r!   r   )r   rK   g"u+@gN$MB*@g7v8B4@g55@ge&@g~ӣZ1@r   )r   )r   r
   rB   rayleighr%   r   )r   r}   r   r   r   r   test_rayleighu  s    
zTestRandomDist.test_rayleighc             C   s*   t tjjddd tttjjdd d S )Nr   )r   g       )r   r   r
   r.  r   r   )r   r   r   r   test_rayleigh_0}  s    zTestRandomDist.test_rayleigh_0c             C   sJ   t j| j t jjdd}t ddgddgddgg}t||d	d
 d S )N)r!   r   )rK   gMoDL?g6([9grF=?gM'	- gVgVA:Qy?r   )r   )r   r
   rB   Zstandard_cauchyr%   r   )r   r}   r   r   r   r   test_standard_cauchy  s    
z#TestRandomDist.test_standard_cauchyc             C   sJ   t j| j t jjdd}t ddgddgddgg}t||d	d
 d S )N)r!   r   )rK   g܁?gc!z?g&N"@gNI@gF>?g~ME?r   )r   )r   r
   rB   Zstandard_exponentialr%   r   )r   r}   r   r   r   r   test_standard_exponential  s    
z(TestRandomDist.test_standard_exponentialc             C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr!   )r!   r   )r=   rK   g)@gľ@gd],q@gPk{@g9B#1@gv @r   )r   )r   r
   rB   standard_gammar%   r   )r   r}   r   r   r   r   test_standard_gamma  s    
z"TestRandomDist.test_standard_gammac             C   s*   t tjjddd tttjjdd d S )Nr   )r=   g       )r   r   r
   r3  r   r   )r   r   r   r   test_standard_gamma_0  s    z$TestRandomDist.test_standard_gamma_0c             C   sJ   t j| j t jjdd}t ddgddgddgg}t||d	d
 d S )N)r!   r   )rK   g!<Oq?g4u,?g3?gLI/DͿg@? @gHS\@r   )r   )r   r
   rB   rL   r%   r   )r   r}   r   r   r   r   test_standard_normal  s    
z#TestRandomDist.test_standard_normalc             C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )Nr   )r!   r   )r  rK   g\VH?ghU%gH$M?gLgVqdzǿg㖀?r   )r   )r   r
   rB   
standard_tr%   r   )r   r}   r   r   r   r   test_standard_t  s    
zTestRandomDist.test_standard_tc             C   sP   t j| j t jjddddd}t ddgdd	gd
dgg}t||dd d S )Ng{Gz@g(\u$@gףp=
W4@)r!   r   )leftmoderightrK   g:}\)@ghرTj(@gǨL30@g6ڜA0@g6sh&@g<,@r   )r   )r   r
   rB   
triangularr%   r   )r   r}   r   r   r   r   test_triangular  s    
zTestRandomDist.test_triangularc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )NgGz?gGz%@)r!   r   )lowhighrK   g>#H@gu@g#@g}d]#@gN@gw)* @r   )r   )r   r
   rB   uniformr%   r   )r   r}   r   r   r   r   test_uniform  s    
zTestRandomDist.test_uniformc             C   s   t dj}t dj}t jj}tt|t j d tt|dt j tt||| tt|t j gdg tt|dgt jg t jjt 	|d|d d d S )Nr>   r   r   g ؅W4vC)r>  r?  )
r   ZfinforZ   r[   r
   r@  r   OverflowErrorinfZ	nextafter)r   ZfminZfmaxfuncr   r   r   test_uniform_range_bounds  s    z(TestRandomDist.test_uniform_range_boundsc             C   sn   G dd dt j}t d|}ttt jj|| G dd dt j}t d|}ttt jj|dd d S )Nc               @   s   e Zd Zdd ZdS )zGTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloatc             S   s   t d S )N)r   )r   r   r   r   	__float__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingFloat.__float__N)r(   r)   r*   rF  r   r   r   r   ThrowingFloat  s   rG  g      ?c               @   s   e Zd Zdd ZeZdS )zITestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingIntegerc             S   s   t d S )N)r   )r   r   r   r   __int__  s    zQTestRandomDist.test_scalar_exception_propagation.<locals>.ThrowingInteger.__int__N)r(   r)   r*   rH  	__index__r   r   r   r   ThrowingInteger  s   rJ  r   )	r   r   r%   rw   r   r   r
   r@  r  )r   rG  Zthrowing_floatrJ  Zthrowing_intr   r   r   !test_scalar_exception_propagation  s    z0TestRandomDist.test_scalar_exception_propagationc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )NgGz?gp=
ף?)r!   r   )mukapparK   gLZI@g'N"@gkr?gk=m@gډ?g^=\?r   )r   )r   r
   rB   vonmisesr%   r   )r   r}   r   r   r   r   test_vonmises  s    
zTestRandomDist.test_vonmisesc             C   s:   t j| j t jjdddd}t jt |  d S )Ng        gg5_PG>i@B )rL  rM  rK   )r   r
   rB   rN  r&  r   isfiniter9   )r   rr   r   r   test_vonmises_small  s    z"TestRandomDist.test_vonmises_smallc             C   sN   t j| j t jjdddd}t ddgddgd	d
gg}t||dd d S )NgGz?gp=
ף?)r!   r   )r  r   rK   gZ@g-g@g8
m?gVP"?g`V?gx^&3?r   )r   )r   r
   rB   waldr%   r   )r   r}   r   r   r   r   	test_wald  s    
zTestRandomDist.test_waldc             C   sL   t j| j t jjddd}t ddgddgdd	gg}t||d
d d S )NgGz?)r!   r   )r   rK   g@6?g]A?g(1ڥR?gU?g2_u?g^}-Q?r   )r   )r   r
   rB   weibullr%   r   )r   r}   r   r   r   r   test_weibull  s    
zTestRandomDist.test_weibullc             C   s@   t j| j tt jjdddt d ttt jjdd d S )Nr   r   )r   rK   g       )r   )r   r
   rB   r   rU  r-   r   r   )r   r   r   r   test_weibull_0  s    zTestRandomDist.test_weibull_0c             C   sH   t j| j t jjddd}t ddgddgddgg}t|| d S )	NgGz?)r!   r   )r   rK   B      r   r!   r   )r   r
   rB   zipfr%   r   )r   r}   r   r   r   r   	test_zipf	  s    
zTestRandomDist.test_zipfN)Rr(   r)   r*   rF   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markZparametrizer   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  r  r  rS   r  r   r"  r#  r'  r*  r+  r-  r/  r0  r1  r2  r4  r5  r6  r8  r=  rA  rE  rK  rO  rR  rT  rV  rW  r[  r   r   r   r   r   !  s   ."		(		r   c               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAS )BTestBroadcastc             C   s
   d| _ d S )Ni[)rB   )r   r   r   r   rF     s    zTestBroadcast.setupc             C   s   t j| j d S )N)r   r
   rB   )r   r   r   r   setSeed  s    zTestBroadcast.setSeedc             C   sp   dg}dg}t jj}t dddg}|   ||d |}t||dd |   |||d }t||dd d S )	Nr   r   gl?g_x?g=*BN?r!   r   )r   )r   r
   r@  r%   r^  r   )r   r>  r?  r@  r   r}   r   r   r   rA    s    zTestBroadcast.test_uniformc             C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r   r   g-r@gYl@g-`w?r!   r   )r   )r   r
   r!  r%   r^  r   r   r   )r   r  r   	bad_scaler!  r   r}   r   r   r   r"  .  s    zTestBroadcast.test_normalc             C   s   dg}dg}dg}dg}t jj}t dddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  d S )Nr   r   r   r   gnQVf?gVKB?gv`k?r!   r   )r   )r   r
   r   r%   r^  r   r   r   )r   r   r   bad_aZbad_br   r   r}   r   r   r   r   A  s$    zTestBroadcast.test_betac             C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr   r   g.UgZ?gi Prq?gEK?r!   r   )r   )r   r
   r   r%   r^  r   r   r   )r   r   r_  r   r   r}   r   r   r   r   W  s    zTestBroadcast.test_exponentialc             C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr   r   g.UgZ?gi Prq?gEK?r!   r   )r   )r   r
   r3  r%   r^  r   r   r   )r   r=   	bad_shapeZ	std_gammar   r}   r   r   r   r4  d  s    z!TestBroadcast.test_standard_gammac             C   s   dg}dg}dg}dg}t jj}t dddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  d S )Nr   r   r   r   g.UgZ?gi Prq?gEK?r!   r   )r   )r   r
   r   r%   r^  r   r   r   )r   r=   r   ra  r_  r   r   r}   r   r   r   r   q  s$    zTestBroadcast.test_gammac             C   s   dg}dg}dg}dg}t jj}t dddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  d S )Nr   r   r   r   gbyʜ?go?gT7@r!   r   )r   )r   r
   r   r%   r^  r   r   r   )r   r  r  	bad_dfnum	bad_dfdenr   r   r}   r   r   r   r     s$    zTestBroadcast.test_fc       
      C   sf  dg}dg}dg}dg}dg}dg}t jj}t ddd	g}|   ||d ||}	t|	|d
d tt||d || tt||d || tt||d || |   |||d |}	t|	|d
d tt|||d | tt|||d | tt|||d | |   ||||d }	t|	|d
d tt||||d  tt||||d  tt||||d  d S )Nr   r!   r"   r   r   r   gr^G"@g/*@gц!@r   )r   )r   r
   r  r%   r^  r   r   r   )
r   r  r  r  rb  rc  bad_noncZnonc_fr   r}   r   r   r   r     s8    zTestBroadcast.test_noncentral_fc             C   s<   |    tddg}tjjddddd}t||dd d S )Ngaz@gn4M;%?g?r   )rK   r   )r   )r^  r   r%   r
   r  r   )r   r   r}   r   r   r   test_noncentral_f_small_df  s    z(TestBroadcast.test_noncentral_f_small_dfc             C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr   r   g~}N??g$F?g'rS?r!   r   )r   )r   r
   r   r%   r^  r   r   r   )r   r  bad_dfr   r   r}   r   r   r   r     s    zTestBroadcast.test_chisquarec             C   s   dg}dg}dg}dg}t jj}t dddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  d S )Nr   r   r   r   g w "@g2WR@gRY@r!   r   )r   )r   r
   r  r%   r^  r   r   r   )r   r  r  rf  rd  Znonc_chir   r}   r   r   r   r    s$    z'TestBroadcast.test_noncentral_chisquarec             C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr   r   gT@g~Fl@gƚtp?r!   r   )r   )r   r
   r7  r%   r^  r   r   r   )r   r  rf  tr   r}   r   r   r   r8    s    zTestBroadcast.test_standard_tc             C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r   r   gW!@gOBg}?r!   r   )r   )r   r
   rN  r%   r^  r   r   r   )r   rL  rM  Z	bad_kapparN  r   r}   r   r   r   rO    s    zTestBroadcast.test_vonmisesc             C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr   r   g&8??geFX?gՋː?r!   r   )r   )r   r
   r%  r%   r^  r   r   r   )r   r   r`  r%  r   r}   r   r   r   r'    s    zTestBroadcast.test_paretoc             C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr   r   g.UgZ?gi Prq?gEK?r!   r   )r   )r   r
   rU  r%   r^  r   r   r   )r   r   r`  rU  r   r}   r   r   r   rV    s    zTestBroadcast.test_weibullc             C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr   r   gl?g_x?g=*BN?r!   r   )r   )r   r
   r,  r%   r^  r   r   r   )r   r   r`  r,  r   r}   r   r   r   r-  !  s    zTestBroadcast.test_powerc             C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r   r   g:BKc?g3k?g~q?r!   r   )r   )r   r
   r  r%   r^  r   r   r   )r   r  r   r_  r  r   r}   r   r   r   r  .  s    zTestBroadcast.test_laplacec             C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r   r   g'Zy?gdSO=?g3L1?r!   r   )r   )r   r
   r  r%   r^  r   r   r   )r   r  r   r_  r  r   r}   r   r   r   r  A  s    zTestBroadcast.test_gumbelc             C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r   r   gy?gJR?g
~&?r!   r   )r   )r   r
   r
  r%   r^  r   r   r   )r   r  r   r_  r
  r   r}   r   r   r   r  T  s    zTestBroadcast.test_logisticc             C   s   dg}dg}dg}t jj}t dddg}|   ||d |}t||dd	 tt||d | |   |||d }t||dd	 tt|||d  d S )
Nr   r   r   gH"@gܮ @gvv	:@r!   r   )r   )r   r
   r  r%   r^  r   r   r   )r   r  r  Z	bad_sigmar  r   r}   r   r   r   r  g  s    zTestBroadcast.test_lognormalc             C   sZ   dg}dg}t jj}t dddg}|   ||d }t||dd tt||d  d S )	Nr   r   gݱlo?g/ӂ?gz~R?r!   r   )r   )r   r
   r.  r%   r^  r   r   r   )r   r   r_  r.  r   r}   r   r   r   r/  z  s    zTestBroadcast.test_rayleighc             C   s   dg}dg}dg}dg}t jj}t dddg}|   ||d |}t||d	d
 tt||d | tt||d | |   |||d }t||d	d
 tt|||d  tt|||d  tt|dd tt|dd d S )Ng      ?r   r   r   g@m e?g`I߿?g|2?r!   r   )r   g        )r   r
   rS  r%   r^  r   r   r   )r   r  r   Zbad_meanr_  rS  r   r}   r   r   r   rT    s(    zTestBroadcast.test_waldc             C   sl  dg}dg}dg}dg}dg}|d \}}t jj}t dddg}	|   ||d ||}
t|
|	dd	 tt||d || tt||d || tt||d || |   |||d |}
t|
|	dd	 tt|||d | tt|||d | tt|||d | |   ||||d }
t|
|	dd	 tt||||d  tt||||d  tt||||d  d S )
Nr   r!   r   r"   g,P;bD @g%G @g,~S @r   )r   )r   r
   r<  r%   r^  r   r   r   )r   r9  r;  r:  Zbad_left_oneZbad_mode_oneZbad_left_twoZbad_mode_twor<  r   r}   r   r   r   r=    s>    
zTestBroadcast.test_triangularc       	      C   s   dg}dg}dg}dg}dg}t jj}t dddg}|   ||d |}t|| tt||d | tt||d | tt||d | |   |||d }t|| tt|||d  tt|||d  tt|||d  d S )Nr   g      ?r   g      ?r!   )r   r
   r.   r%   r^  r   r   r   )	r   r  r/   bad_n	bad_p_one	bad_p_twoZbinomr   r}   r   r   r   r     s&    

zTestBroadcast.test_binomialc       	      C   s   dg}dg}dg}dg}dg}t jj}t dddg}|   ||d |}t|| tt||d | tt||d | tt||d | |   |||d }t|| tt|||d  tt|||d  tt|||d  d S )Nr   g      ?r   g      ?r   r!   )r   r
   rR   r%   r^  r   r   r   )	r   r  r/   rh  ri  rj  Z	neg_binomr   r}   r   r   r   rS     s&    

z$TestBroadcast.test_negative_binomialc             C   s|   t j j}dg}dg}|d g}t jj}t dddg}|   ||d }t|| tt	||d  tt	||d  d S )Nr   r   r   r   r!   )
r   r
   r   Z_poisson_lam_maxr)  r%   r^  r   r   r   )r   Zmax_lamr(  Zbad_lam_oneZbad_lam_twor)  r   r}   r   r   r   r*    s    

zTestBroadcast.test_poissonc          	   C   s   dg}dg}t jj}t dddg}|   ||d }t|| tt||d  t jdd( tt|t j	 tt|ddt j	g W d Q R X d S )Nr   r   r   r!   r  )invalid)
r   r
   rZ  r%   r^  r   r   r   Zerrstater1   )r   r   r`  rZ  r   r}   r   r   r   r[     s    
zTestBroadcast.test_zipfc             C   sl   dg}dg}dg}t jj}t dddg}|   ||d }t|| tt||d  tt||d  d S )Ng      ?r   g      ?r   r!   )r   r
   r   r%   r^  r   r   r   )r   r/   ri  rj  Zgeomr   r}   r   r   r   r     s    
zTestBroadcast.test_geometricc             C   s  dg}dg}dg}dg}dg}dg}dg}t jj}t dddg}	|   ||d ||}
t|
|	 tt||d || tt||d || tt||d || tt||d || |   |||d |}
t|
|	 tt|||d | tt|||d | tt|||d | tt|||d | |   ||||d }
t|
|	 tt||||d  tt||||d  tt||||d  tt||||d  d S )Nr   r   r   r   r   r"   r!   )r   r
   r  r%   r^  r   r   r   )r   ZngoodZnbadZnsampleZ	bad_ngoodZbad_nbadZbad_nsample_oneZbad_nsample_twoZ	hypergeomr   r}   r   r   r   r    s<    


z!TestBroadcast.test_hypergeometricc             C   sl   dg}dg}dg}t jj}t dddg}|   ||d }t|| tt||d  tt||d  d S )Ng      ?r   r   r   r!   )r   r
   r  r%   r^  r   r   r   )r   r/   ri  rj  r  r   r}   r   r   r   r  >  s    
zTestBroadcast.test_logseriesN)#r(   r)   r*   rF   r^  rA  r"  r   r   r4  r   r   r   re  r   r  r8  rO  r'  rV  r-  r  r  r  r  r/  rT  r=  r   rS   r*  r[  r   r  r  r   r   r   r   r]    s@   !$#r]  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestThreadc             C   s   t d| _d S )Nr"   )r   seeds)r   r   r   r   rF   N  s    zTestThread.setupc                s   ddl m  tt| jf| }tt| jf| } fddt| j|D }dd |D  dd |D  x*t| j|D ]\}}tj|| q~W t	 j
jdkrtjdkrt|| n
t|| d S )	Nr   )Threadc                s(   g | ] \}} t j||fd qS ))targetargs)r   r
   r   )r   r   o)rn  functionr   r   r   X  s   z-TestThread.check_function.<locals>.<listcomp>c             S   s   g | ]}|  qS r   )start)r   r:   r   r   r   r   Z  s    c             S   s   g | ]}|  qS r   )join)r   r:   r   r   r   r   [  s    r"   win32)	threadingrn  r   r   r   rm  zipr
   r   Zintpr    itemsizers   platformr   r   )r   rr  szZout1Zout2rg  r   rq  r   )rn  rr  r   check_functionQ  s    zTestThread.check_functionc             C   s   dd }| j |dd d S )Nc             S   s   | j dd|d< d S )Ni'  )rK   .)r!  )rE   outr   r   r   
gen_randomh  s    z*TestThread.test_normal.<locals>.gen_random)i'  )rz  )r{  )r   r}  r   r   r   r"  g  s    zTestThread.test_normalc             C   s   dd }| j |dd d S )Nc             S   s   | j tdd|d< d S )N)r4   i  )r   .)r   r   Zones)rE   r|  r   r   r   r}  m  s    z'TestThread.test_exp.<locals>.gen_random)r4   i  )rz  )r{  )r   r}  r   r   r   test_expl  s    zTestThread.test_expc             C   s   dd }| j |dd d S )Nc             S   s   | j ddgd dd|d< d S )Nr   gUUUUUU?r$   i'  )rK   .)r5   )rE   r|  r   r   r   r}  r  s    z/TestThread.test_multinomial.<locals>.gen_random)i'  r$   )rz  )r{  )r   r}  r   r   r   r  q  s    zTestThread.test_multinomialN)r(   r)   r*   rF   r{  r"  r~  r  r   r   r   r   rl  L  s
   rl  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestSingleEltArrayInputc             C   s4   t dg| _t dg| _t dg| _d| _d S )Nr   r!   r"   )r   )r   r%   argOneargTwoargThreetgtShape)r   r   r   r   rF   y  s    zTestSingleEltArrayInput.setupc             C   s   t jjt jjt jjt jjt jjt jjt jjt jj	t jj
t jjt jjt jjf}t jjt jjf}x>|D ]6}||kr|t dg}n
|| j}t|j| j qbW d S )Ng      ?)r   r
   r   r3  r   r7  r%  rU  r,  r.  r)  rZ  r   r  r%   r  r   r=   r  )r   funcs	probfuncsrD  r|  r   r   r   test_one_arg_funcs  s    

z*TestSingleEltArrayInput.test_one_arg_funcsc             C   s   t jjt jjt jjt jjt jjt jjt jjt jj	t jj
t jjt jjt jjt jjt jjf}t jjt jjf}x~|D ]v}||krt dg}n| j}|| j|}t|j| j || jd |}t|j| j || j|d }t|j| j qnW d S )Ng      ?r   )r   r
   r@  r!  r   r   r   r  rN  r  r  r
  r  rS  r.   rR   r%   r  r  r   r=   r  )r   r  r  rD  r  r|  r   r   r   test_two_arg_funcs  s$    
z*TestSingleEltArrayInput.test_two_arg_funcsc             C   s   t jjt jjt jjg}xt|D ]l}|| j| j| j}t|j	| j
 || jd | j| j}t|j	| j
 || j| jd | j}t|j	| j
 qW d S )Nr   )r   r
   r  r<  r  r  r  r  r   r=   r  )r   r  rD  r|  r   r   r   test_three_arg_funcs  s    

z,TestSingleEltArrayInput.test_three_arg_funcsN)r(   r)   r*   rF   r  r  r  r   r   r   r   r  x  s   -r  )r   r   numpyr   Znumpy.testingr   r   r   r   r   r   r   r	   r
   rs   r   r+   r3   rA   rT   r   r]  rl  r  r   r   r   r   <module>   s0   ('"0      v    >,