
    <e                         	 d dl Z d dlZd dlZ G d dej                  Z G d dej                  Z G d dej                  Zedk    r ej                     dS dS )	    Nc                   (    e Zd Z	 d Zd Zd Zd ZdS )Compare_Digest_Testsc           	         dD ]}|dz  }|dz  }|                      t          j        ||                     |                      t          j        |                    d          |                    d                               d S )N)abcdxyz123d   utf-8)
assertTruesecretscompare_digestencodeselfsr   bs       (/usr/lib/python3.11/test/test_secrets.py
test_equalzCompare_Digest_Tests.test_equal   s    ' 	Z 	ZA#A#AOOG21a88999OOG2188G3D3DahhwFWFWXXYYYY		Z 	Z    c           	         |                      t          j        dd                     |                      t          j        dd                     dD ]}|dz  dz   }|dz  dz   }|                      t          j        ||                     |                      t          j        |                    d	          |                    d	                               d S )
Nabcabcds   abcs   abcd)xmna1b2c3r	   qkr
   )assertFalser   r   r   r   s       r   test_unequalz!Compare_Digest_Tests.test_unequal   s    /v>>???/@@AAA& 	[ 	[A#A#AW3Aq99:::W3AHHW4E4EqxxPWGXGXYYZZZZ		[ 	[r   c                     d}|                     d          }|                     t          t          j        ||           |                     t          t          j        ||           d S )Nabcder
   )r   assertRaises	TypeErrorr   r   )r   r   r   s      r   test_bad_typesz#Compare_Digest_Tests.test_bad_types$   sZ    HHW 	)W%;QBBB)W%;QBBBBBr   c                     |                      t          j        dd          t                     |                      t          j        dd          t                     d S )Nr   xyz)assertIsInstancer   r   bool)r   s    r   	test_boolzCompare_Digest_Tests.test_bool-   sN    g4UEBBDIIIg4UEBBDIIIIIr   N)__name__
__module____qualname__r   r   r$   r)    r   r   r   r      sa        /Z Z Z[ [ [C C CJ J J J Jr   r   c                   "    e Zd Z	 d Zd Zd ZdS )Random_Testsc                     d}dD ]T}t          d          D ]B}t          j        |          }|                     d|cxk    od|z  k     nc |||fz             CUd S )Nzrandbits(%d) returned %d)            r      )ranger   randbitsr   )r   errmsgnumbitsins        r   test_randbitszRandom_Tests.test_randbits6   s    +" 	L 	LG1XX L L$W--Q 3 3 3 3G 3 3 3 3Vwl5JKKKKL	L 	Lr   c                     g d}t          d          D ]+}|                     t          j        |          |v            ,d S )N)   r5                @   
   )r6   r   r   choice)r   itemsr:   s      r   test_choicezRandom_Tests.test_choice>   sP    (((r 	< 	<AOOGN511U:;;;;	< 	<r   c                 .   t          dd          D ]7}|                     t          j        |          t          |                     8|                     t
          t          j        d           |                     t
          t          j        d           d S )Nr5   rD   r   )r6   assertInr   	randbelowr"   
ValueError)r   r:   s     r   test_randbelowzRandom_Tests.test_randbelowD   s}    q" 	: 	:AMM'+A..a9999*g&7;;;*g&7<<<<<r   N)r*   r+   r,   r<   rG   rM   r-   r   r   r/   r/   3   sG        4L L L< < <= = = = =r   r/   c                   (    e Zd Z	 d Zd Zd Zd ZdS )Token_Testsc                    t           j        t           j        t           j        fD ]}|                     |          5  |j        }	  |             n(# t          $ r |                     d|z             Y nw xY w	  |d            n(# t          $ r |                     d|z             Y nw xY wd d d            n# 1 swxY w Y   t           j        }| 	                    t          t          j        d                     |           | 	                    t          t          j        d                     d|z             d S )N)funcz$%s cannot be called with no argumentz%s cannot be called with Noner5   )r   token_bytes	token_hextoken_urlsafesubTestr*   r#   failDEFAULT_ENTROPYassertEquallen)r   rQ   namesizes       r   test_token_defaultszToken_Tests.test_token_defaultsO   s   ('*;*, 	F 	FD4(( 	F 	F}MDFFFF  M M MIIDtKLLLLLMFDJJJJ  F F FII=DEEEEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F &W06677>>>W.t4455qv>>>>>sY   B9
AB9"A52B94A55B99BB9"B*'B9)B**B99B=	 B=	c           	      0   dD ]}|                      |          5  |                     t          j        |          t                     |                     t          t          j        |                    |           d d d            n# 1 swxY w Y   d S )N)r>   r@      r	   r;   )rU   r'   r   rR   bytesrX   rY   )r   r;   s     r   test_token_byteszToken_Tests.test_token_bytesa   s      	A 	AA"" A A%%g&9!&<&<eDDD  W%8%;%;!<!<a@@@A A A A A A A A A A A A A A A	A 	As   A#B

B	B	c                 n   dD ]}|                      |          5  t          j        |          }|                     |t                     |                     t          |          d|z             |                     t          d |D                                  d d d            n# 1 swxY w Y   d S )N)r>   r2      Z   r_   r5   c              3   2   K   | ]}|t           j        v V  d S N)string	hexdigits).0cs     r   	<genexpr>z-Token_Tests.test_token_hex.<locals>.<genexpr>o   s*      #E#EaA)9$9#E#E#E#E#E#Er   )	rU   r   rS   r'   strrX   rY   r   all)r   r;   r   s      r   test_token_hexzToken_Tests.test_token_hexh   s	     	G 	GA"" G G%a((%%a---  Q1---#E#E1#E#E#E E EFFF	G G G G G G G G G G G G G G G	G 	Gs   BB))B-	0B-	c                 `   t           j        t           j        z   dz   dD ]}|                     |          5  t	          j        |          }|                     |t                     |                     t          fd|D                                  d d d            n# 1 swxY w Y   d S )Nz-_)r>         L   r_   c              3       K   | ]}|v V  	d S rf   r-   )ri   rj   legals     r   rk   z1Token_Tests.test_token_urlsafe.<locals>.<genexpr>x   s'      #:#:1AJ#:#:#:#:#:#:r   )
rg   ascii_lettersdigitsrU   r   rT   r'   rl   r   rm   )r   r;   r   rt   s      @r   test_token_urlsafezToken_Tests.test_token_urlsafeq   s    $v}4t;  	< 	<A"" < <)!,,%%a---#:#:#:#:#:#:#: : :;;;< < < < < < < < < < < < < < <	< 	<s   AB""B&	)B&	N)r*   r+   r,   r\   ra   rn   rw   r-   r   r   rO   rO   L   sY        ? ? ?$A A AG G G< < < < <r   rO   __main__)	r   unittestrg   TestCaser   r/   rO   r*   mainr-   r   r   <module>r|      s      
!J !J !J !J !J8, !J !J !JH= = = = =8$ = = =2,< ,< ,< ,< ,<(# ,< ,< ,<^ zHMOOOOO r   