
    5\hzM                     4   d Z ddlZddlZddlZddlZddlmZmZmZm	Z	 g dZ
g dZee
z   ddgz   Z G d d	ej                  Z G d
 de          Z G d de          Z G d de          Z G d dej                  Zedk    r ej                     dS dS )zTest the binascii C module.    N)
bigmemtest_1G_4Gwarnings_helper)
b2a_base64b2a_hexb2a_qpb2a_uuhexlify)
a2b_base64a2b_hexa2b_qpa2b_uu	unhexlifycrc32crc_hqxc                       e Zd ZeZdZe e ed                    z  Zedz  Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )BinASCIITests.   The quick brown fox jumps over the lazy dog.
   s   
Hello world.
c                 D    |                      | j                  | _        d S N)	type2testrawdatadataselfs    </opt/python-3.11.14/usr/lib/python3.11/test/test_binascii.pysetUpzBinASCIITest.setUp   s    NN4<00			    c                     |                      t          t          j        t                               |                      t          t          j        t                               d S r   )
assertTrue
issubclassbinasciiError	Exception
Incompleter   s    r   test_exceptionszBinASCIITest.test_exceptions   sE    
8>9==>>>
8#6	BBCCCCCr   c           	          t           D ]f}|                     t          t          t          |          d                     |                     t          t          t          |                     gd S )N__call__)all_functionsr!   hasattrgetattrr#   assertRaises	TypeError)r   names     r   test_functionszBinASCIITest.test_functions#   sh    ! 	B 	BDOOGGHd$;$;ZHHIIIi4)@)@AAAA	B 	Br   c                    d}| j         d |         }t          t          t                    D ]5\  }}t	          t
          |          }t	          t
          |          }	  ||                     |                    } ||                     |                    }nA# t          $ r4}	|                     d	                    |||	                     Y d }	~	nd }	~	ww xY w| 
                    ||d	                    ||||                     |                     |t                     |                     |t                     |                     t          |          d           7|                     t          j        |d          t                      |                     t          j        |          t                      d S )N-   {}/{} conversion raises {!r}{}/{} conversion: {!r} != {!r}   r   )r   zipa2b_functionsb2a_functionsr,   r#   r   r%   failformatassertEqualassertIsInstancebytes
assertLessmaxr   intr   )
r   MAX_ALLrawfafba2bb2aareserrs
             r   test_returned_valuez BinASCIITest.test_returned_value)   s   l8G8$-77 	) 	)FB(B''C(B''CNCs++,,c$..++,, N N N		8??BLLMMMMMMMMNS# (,,2F2r3,D,DF F F!!#u---!!!U+++OOCFFC((((h.sA66<<<hnS11377777s   <B
C$*CCc                    d}g }t          dt          | j                  |          D ]P}|                     | j        |||z                      }t	          j        |          }|                    |           Qt                      }|D ]0}|                     |          }t	          j        |          }||z  }1| 	                    || j                   d S )N9   r   )
rangelenr   r   r#   r   appendr=   r   r;   )r   
MAX_BASE64linesibrG   rH   lines           r   test_base64validzBinASCIITest.test_base64valid=   s    
q#dl++Z88 	 	At|Aa
lN;<<A#A&&ALLOOOOgg 	 	Dt$$A#A&&A1HCCdl+++++r   c                   
 d}g }t          dt          | j                  |          D ]P}|                     | j        |||z                      }t          j        |          }|                    |           Qt                      
d}t          d          D ]}||vr
                    |           
