o
    GXh	                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm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rGe   dS dS )    N)array)	os_helper)script_helperc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )LegacyBase64TestCasec                 C   sZ   |  t|d |  t|g  tddd}|  t|| tdd}|  t|| d S )N s   1234B)   r   I)assertRaises	TypeError
memoryviewcast)selffmultidimensionalint_data r   :/opt/python-3.10.19/usr/lib/python3.10/test/test_base64.pycheck_type_errors   s   z&LegacyBase64TestCase.check_type_errorsc                 C   s   | j }|tdd |tdd |tdd |tdd |td	d	 |td
d |ttdd |ttdd |ttddd | tj d S )N   www.python.org   d3d3LnB5dGhvbi5vcmc=
   a   YQ==
   ab   YWI=
   abc   YWJj
    R   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#0^&*();:<>,. []{}r   YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0
NTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==
r   )assertEqualbase64Zencodebytes	bytearrayr   r   r   r   eqr   r   r   test_encodebytes   s   
z%LegacyBase64TestCase.test_encodebytesc                 C   s   | j }|tdd |tdd |tdd |tdd |td	d
 |tdd |ttdd |ttdd |ttddd | tj d S )Nr   r   r   r   r   r   r   r   r   r   r   r   )r    r!   Zdecodebytesr"   r   r   r   r#   r   r   r   test_decodebytes(   s   
z%LegacyBase64TestCase.test_decodebytesc                 C   s   | j }ddlm}m} |d}| }t|| || d | ttj|d|  | ttj|d|  | ttj|d|  d S )Nr   BytesIOStringIOr   r   abcr   )	r    ior(   r)   r!   encodegetvaluer
   r   )r   r$   r(   r)   infpoutfpr   r   r   test_encode;   s   z LegacyBase64TestCase.test_encodec                 C   s   ddl m}m} |d}| }t|| | | d | ttj	|d|  | ttj	|d|  | ttj	|d|  d S )Nr   r'      d3d3LnB5dGhvbi5vcmc=r   zYWJj
r   )
r+   r(   r)   r!   decoder    r-   r
   r   r,   )r   r(   r)   r.   r/   r   r   r   test_decodeL   s   z LegacyBase64TestCase.test_decodeN)__name__
__module____qualname__r   r%   r&   r0   r3   r   r   r   r   r   
   s    r   c                   @   s  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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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?S )@BaseXYTestCasec                 C   s    |  t|d |  t|g  d S )Nr   r
   r   r   r   r   r   r   check_encode_type_errors\   s   z'BaseXYTestCase.check_encode_type_errorsc                 C   s   |  t|g  d S Nr8   r9   r   r   r   check_decode_type_errors`   s   z'BaseXYTestCase.check_decode_type_errorsc                 C   sl   | j }t|}|||| ||| ||t|| ||td|| | tj| | tj| d S )Nr   )r    r"   r   r   check_nonbyte_element_formatr!   	b64encodecheck_multidimensional)r   r   
bytes_dataexpectedr$   br   r   r   check_other_typesc   s   
z BaseXYTestCase.check_other_typesc                 C   sT   t |d rdnd}|| }t |d df}t|d|}| |||| d S )Nr       r   r   lenr   r   r    )r   r   datapaddingr@   shaper   r   r   r   r?   o   s
   z%BaseXYTestCase.check_multidimensionalc                 C   sB   ddt | d  }|| }t|d}| |||| d S )NrD      r	   rE   )r   r   rG   rH   r@   r   r   r   r   r=   v   s   z+BaseXYTestCase.check_nonbyte_element_formatc                 C   s  | j }|tdd |tdd |tdd |tdd |td	d
 |tdd |tdd |tjdddd |tjdtddd |tjdtddd |tjdtdddd | tjdd | tj | jt	tjddd |t
dd |t
dd |t
dd |t
d	d
 |t
dd |t
dd | tj
dd | tj
 |tdd | tjdd | tj d S )Nr   r1   rD      AA==r      YQ==r      YWI=r      YWJjr   r   sp   YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==   Vo   *$altchars   01a*b$cdr      abcds   YWJjZA==z*$   01a-b_cd)r    r!   r>   r"   r   r   rC   r:   r
   r   Zstandard_b64encodeZurlsafe_b64encoder#   r   r   r   test_b64encode}   sP   

zBaseXYTestCase.test_b64encodec           
      C   s  | j }dddddddd}| D ]\}}|t|| |t|d	| q| tjd
