U
    Š¾úgf  ã                   @   s^   d Z ddlZddlZddlmZ G dd„ dejƒZi fdd„ZedkrZd	d
„ Z	ej
dd dS )z+Self-test suite for Cryptodome.Random.new()é    N)Úbc                   @   s   e Zd Zdd„ ZdS )Ú
SimpleTestc                 C   st  ddl m} | ¡ }| d¡}| d¡}|  ||¡ | d¡}|  ||¡ |  ||¡ ddlm} | d¡}| d¡}|  ||¡ ||kr”|}|}n|}|}t	ddƒD ]–}	| 
|||	¡}| 
|||	¡}|  ||¡ |  ||  koè|k n  d¡ |  ||  ko
|k n  d¡ |  || |	 d¡ |  || |	 d¡ q¦t	dƒD ]}
|  | 
dd	¡d¡ qF|  t|j
||¡ |  t|j
|||	¡ |  t|j
|||	|	¡ |  t|j
||d
¡ |  t|j
d
||	¡ |  t|j
dd|	¡ |  t|j
||d¡ | ||¡}| ||¡}|  ||¡ |  ||  ko*|kn  d¡ |  ||  koL|kn  d¡ t	dƒD ]}
|  | dd¡d¡ q^|  t|j||¡ |  t|j|||	¡ |  t|jd
|¡ |  t|jdd¡ t	dƒ}| |¡}| |¡}|  ||¡ |  ||kd¡ |  ||kd¡ t	dƒD ]}
|  | d¡dkd¡ q|  | dd	dg¡dkd¡ tjd dkr„|  | ttdƒƒ¡ttdƒƒkd¡ |  d| dg¡¡ |  t|jg ¡ |  t|jd¡ t	dƒ}t|ƒ}t|ƒ}| |¡ | |¡ |  ||¡ |  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ t	t|ƒƒD ]V}
|  ||
 |kd¡ |  ||
 |kd¡ |  ||
 |kd¡ |  ||
 |kd¡ q$dg}| |¡ |  |dg¡ tjd dkrèttdƒƒ}| |¡ |  td
ƒ|kd¡ |  t|jtdƒ¡ |  t|jd¡ |  t|jd¡ |  t|jd¡ | |d¡}| |d¡}|  ||¡ t	dƒD ].}
|  ||
 |kd¡ |  ||
 |kd¡ qD| dgd¡}|  |dg¡ | dd¡}|  |d dkd¡ | dd¡}|  |d dkd¡ | t	dƒd¡}|  |d t	dƒkd¡ tjd dkr`| tdƒd¡}|  |d tdƒkd¡ | ttdƒƒd¡}|  |d ttdƒƒkd¡ |  t|jd¡ dS )zCryptodome.Random.new()r   )ÚRandomé   )Úrandomé€   é   é
   Té   Ú1Ú2i'  )r   r
   é   r   Z123iô  Z12Z11)r   r
   é   N)Z
Cryptodomer   ÚnewÚreadZassertNotEqualZget_random_bytesZCryptodome.Randomr   ÚgetrandbitsÚrangeÚ	randrangeÚassertEqualÚassertRaisesÚ
ValueErrorÚ	TypeErrorÚrandintÚchoiceÚsysÚversion_infoÚ	bytearrayr   Ú
IndexErrorÚlistÚshuffleÚlenÚsample)Úselfr   ZrandobjÚxÚyÚzr   ÚstartÚstopÚstepÚiÚseq© r+   úJ/tmp/pip-unpacked-wheel-_q8s9isk/Cryptodome/SelfTest/Random/test_random.pyÚrunTest    sÎ    




 """

&



zSimpleTest.runTestN)Ú__name__Ú
__module__Ú__qualname__r-   r+   r+   r+   r,   r      s   r   c                 C   s   t ƒ gS ©N)r   )Úconfigr+   r+   r,   Ú	get_tests    s    r3   Ú__main__c                   C   s   t  tƒ ¡S r1   )ÚunittestZ	TestSuiter3   r+   r+   r+   r,   Ú<lambda>¤   ó    r6   Úsuite)ZdefaultTest)Ú__doc__r   r5   ZCryptodome.Util.py3compatr   ZTestCaser   r3   r.   r8   Úmainr+   r+   r+   r,   Ú<module>   s    