U
    #c                     @   sL   d dl mZmZ d dlZd dlZd dlmZmZ ee Z	G dd dZ
dS )    )assert_assert_array_equalN)	GeneratorMT19937c                   @   sl   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S )TestRegressionc                 C   sL   t dddD ]8}t|dd}tt |t j koBt |t jk qd S )Ng      g      @      2   )npZlinspacemt19937Zvonmisesr   allpi)selfmur r   Y/tmp/pip-unpacked-wheel-b2rbor69/numpy/random/tests/test_generator_mt19937_regressions.pytest_vonmises_range   s    z"TestRegression.test_vonmises_rangec              	   C   sZ   t ttjddddddk  t ttjddddddk d}t tj| dk d S )	N         
   size   r   ) r   r   )r   r
   r   r   Zhypergeometric)r   argsr   r   r   test_hypergeometric_range   s      z(TestRegression.test_hypergeometric_rangec                 C   s~   d}t td}|jd|d}t|dk| }d|dd}t|d	k| t|d
k| }d|dd}t|dk | d S )N  r   g?r   r   zFrequency was fz, should be > 0.45g?   z, should be < 0.23gq=
ףp?)r   r   Z	logseriesr
   sumr   )r   Nr   Zrvsnfreqmsgr   r   r   test_logseries_convergence   s    z)TestRegression.test_logseries_convergencec                 C   s   dddd gdddd gdddd gdddd gfD ]b}t td}tj|td}|| tj|d |d	 |d |d gtd}ttj|td| q,d S )
Nr   r    r   )r   r   )r    r    )r   r   i90  Zdtyper   )r   r   r
   arrayobjectshuffler   )r   tr   Zshuffledexpectedr   r   r   test_shuffle_mixed_dimension+   s    




&z+TestRegression.test_shuffle_mixed_dimensionc                 C   sh   t ddddddddddg
}tdD ]<}tt|}ttd}t|jddt dd	 d
| q&d S )Nr      r   r   r   r   i  r   g      $@)r   p)r
   r'   ranger   r   r   choiceZones)r   resir   mr   r   r   test_call_within_randomstate7   s
    z+TestRegression.test_call_within_randomstatec                 C   sR   t jdgdggdd t jdgdggtdd t jdgdggtdd d S )Nr   r   r   )r   Zmultivariate_normalr
   int_Zint64r   r   r   r   #test_multivariate_normal_size_types@   s    z2TestRegression.test_multivariate_normal_size_typesc                 C   s8   t td}|jdddd}ttt| d d S )NiIg-C6?d   r   zNans in mt19937.beta)r   r   betar   r
   anyisnan)r   r   xr   r   r   test_beta_small_parametersH   s    z)TestRegression.test_beta_small_parametersc              
   C   s   t td}dddg}dddg}tjtjtjfD ]\}tj||dt| }|j||d}t	||k t
t |j||d d W 5 Q R X q0d S )	N  r   r    r   r   r&   )r.   g?)r   r   r
   Zfloat16float32Zfloat64r'   r!   r0   r   pytestZraises
ValueError)r   r   acountsdtZprobscr   r   r   "test_choice_sum_of_probs_toleranceO   s    

z1TestRegression.test_choice_sum_of_probs_tolerancec                 C   sF   t td}tddg}tdD ]}|| q"dd l}|  d S )Nr>   rB   A  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar8   r   )r   r   r
   r'   r/   r)   gccollectr   r   rB   _rG   r   r   r   1test_shuffle_of_array_of_different_length_strings]   s    z@TestRegression.test_shuffle_of_array_of_different_length_stringsc                 C   sV   t td}tjtdtdgtd}tdD ]}|| q2dd l}|	  d S )Nr>   r   r   r&   r   r   )
r   r   r
   r'   aranger(   r/   r)   rG   rH   rI   r   r   r    test_shuffle_of_array_of_objectsl   s    z/TestRegression.test_shuffle_of_array_of_objectsc              	   C   s   G dd dt j}ttd}t d|}||}t|t dddg t|t d| G dd d}ttd}| }||}t|t d	ddddg t|	 t d
 d S )Nc                   @   s   e Zd ZdS )z3TestRegression.test_permutation_subclass.<locals>.NN)__name__
__module____qualname__r   r   r   r   r"   {   s   r"   r   r   r    r   c                   @   s   e Zd ZedZdd ZdS )z3TestRegression.test_permutation_subclass.<locals>.Mr   c                 S   s   | j S )N)rB   r6   r   r   r   	__array__   s    z=TestRegression.test_permutation_subclass.<locals>.M.__array__N)rN   rO   rP   r
   rL   rB   rQ   r   r   r   r   M   s   
rR   r   r   )
r
   Zndarrayr   r   rL   viewZpermutationr   r'   rQ   )r   r"   r   origpermrR   r3   r   r   r   test_permutation_subclassz   s    

z(TestRegression.test_permutation_subclassc                 C   sT   t ddksttt dgd t jdgdd}tjdgtjd}t|| d S )Ng        floatr&   )r   Zstandard_gammaAssertionErrorr   r
   r'   r?   )r   actualr+   r   r   r   test_gamma_0   s
    zTestRegression.test_gamma_0N)rN   rO   rP   r   r   r%   r,   r4   r7   r=   rF   rK   rM   rV   rZ   r   r   r   r   r   	   s   		r   )Znumpy.testingr   r   Znumpyr
   r@   Znumpy.randomr   r   r   r   r   r   r   r   <module>   s
   