d | tj ddi}| D ]8\\}}}|d	}|d	}|tj||d| |tj||d| |tj||d| |tj||d| q?| D ]\}}|t|| |t|d	| q|| tjd
d | tj ddd}	|	 D ]\}}|t|| |t|d	| q| tjdd | tj d S )Nr   rD   r   r   r   r   r   )r1   rK   rL   rM   rN   sq   YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0
NTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==r   asciirN   )rS   rP   rO   rQ   )rU   r   rU   )	r    itemsr!   	b64decoder2   rC   r<   standard_b64decodeurlsafe_b64decode)
r   r$   testsrG   resZtests_altcharsrR   data_strZaltchars_strZtests_urlsafer   r   r   test_b64decode   sJ   


zBaseXYTestCase.test_b64decodec                 C   s(   |  tjtjd |  tjtjd d S )Nr   r*   )r
   binasciiErrorr!   rY   r   r   r   r   test_b64decode_padding_error   s   z+BaseXYTestCase.test_b64decode_padding_errorc              
   C   s(  d}t jt jt jf}|D ]p\}}|D ],}| j||d | ||| | ||d| W d    n1 s9w   Y  q| tj	 t j|dd W d    n1 sWw   Y  | tj	 t j|ddd W d    n1 sww   Y  qd}| t dd| | t d	| d S )
N)
)s   %3d==   )s   $3d==rd   )s   [==r   )s   YW]3=s   am)s   3{d==rd   )s   3d}==rd   )s   @@r   )   !r   )r   r   )s	   YWJj
YWI=s   abcab)bstrfuncrW   T)validates   s   ++[[//]]s   []s   ++--//__)
r!   rY   rZ   r[   subTestr    r2   r
   r`   ra   )r   r\   Zfuncsrf   r]   rg   r   r   r   test_b64decode_invalid_chars   s,   z+BaseXYTestCase.test_b64decode_invalid_charsc                 C   s   | j }|tdd |tdd |tdd |tdd |tdd	 |td
d |tdd | tjd
d | tj d S )Nr   rD      AA======r      ME======r      MFRA====r      MFRGG===rT      MFRGGZA=   abcde   MFRGGZDF)r    r!   	b32encoderC   r:   r#   r   r   r   test_b32encode  s   zBaseXYTestCase.test_b32encodec                 C   sr   | j }dddddddd}| D ]\}}|t|| |t|d	| q| tjd
d | tj d S )Nr   rD   r   r   r   rT   rp   )r   rk   rl   rm   rn   ro   rq   rW   rn   )r    rX   r!   	b32decoder2   rC   r<   r   r$   r\   rG   r]   r   r   r   test_b32decode  s   zBaseXYTestCase.test_b32decodec           	      C   sN  | j }dddddddddddd}| D ]\}}|t|d| |t|d	d| q| tjtjd
 | tjtjd |tdd |tdd ddd}| D ]J\\}}}|d	}|d	}|tj||d| |tj||d| |tj||d| |tj||d| | tjtj| | tjtj| qZd S )Nr   r   r   r   rT   rp   )r   rl   rm   rn   ro   rq      me======s   mfra====s   mfrgg===s   mfrggza=s   mfrggzdfTrW   rw   zme======s   MLO23456s   bݭZMLO23456s   b))   M1023456   L)rx      I)map01)r    rX   r!   rt   r2   r
   r`   ra   )	r   r$   r\   rG   r]   Z	map_testsr{   r^   Z	map01_strr   r   r   test_b32decode_casefold)  sB   

z&BaseXYTestCase.test_b32decode_casefoldc              
   C   
  g d}g d}t ddD ]!}|r|d|  |D ]}t|| dkr-||d|   qq|D ]Q}| j|dA | tj t| W d    n1 sPw   Y  | tj t|	d W d    n1 snw   Y  W d    n1 s}w   Y  q1d S )	N)r      ABCDEF==   ==ABCDEF   Ms   MEs   MFRAs   MFRGGs   MFRGGZArq   r         =   )rG   rW   )
