a
    äze  ã                   @   sb   d dl Z d dlZd dlZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkr^e ¡  dS )	é    Nc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚCompare_Digest_Testsc              	   C   sN   dD ]D}|d }|d }|   t ||¡¡ |   t | d¡| d¡¡¡ qd S )N)ÚaZbcdZxyz123éd   úutf-8)Ú
assertTrueÚsecretsÚcompare_digestÚencode©ÚselfÚsr   Úb© r   ú'/usr/lib/python3.9/test/test_secrets.pyÚ
test_equal   s
    zCompare_Digest_Tests.test_equalc              	   C   sz   |   t dd¡¡ |   t dd¡¡ dD ]L}|d d }|d d }|   t ||¡¡ |   t | d	¡| d	¡¡¡ q(d S )
NÚabcZabcds   abcs   abcd)ÚxZmnZa1b2c3r   ÚqÚkr   )ZassertFalser   r   r	   r
   r   r   r   Útest_unequal   s    z!Compare_Digest_Tests.test_unequalc                 C   s6   d}|  d¡}|  ttj||¡ |  ttj||¡ d S )NZabcder   )r	   ÚassertRaisesÚ	TypeErrorr   r   )r   r   r   r   r   r   Útest_bad_types$   s    
z#Compare_Digest_Tests.test_bad_typesc                 C   s,   |   t dd¡t¡ |   t dd¡t¡ d S )Nr   Zxyz)ÚassertIsInstancer   r   Úbool)r   r   r   r   Ú	test_bool-   s    zCompare_Digest_Tests.test_boolN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r      s   
	r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚRandom_Testsc                 C   sV   d}dD ]H}t dƒD ]:}t |¡}|  d|  ko<d| k n  |||f ¡ qqd S )Nzrandbits(%d) returned %d)é   é   é   é   r   é   )Úranger   Zrandbitsr   )r   ÚerrmsgZnumbitsÚiÚnr   r   r   Útest_randbits6   s
    
zRandom_Tests.test_randbitsc                 C   s.   g d¢}t dƒD ]}|  t |¡|v ¡ qd S )N)é   r$   é   é   é   é    é@   é
   )r%   r   r   Úchoice)r   Úitemsr'   r   r   r   Útest_choice>   s    zRandom_Tests.test_choicec                 C   sJ   t ddƒD ]}|  t |¡t |ƒ¡ q
|  ttjd¡ |  ttjd¡ d S )Nr$   r0   r   éÿÿÿÿ)r%   ZassertInr   Ú	randbelowr   Ú
ValueError)r   r'   r   r   r   Útest_randbelowD   s    zRandom_Tests.test_randbelowN)r   r   r   r)   r3   r7   r   r   r   r   r   3   s   r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚToken_Testsc              
   C   sÜ   t jt jt jfD ]}| j|dp |j}z
|ƒ  W n  tyR   |  d| ¡ Y n0 z|d ƒ W n  ty€   |  d| ¡ Y n0 W d   ƒ q1 s–0    Y  qt j}|  	t
t  d ¡ƒ|¡ |  	t
t  d ¡ƒd| ¡ d S )N)Úfuncz$%s cannot be called with no argumentz%s cannot be called with Noner$   )r   Útoken_bytesÚ	token_hexÚtoken_urlsafeÚsubTestr   r   ZfailZDEFAULT_ENTROPYÚassertEqualÚlen)r   r9   ÚnameÚsizer   r   r   Útest_token_defaultsO   s     ÿ
4zToken_Tests.test_token_defaultsc              	   C   sb   dD ]X}| j |d8 |  t |¡t¡ |  tt |¡ƒ|¡ W d   ƒ q1 sR0    Y  qd S )N)r*   r,   é   r   ©r(   )r=   r   r   r:   Úbytesr>   r?   )r   r(   r   r   r   Útest_token_bytesa   s    zToken_Tests.test_token_bytesc              	   C   s|   dD ]r}| j |dR t |¡}|  |t¡ |  t|ƒd| ¡ |  tdd„ |D ƒƒ¡ W d   ƒ q1 sl0    Y  qd S )N)r*   r!   é   éZ   rD   r$   c                 s   s   | ]}|t jv V  qd S ©N)ÚstringÚ	hexdigits©Ú.0Úcr   r   r   Ú	<genexpr>o   ó    z-Token_Tests.test_token_hex.<locals>.<genexpr>)	r=   r   r;   r   Ústrr>   r?   r   Úall©r   r(   r   r   r   r   Útest_token_hexh   s    
zToken_Tests.test_token_hexc              	      s|   t jt j d ‰ dD ]b}| j|dB t |¡}|  |t¡ |  t	‡ fdd„|D ƒƒ¡ W d   ƒ q1 sl0    Y  qd S )Nz-_)r*   é   é   éL   rD   c                 3   s   | ]}|ˆ v V  qd S rI   r   rL   ©Zlegalr   r   rO   x   rP   z1Token_Tests.test_token_urlsafe.<locals>.<genexpr>)
rJ   Úascii_lettersÚdigitsr=   r   r<   r   rQ   r   rR   rS   r   rX   r   Útest_token_urlsafeq   s    
zToken_Tests.test_token_urlsafeN)r   r   r   rB   rF   rT   r[   r   r   r   r   r8   L   s   	r8   Ú__main__)	r   ZunittestrJ   ZTestCaser   r   r8   r   Úmainr   r   r   r   Ú<module>   s   $/