fd}t                      }t          ||          D ]0}	|                     |	          }t          j
        |          }||z  }1|                     || j                   |                     t          j
        |                     
                    d           d S )NrL   r   s@   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/r   c                 <   }t          |           t          |          z  }t                      }| rc|rat          |           t          |          z  |k    r| d         | dd          } }n|d         |dd          }}|                    |           | r|a||z   | z   S )Nr      )rN   	bytearrayrO   )rT   noiseratiorH   cfillerss        r   addnoisez1BinASCIITest.test_base64invalid.<locals>.addnoise[   s    EIIU+E++C 5 t99E

*U22"1gtABBxtAA$QxqrruA

1  5  ;%%r   r   )rM   rN   r   r   r   r#   r   rO   rY   mapr   r;   )r   rP   rQ   rR   rS   rG   validr^   rH   rT   r]   s             @r   test_base64invalidzBinASCIITest.test_base64invalidL   sh    
q#di..*55 	 	At|Aa
lN;<<A#A&&ALLOOOO++Ss 	" 	"A~~q!!!
	& 
	& 
	& 
	& 
	& kk%(( 	 	Dt$$A#A&&A1HCCdl+++ 	,T^^G-D-DEEsKKKKKr   c                     dt           dt          dt          f fddt          ffd}dt          ffd}dt          ffd}dt          ffd} |d	d
            |dd
            |dd
            |dd            |dd            |dd
            |dd
            |dd
            |dd
            |dd
            |dd            |dd            |dd            |dd            |dd           d S )Nassert_regexr   non_strict_mode_expected_resultc                                         t          j        |           5  t          j                            |          d           d d d            n# 1 swxY w Y                       t          j                            |          d          |                               t          j                            |                    |           d S )NT)strict_modeF)assertRaisesRegexr#   r$   r   r   r;   )rc   r   rd   r   s      r   _assertRegexTemplatezBBinASCIITest.test_base64_strict_mode.<locals>._assertRegexTemplates   s   ''EE L L#DNN4$8$8dKKKKL L L L L L L L L L L L L L LX01E1ESXYYY<> > >X01E1EFF<> > > > >s   *AAAc                 "     d| |           d S )Nz(?i)Excess data r   rd   rh   s     r   assertExcessDataz>BinASCIITest.test_base64_strict_mode.<locals>.assertExcessData{   s       !3T;Z[[[[[r   c                 "     d| |           d S )Nz(?i)Only base64 datarj   rk   s     r   assertNonBase64DatazABinASCIITest.test_base64_strict_mode.<locals>.assertNonBase64Data~   s       !8$@_`````r   c                 "     d| |           d S )Nz(?i)Leading paddingrj   rk   s     r   assertLeadingPaddingzBBinASCIITest.test_base64_strict_mode.<locals>.assertLeadingPadding   s       !7?^_____r   c                 "     d| |           d S )Nz(?i)Discontinuous paddingrj   rk   s     r   assertDiscontinuousPaddingzHBinASCIITest.test_base64_strict_mode.<locals>.assertDiscontinuousPadding   s       !=tEdeeeeer   s   ab==a   is   ab===s   ab==:s   abc=as   is   abc=:s   ab==
s   
ab==s   ab:(){:|:&};:==s   a
b==s   a b==   =r      ==s   ===s   ab=c=s   ab=ab==s   i)strr=   )r   rl   rn   rp   rr   rh   s   `    @r   test_base64_strict_modez$BinASCIITest.test_base64_strict_modeq   s   	>s 	>% 	>bg 	> 	> 	> 	> 	> 	>	\E 	\ 	\ 	\ 	\ 	\ 	\	au 	a 	a 	a 	a 	a 	a	` 	` 	` 	` 	` 	` 	`	fe 	f 	f 	f 	f 	f 	f 	4(((4(((4(((8,,,8,,,D))) 	It,,,.555It,,,K... 	T3'''UC(((VS)))""8X666"":|<<<<<r   c                 f     fd} |d            |d            |d            |d            |d            |d            |d            |d	            fd
} |d            |d            |d            |d            |d            |d            |d           d S )Nc                                          t          j        d          5  t          j                            |                      d d d            d S # 1 swxY w Y   d S )Nz(?i)Incorrect padding)rg   r#   r$   r   r   )r   r   s    r   assertIncorrectPaddingz>BinASCIITest.test_base64errors.<locals>.assertIncorrectPadding   s    ''8PQQ : :#DNN4$8$8999: : : : : : : : : : : : : : : : : :s   (AAAs   abs   ab=s   abcs   abcdefs   abcdef=s   abcdefgs   a=b=s   a
b=c                 2   t          t          j        dd|                     }dt          |          z   }                    t
          j        |          5  t          j                            |                      d d d            d S # 1 swxY w Y   d S )Ns   [^A-Za-z0-9/+]r   z((?i)Invalid.+number of data characters.+)	rN   resubrv   rg   r#   r$   r   r   )r   n_data_charsexpected_errmsg_rer   s      r   assertInvalidLengthz;BinASCIITest.test_base64errors.<locals>.assertInvalidLength   s    rv&8$EEFFL;c,>O>OO ''8JKK : :#DNN4$8$8999: : : : : : : : : : : : : : : : : :s   (BBB   as   a=s   a==s   a===s   aaaaas]  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas
   A	B
C ??DErj   )r   rz   r   s   `  r   test_base64errorszBinASCIITest.test_base64errors   s?   	: 	: 	: 	: 	: 	u%%%v&&&v&&&y)))z***z***w'''x(((	: 	: 	: 	: 	: 	D!!!E"""F###G$$$H%%%/000O,,,,,r   c                    d}dD ]}g }t          dt          | j                  |          D ]R}|                     | j        |||z                      }t          j        ||          }|                    |           St                      }|D ]0}|                     |          }t          j	        |          }||z  }1| 
                    || j                   | 
                    t          j	        d          d           | 
                    t          j	        d          d           | 
                    t          j	        d	          d           |                     t
          j        t
          j	        d
           |                     t
          j        t
          j	        d           |                     t
          j        t
          j        d           | 
                    t          j        d          d           | 
                    t          j        d          d           | 
                    t          j        dd          d           | 
                    t          j	        d          d           | 
                    t          j	        d          d           | 
                    t          j        d          d           | 
                    t          j        dd          d           | 
                    t          j	        d          t          j	        d                     |                     t                    5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nr2   )TFr   )backtick   s                                     s                                       s    s   !!!!s.   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   xs   !>   
r   s    
Ts   `
s    Cats
   $ $-A=   
s
   $`$-A=```
)rM   rN   r   r   r   r#   r
   rO   r=   r   r;   r-   r$   r.   )	r   MAX_UUr   rQ   rR   rS   rG   rH   rT   s	            r   test_uuzBinASCIITest.test_uu   sC   % 	0 	0HE1c$)nnf55    NN4<!F(
#;<<OA999Q''C  NN4((OA&&qS$,////11:>>>11:>>>11:>>>(.(/;GGG(.(/7CCC(.(/7CCC 	..
;;;--v666t<<<fEEE00#66600#66644nEEEdCCC'	) 	) 	)88!88	: 	: 	:y)) 	' 	'OC&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   M((M,/M,c                    t          j        |                     d          d          }t          j        |                     d          |          }|                     |d           |                     t
          t           j                   |                     t
          t           j        |                     d                     dD ]A}|                     t          j        |                     d          |          |dz             Bd S )N   Test the CRC-32 ofr       this string.i7  r   )r   rX   i4  iE# ixV4i  )r#   r   r   r;   r-   r.   r   crcs     r   test_crc_hqxzBinASCIITest.test_crc_hqx   s    t~~.CDDaHHt~~.>??EEe$$$)X%5666)X%5t~~c7J7JKKK8 	+ 	+CX-dnnS.A.A3GG 6\+ + + +	+ 	+r   c                    t          j        |                     d                    }t          j        |                     d          |          }|                     |d           |                     t
          t           j                   d S )Nr   r   ij])r#   r   r   r;   r-   r.   r   s     r   
test_crc32zBinASCIITest.test_crc32   sp    nT^^,ABBCCnT^^,<==sCCj))))X^44444r   c                 \   d}t          j        |                     |                    }t          j        |                     |                    }|                     ||           |                     t           j        t           j        |d d                    |                     t           j        t           j        |d d         dz              |                     t           j        t           j        t          ddg                     |                     t           j        t           j        d           |                     t           j        t           j        d           |                     t           j        t           j        d           |                     t           j        t           j        d           |                     t          j        |                     |                    |           |                     t          j	        |                     |                    |           d S )	N    {s   worldi   s   helloi   0r      q   s   0Gs   0gs   G0s   g0)
r#   r   r   r   r;   r-   r$   r=   r   r   )r   stus       r   test_hexzBinASCIITest.test_hex   s   _T^^A..//T^^A..//A(.(*:AcrcFCCC(.(*:AcrcFTMJJJ(.(*:E3*<M<MNNN(.(*:EBBB(.(*:EBBB(.(*:EBBB(.(*:EBBB 	)$..*;*;<<a@@@+DNN1,=,=>>BBBBBr   c                 ^   d}|                      t          j        |                     |                    |                                                    d                     |                    dd                              d          }|                      t          j        |                     |          dd          |           |                    d                              d          }|                      t          j        |                     |          d          |           dS )z?Test that hexlify and b2a_hex are binary versions of bytes.hex.r   ascii.   :N)r;   r#   r   r   hexencoder   )r   r   	expected8	expected1s       r   test_hex_separatorzBinASCIITest.test_hex_separator  s    
 `)$..*;*;<<aeeggnnW>U>UVVVEE#qMM((11	)$..*;*;S!DDiPPPEE#JJ%%g..	)$..*;*;SAA9MMMMMr   c                    | j         }t          j        }t          j        } |dd           	  |dUi ddi |                     d           n# t
          $ r Y nw xY w|                      | |d                    d           |                      | |d                    d           |                      | |d                    d           |                      | |d	                    d
           |                      | |d                    d
           |                      | |d                    d           |                      | |d                    d           |                      | |d                    d           |                      | |d                    d           |                      | |d                    d           |                      | |d                    d           |                      | |d          d d                   d           |                      | |d                    d           |                      | |d          d          d           |                     t
          |d           |                      | |d                    d           |                      | |d                    d           |                      | |d                     d!           |                      | |d"                    d#           |                      | |d                    d$           |                      | |d                    d           |                      | |d          d          d%           |                      | |d&          d          d'           |                      | |d(          d          d)           |                      | |d&          dd*          d+           |                      | |d,          d          d,           |                      | |d                    d-           |                      | |d.                    d/           |                      | |d0                    d0           |                      | |d1                    d1           |                      | |d0          d d                   d-           |                      | |d1          d d                   d/           |                      | |d2                    d3           |                      | |d4                    d5           |                      | |d4          d6          d5           |                      | |d7                    d7           |                      | |d7          d6          d8           |                      | |d7          d9          d7           |                      | |d:                    d;           |                      | |d:          d6          d;           |                      | |d:          d9          d<           |                      | |d=                    d=           |                      | |d=          d6          d>           |                      | |d=          d9          d?           |                      | |d@                    dA           |                      | |d@          d6          dA           |                      | |d@          d9          dB           |                      | |dC          d d                   dD           |                      | |dE          d d                   dF           |                      | |dC          d d         d6          dG           |                      | |dE          d d         d6          dH           |                      | |dC          d d         d9          dI           |                      | |dE          d d         d9          dJ           |                      | |dK                    dL           |                      | |dM                    dN           |                      | |dO                    dP           |                      | |dQ                    dR           |                      | |dS                    dS           |                      | |dT          d d                   dL           d S )VNr   F)r   headerrX   z/binascii.a2b_qp(**{1:1}) didn't raise TypeErrorrt   s   = ru   s   =
ABs   ABs   =
ABs   =ABs   =AB
CDs   CDs   =AB   s   =abs   =AXs   =XAr   s   =A   _T)r       bar)foos   =00
=00s    
 s   

s   =FF
=FF
=FFsR   000000000000000000000000000000000000000000000000000000000000000000000000000

s[   000000000000000000000000000000000000000000000000000000000000000000000000000=
=FF
=FF
=FFr   s   =7Fs   =3Ds   =5Fs   x ys   x_ys   x s   x=20)r   	quotetabss   x=20ys   x	ys   =20   	s   =09s    xs   	x    s   =00s    
s   =00
)r   s   x y	zs	   x=20y=09z)istexts   x 
y	
s
   x=20
y=09
s
   x =0Ay	=0As   x y	s
   x=20y=09s
   x =0Dy	=0Ds   x 
y	
s   x=20
y=09
s   x =0D=0Ay	=0D=0As   x 
s   x s   x	
s   x	s   x=20s   x=09s   x =0Ds   x	=0D   .s   =2Es   .
s   =2E
s   .s   =2Es   . s   =2E=00s   a.
s   .a)r   )r   r#   r   r	   r9   r.   r;   r-   )r   r   r   r	   s       r   test_qpzBinASCIITest.test_qp  sa   N	C&&&&	IF  1Q%    IIGHHHH  	 	 	D	
 			$00#666		% 0 0115999		% 0 0114888		( 3 344e<<<		* 5 566>>>		( 3 344c:::		, 7 788%@@@		& 1 122G<<<		& 1 122G<<<		& 1 122F;;;		& 1 122F;;;		& 1 1#2# 677???		$00$777		$===tDDD)V777		- 8 899?KKK		*? @ @AA-	/ 	/ 	/		*I J JKK:	< 	< 	< 			' 2 233V<<<		$00&999		$00$777		$===vFFF		& 1 1$???HHH		% 0 0>>>HHH		& 1 1$$OOO!	# 	# 	#		' 2 24@@@'JJJ		$00&999		% 0 0116:::		% 0 0115999		& 1 122F;;;		% 0 0" 566???		& 1 1#2# 677@@@		% 0 0116:::		' 2 233X>>>		' 2 2dCCCXNNN		) 4 455yAAA		) 4 4EEE%	' 	' 	'		) 4 4UCCC"	$ 	$ 	$		, 7 788(	* 	* 	*		, 7 74HHH(	* 	* 	*		, 7 7FFF'	) 	) 	)		, 7 788%	' 	' 	'		, 7 74HHH(	* 	* 	*		, 7 7FFF'	) 	) 	)		*: ; ;<<,	. 	. 	.		*: ; ;tLLL,	. 	. 	.		*: ; ;EJJJ-	/ 	/ 	/ 			) 4 4SbS 9::GDDD		* 5 5crc :;;XFFF		) 4 4SbS 9TJJJ"	$ 	$ 	$		* 5 5crc :dKKK"	$ 	$ 	$		) 4 4SbS 9%HHH!	# 	# 	#		* 5 5crc :5III"	$ 	$ 	$ 			$00&999		& 1 122H===		& 1 122H===		& 1 122I>>>		' 2 233W===		% 0 0" 566?????s   
A 
AAc           	      @   |                      d          }t          D ]}|dk    rt          j        |d           t	          t          |          }	  ||           @# t
          $ r4}|                     d                    |||                     Y d }~yd }~ww xY wd S )Nr   r   r   z{}({!r}) raises {!r})r   r*   r#   r   r,   r%   r9   r:   )r   emptyfuncfrI   s        r   test_empty_stringzBinASCIITest.test_empty_stringx  s    s##! 		K 		KDy   ***$''AK% K K K		077eSIIJJJJJJJJK		K 		Ks   A
B'*BBc                    t          t                    t          t                    z
  D ]r}	 |                     t          t          t          |          d           3# t          $ r3}|                     d	                    ||                     Y d }~kd }~ww xY w|                     t          t          j
        dd           d S )Ntestz{}("test") raises {!r}r   )setr*   r7   r-   r.   r,   r#   r%   r9   r:   r   )r   r   rI   s      r   test_unicode_b2azBinASCIITest.test_unicode_b2a  s    &&]););; 	F 	FDF!!)WXt-D-DfMMMM F F F		299$DDEEEEEEEEF 	)X%5vqAAAAAs   /A
B')BBc                    d}| j         d |         }t          t          t                    D ]6\  }}t	          t
          |          }t	          t
          |          }	  ||                     |                    } ||          }|                    d          } ||          }	nA# t          $ r4}
| 	                    d
                    |||
                     Y d }
~
nd }
~
ww xY w|                     |	|d
                    |||	|                     |                     |	|           |                     |	t                     |                     t          |d           8d S )Nr2   r   r3   r4      )r   r6   r7   r8   r,   r#   r   decoder%   r9   r:   r;   r<   r=   r-   
ValueError)r   rA   rB   rC   rD   rE   rF   rG   
binary_resrH   rI   s              r   test_unicode_a2bzBinASCIITest.test_unicode_a2b  s   l8G8$-77 	7 	7FB(B''C(B''CNCs++,, SVV
HHW%%c!ff N N N		8??BLLMMMMMMMMNS# (,,2F2r3,D,DF F FS*---!!#u---j#v6666	7 	7s   A	B''
C%1*C  C%c                 (   |                      d          }|                     t          j        |          d           |                     t          j        |d          d           |                     t          j        |d          d           d S )Ns   hellos	   aGVsbG8=
T)newlineFs   aGVsbG8=)r   r;   r#   r   )r   rS   s     r   test_b2a_base64_newlinez$BinASCIITest.test_b2a_base64_newline  s    NN8$$,Q//&	( 	( 	(,Q===&	( 	( 	(,Q>>>$	& 	& 	& 	& 	&r   c                     t          t          d                    }|d d d         }|                     t                    5  t	          j        |           d d d            d S # 1 swxY w Y   d S )Ns	   noncontig)
memoryviewrY   r-   BufferErrorr#   r   )r   mnoncontig_writables      r   test_c_contiguityzBinASCIITest.test_c_contiguity  s    y..//tttW{++ 	1 	1/000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   A$$A(+A(N)__name__
__module____qualname__r=   r   r   rM   r   r'   r0   rJ   rU   ra   rw   r   r   r   r   r   r   r   r   r   r   r   r   rj   r   r   r   r      s       IAGuuUU3ZZ   G$$G1 1 1D D D
B B B8 8 8(, , ,#L #L #LJ)= )= )=X- - ->#' #' #'J
+ 
+ 
+5 5 5C C C$
N 
N 
Nd@ d@ d@LK K KB B B7 7 7*& & &1 1 1 1 1r   r   c                       e Zd Zd ZdS )ArrayBinASCIITestc                 F    t          j         dt          |                    S )NB)arraylist)r   r   s     r   r   zArrayBinASCIITest.type2test  s    {3Q(((r   N)r   r   r   r   rj   r   r   r   r     s#        ) ) ) ) )r   r   c                       e Zd ZeZdS )BytearrayBinASCIITestN)r   r   r   rY   r   rj   r   r   r   r     s        IIIr   r   c                       e Zd ZeZdS )MemoryviewBinASCIITestN)r   r   r   r   r   rj   r   r   r   r     s        IIIr   r   c                   F    e Zd ZdZ eedz   dd          d             ZdS )ChecksumBigBufferTestCasez<bpo-38256 - check that inputs >=4 GiB are handled correctly.   rX   F)sizememusedry_runc                 p    dt           dz   z  }|                     t          j        |          d           d S )Ns   nyanrX   iM"B>)r   r;   r#   r   )r   r   r   s      r   test_big_bufferz)ChecksumBigBufferTestCase.test_big_buffer  s6    #'"--z:::::r   N)r   r   r   __doc__r   r   r   rj   r   r   r   r     sI        FFZS1WQ666; ; 76; ; ;r   r   __main__)r   unittestr#   r   r|   test.supportr   r   r   r   r8   r7   r*   TestCaser   r   r   r   r   r   mainrj   r   r   <module>r      s   ! !    				 > > > > > > > > > > > >    -)0DDa1 a1 a1 a1 a18$ a1 a1 a1H) ) ) ) ) ) ) )
    L       \   ; ; ; ; ; 1 ; ; ; zHMOOOOO r   