rangeappendrF   ri   r
   r`   ra   r!   rt   r2   r   r\   prefixesiprefixrG   r   r   r   test_b32decode_errorR  ,   z#BaseXYTestCase.test_b32decode_errorc              	   C   sX   g d}|D ]#\}}| j |d | t|| W d    n1 s$w   Y  qd S )N))r   r   )rD      00======)r      C4======)r      C5H0====)r      C5H66===)rT      C5H66P0=)rp      C5H66P35	to_decode)ri   r    r!   b32hexencode)r   
test_casesZ	to_encoderA   r   r   r   test_b32hexencodeb  s   
z BaseXYTestCase.test_b32hexencodec                 C       |  tjdd | tj d S )NrT   r   )rC   r!   r   r:   rb   r   r   r   test_b32hexencode_other_typesq     z,BaseXYTestCase.test_b32hexencode_other_typesc              	   C   sx   g d}|D ]3\}}}| j ||d | t||| | t|d|| W d    n1 s4w   Y  qd S )N))r   r   F)r   rD   F)r   r   F)r   r   F)r   r   F)r   rT   F)r   rp   F)r   r   T)r   rD   T)r   r   T)r   r   T)r   r   T)r   rT   T)r   rp   T)   c4======r   T)s   c5h0====r   T)s   c5h66===r   T)s   c5h66p0=rT   T)s   c5h66p35rp   T)r   casefoldrW   )ri   r    r!   b32hexdecoder2   )r   r   r   rA   r   r   r   r   test_b32hexdecodeu  s   z BaseXYTestCase.test_b32hexdecodec                 C   r   )Nr   r   )rC   r!   r   r<   rb   r   r   r   test_b32hexdecode_other_types  r   z,BaseXYTestCase.test_b32hexdecode_other_typesc              
   C   r}   )	N)r   r~   r   r   r   r   r   r   r   r   rW   )
r   r   rF   ri   r
   r`   ra   r!   r   r2   r   r   r   r   test_b32hexdecode_error  r   z&BaseXYTestCase.test_b32hexdecode_errorc                 C   sF   | j }|tdd |tdd | tjdd | tj d S )N   
   0102ABCDEFrD      00)r    r!   	b16encoderC   r:   r#   r   r   r   test_b16encode  s   
zBaseXYTestCase.test_b16encodec                 C   s  | j }|tdd |tdd |tdd |tdd | tjtjd | tjtjd |tdd	d |tdd	d | tjdd | tj |ttdd	d |tt	dd	d |tt
d
dd	d | tjtjd | tjtjd d S )Nr   r   Z
0102ABCDEFr   rD   Z00s
   0102abcdefZ
0102abcdefTr   Z0102AGZ010)r    r!   	b16decoder
   r`   ra   rC   r<   r"   r   r   r#   r   r   r   test_b16decode  s0   
zBaseXYTestCase.test_b16decodec                 C   s\  | j }ddddttdddddd	d
dddddddddddddddi}| D ]'\}}|t||| |tj|dd|| |tj|ddd| d | q'| tjdd | ttjd |tjdd dd!d" |tjd#d dd!d$ |tjdd dd!d% |tjd&ddd'd( |tjd)ddd'd* |tjd+ddd'd, |tjd-ddd'd. d S )/Nr   r      GB\6`E-ZP=Df.1GEb>   s?  !!*-'"9eu7#RLhG$k3[W&.oNg'GVB"(`=52*$$(B+<_pR,UFcb-n-Vr/1iJ-0JP==1c70M3&s#]4?Ykm5X@_(6q'R884cEH9MJ8X:f1+h<)lt#=BSg3>[:ZC?t!MSA7]@cBPD3sCi+'.E,fo>FEMbNG^4U^I!pHnJ:W<)KS>/9Ll%"IN/`jYOHG]iPa.Q$R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_]Y2%o^qmn*`5Ta:aN;TJbg"GZd*^:jeCE.%f\,!5gtgiEi8N\UjQ5OekiqBum-X60nF?)@o_%qPq"ad`r;HTr   g   @:E_WAS,RgBkhF"D/O92EH6,BF`qtRH$VbC6UX@47n?3D92&&T:Jand;cHat='/U/0JP==1c70M3&r-I,;<FN.OZ`-3]oSW/g+A(H[P   no padding..   DJpY:@:Wn_DJ(RS   zero compression       H=_,8+Cf>,E,oN2F(oQ1z   zero compression      H=_,8+Cf>,E,oN2F(oQ1!!!!   Boundary:       6>q!aA79M(3WK-[!!   Space compr:       ;fH/TAKYK$D/aMV+<VdL      rr      s8N      s8W*      s8W-!FadobeT   <~   ~>r      )Zwrapcolr   s   GB\6`E-
ZP=Df.1
GEb>s       www.python.orgs   zGB\6`E
-ZP=Df.
1GEb>s   <~GB\6`
E-ZP=Df
.1GEb>
~>           Z
foldspacesr      yy             y+<Vd            y+<U           y+9)	r    bytesr   rX   r!   	a85encoderC   r
   r   ru   r   r   r   test_a85encode  sJ    
zBaseXYTestCase.test_a85encodec                 C   s|   | j }ddddttdddddd	d
dddddddddddddddi}| D ]\}}|t|| q'| tjdd d S )Nr   r      cXxL#aCvlSZ*DGca%Tr   ?  009C61O)~M2nh-c3=Iws5D^j+6crX17#SKH9337XAR!_nBqb&%C@Cr{EG;fCFflSSG&MFiI5|2yJUu=?KtV!7L`6nNNJ&adOifNtP*GA-R8>}2SXo+ITwPvYU}0ioWMyV&XlZI|Y;A6DaB*^Tbai%jczJqze0_d@fPsR8goTEOh>41ejE#<ukdcy;l$Dm3n3<ZJoSmMZprN9pq@|{(sHv)}tgWuEu(7hUw6(UkxVgH!yuH4^z`?@9#Kp$P$jQpf%+1cv(9zP<)YaD4*xB0K+}+;a;Njxq<mKk)=;`X~?CtLF@bU8V^!4`l`1$(#{Qdpr   g   VPa!sWoBn+X=-b1ZEkOHadLBXb#`}nd3r%YLqtVJM@UIZOH55pPf$@(Q&d$}S6EqEFflSSG&MFiI5{CeBQRbjDkv#CIy^osE+AW7dwlr      Zf_uPVPs@!Zf7nor      dS!BNAY*TBaB^jHb7^mG00000r      dS!BNAY*TBaB^jHb7^mG0000r      LT`0$WMOi7IsgCw00r      Q*dEpWgug3ZE$irARr(hr      {{r      |Njr      |Ns9r      |NsC0)r    r   r   rX   r!   	b85encoderC   ru   r   r   r   test_b85encode  s*   
zBaseXYTestCase.test_b85encodec                 C   sH  | j }ddttddddddd	d
dddd}| D ]R\}}|t||| |tj|dd|| |tj|ddd|| |tjd| d dd|| |tj|d dd|| |tjd|d dd|| q|tjddddd |tjddddd |tjddddd |tjddddd | tjdd d S ) Nr   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   sJ  ! ! * -'"
		9eu
7#  RLhG$k3[W&.oNg'GVB"(`=52*$$(B+<_pR,UFcb-n-Vr/1iJ-0JP==1c70M3&s#]4?Ykm5X@_(6q'R884cEH9MJ8X:f1+h<)lt#=BSg3>[:ZC?t!MSA7]@cBPD3sCi+'.E,fo>FEMbNG^4U^I!pHnJ:W<)KS>/9Ll%"IN/`jYOHG]iPa.Q$R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_]Y2%o^qmn*`5Ta:aN;TJbg"GZd*^:jeCE.%f\,!5gtgiEi8N\UjQ5OekiqBum-X60nF?)@o_%qPq"ad`r;HTr   r   r   r   r   r   r   r   r   r   Fr   rW   r   r   Tz<~%s~>r   r   r   r   r   r   r   r   r   r   )r    r   r   rX   r!   	a85decoder2   rC   ru   r   r   r   test_a85decode   s>   

zBaseXYTestCase.test_a85decodec                 C   sz   | j }ddttddddddd	d
dddd}| D ]\}}|t|| |t|d| q| tjdd d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   rW   r   )r    r   r   rX   r!   	b85decoder2   rC   ru   r   r   r   test_b85decodeM  s*   

zBaseXYTestCase.test_b85decodec                 C      | j }|tjdddd |tjdddd |tjdddd |tjd	ddd
 |tjdddd |tdd |tdd |tdd |td
d	 |tdd d S )N   xTZpads   GQ7^D   xxs   G^'2g   xxxs   G^+H5   xxxxs   G^+IX   xxxxxs
   G^+IXGQ7^D   x      xx     xxx    xxxxx   )r    r!   r   r   r#   r   r   r   test_a85_paddingp     zBaseXYTestCase.test_a85_paddingc                 C   r   )Nr   Tr   s   cmMzZr   s   cz6H+r   s   czAdKr   s   czAetr   s
   czAetcmMzZr   r   r   r   )r    r!   r   r   r#   r   r   r   test_b85_padding  r   zBaseXYTestCase.test_b85_paddingc              	   C   s  t tdt tddB t d }|D ]t}| jtt|gd tdt|g  W d    n1 s4w   Y  | jtt|gd tjdt|g dd W d    n1 sZw   Y  | jtt|gd tjd	t|g d
 dd W d    n1 sw   Y  q| jttjddd | jttjddd | ttjd | jttjddd tjddd | jttjddd | jttjddd | jttjdddd | jttjddd | jttjddd | jttjddd | jttjddd | jttjddd d S )N    v      s    	
msgs   !!!!Fr   s   <~!!!!r   Ts	   malformeds   <~still malformeds   <~~>s   abcxs   abcdeys   a b
cr   )r   Zignorechars   ss   s8s   s8Ws   s8W-s   s8W-")setr   r
   
ValueErrorr   r!   r   r   Zillegalcr   r   r   test_a85decode_errors  sN   "






z$BaseXYTestCase.test_a85decode_errorsc              	   C   s   t tdt d t tdd }|D ]&}| jtt|gd tdt|g  W d    n1 s4w   Y  q| ttjd | ttjd | ttjd	 | ttjd
 | ttjd d S )N!   s	   "',./:[\]   r   r   s   0000   |s   |Ns   |Nss   |NsCs   |NsC1)listr   r
   r   r   r!   r   r   r   r   r   test_b85decode_errors  s   
z$BaseXYTestCase.test_b85decode_errorsc                 C   s<   t jt jt jt jt jt jt jf}|D ]	}| t	|d qd S )Nu   with non-ascii Ë)
r!   rY   rZ   r[   rt   r   r   r   r
   r   )r   Zdecode_funcsr   r   r   r   test_decode_nonascii_str  s   z'BaseXYTestCase.test_decode_nonascii_strc                 C   s   |  ttjt d S r;   )Z
assertTrue
issubclassr`   ra   r   rb   r   r   r   test_ErrorHeritage     z!BaseXYTestCase.test_ErrorHeritagec                 C   s  t j}t j}t j}t j}| |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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 ) Nr      fs   Zg==s   fos   Zm8=s   foos   Zm9vs   foobs   Zm9vYg==s   foobas   Zm9vYmE=s   foobars   Zm9vYmFys   MY======s   MZXQ====s   MZXW6===s   MZXW6YQ=s   MZXW6YTBs   MZXW6YTBOI======s   CO======s   CPNG====s   CPNMU===s   CPNMUOG=s   CPNMUOJ1s   CPNMUOJ1E8======s   66s   666Fs   666F6Fs   666F6F62s
   666F6F6261s   666F6F626172)r!   r>   r   rr   r   r    )r   r>   r   rr   r   r   r   r   test_RFC4648_test_cases  s@   z&BaseXYTestCase.test_RFC4648_test_casesN)"r4   r5   r6   r:   r<   rC   r?   r=   rV   r_   rc   rj   rs   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r7   X   s@    28 )	2"-##r7   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestMainc                 C   s"   t jtjrt tj d S d S r;   )ospathexistsr   TESTFNunlinkrb   r   r   r   tearDown  s   zTestMain.tearDownc                 G   s   t jddg|R  jS )N-mr!   )r   Zassert_python_okout)r   argsr   r   r   
get_output  r  zTestMain.get_outputc                 C   s   |  d}| | d d S )Nz-t)   b'Aladdin:open sesame's!   b'QWxhZGRpbjpvcGVuIHNlc2FtZQ==\n'r  )r  ZassertSequenceEqual
splitlines)r   outputr   r   r   test_encode_decode  s   
zTestMain.test_encode_decodec                 C   X   t tjd}|d W d    n1 sw   Y  | dtj}| | d d S )Nwb   ab
-e   Yf9iCg==openr   r  writer  r    rstripr   fpr  r   r   r   test_encode_file  
   zTestMain.test_encode_filec                 C   sZ   t ddd}|d\}}W d    n1 sw   Y  | | d | | d S )Nr  r!   r  r  r  )r   Zspawn_pythoncommunicater    r  ZassertIsNone)r   procr  errr   r   r   test_encode_from_stdin  s
   zTestMain.test_encode_from_stdinc                 C   r  )Nr  r  z-ds   abr  r  r   r   r   r3     r  zTestMain.test_decodeN)	r4   r5   r6   r
  r  r  r  r#  r3   r   r   r   r   r    s    r  __main__)Zunittestr!   r`   r  r   Ztest.supportr   r   ZTestCaser   r7   r  r4   mainr   r   r   r   <module>   s$    N     ""