B
    18\C                 @   s   d Z ddlZddlZddlZddlZddddddd	gZd
ddddddgZee ddg ZG dd dejZ	G dd de	Z
G dd de	ZG dd de	Zedkre  dS )zTest the binascii C module.    N
b2a_base64b2a_hexb2a_hqxb2a_qpb2a_uuhexlifyrlecode_hqx
a2b_base64a2b_hexa2b_hqxa2b_qpa2b_uu	unhexlifyrledecode_hqxcrc32crc_hqxc               @   s   e Zd ZeZdZeeed7 Zed7 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(S ))BinASCIITests.   The quick brown fox jumps over the lazy dog.
   s   
Hello world.
c             C   s   |  | j| _d S )N)	type2testrawdatadata)self r   V/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_binascii.pysetUp   s    zBinASCIITest.setUpc             C   s(   |  ttjt |  ttjt d S )N)
assertTrue
issubclassbinasciiError	Exception
Incomplete)r   r   r   r   test_exceptions   s    zBinASCIITest.test_exceptionsc             C   s:   x4t D ],}| ttt|d | ttt| qW d S )N__call__)all_functionsr   hasattrgetattrr   assertRaises	TypeError)r   namer   r   r   test_functions!   s    
zBinASCIITest.test_functionsc             C   s  d}| j d | }xtttD ]\}}tt|}tt|}y || |}|| |}W n6 tk
r }	 z| d	|||	 W d d }	~	X Y nX |dkr|\}}
| 
||d	|||| | |t | |t | t|d qW | t|dt | t|t d S )N-   z{}/{} conversion raises {!r}r   z{}/{} 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err_r   r   r   test_returned_value'   s&    

&z BinASCIITest.test_returned_valuec             C   s   d}g }xFt dt| j|D ]0}| | j|||  }t|}|| qW t }x(|D ] }| |}t|}||7 }q\W | 	|| j d S )N9   r   )
rangelenr   r   r   r   appendr3   r	   r1   )r   
MAX_BASE64linesibr=   r>   liner   r   r   test_base64valid>   s    



zBinASCIITest.test_base64validc       
         s   d}g }xFt dt| j|D ]0}| | j|||  }t|}|| qW t  d}x"t dD ]}||krd | qdW  fdd}t }x.t	||D ] }	| |	}t
|}||7 }qW | || j | t
|  d d S )NrB   r   s@   abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/r   c                s    }t | t | }t }xX| rr|rrt | t | |krP| d | dd   }} n|d |dd   }}|| qW || |  S )Nr      )rD   	bytearrayrE   )rJ   Znoiseratior>   c)fillersr   r   addnoise\   s    
z1BinASCIITest.test_base64invalid.<locals>.addnoise    )rC   rD   r   r   r   r   r   rE   rM   mapr	   r1   )
r   rF   rG   rH   rI   r=   ZvalidrQ   r>   rJ   r   )rP   r   test_base64invalidM   s&    


zBinASCIITest.test_base64invalidc                s    fdd}|d |d |d |d |d |d |d	 |d
  fdd}|d |d |d |d |d |d |d d S )Nc          	      s.     tjd t |  W d Q R X d S )Nz(?i)Incorrect padding)assertRaisesRegexr   r   r	   r   )r   )r   r   r   assertIncorrectPaddingt   s    z>BinASCIITest.test_base64errors.<locals>.assertIncorrectPaddings   abs   ab=s   abcs   abcdefs   abcdef=s   abcdefgs   a=b=s   a
b=c          	      sL   t tdd| }dt| } tj| t |  W d Q R X d S )Ns   [^A-Za-z0-9/+]rR   z((?i)Invalid.+number of data characters.+)	rD   resubstrrU   r   r   r	   r   )r   Zn_data_charsZexpected_errmsg_re)r   r   r   assertInvalidLength   s    z;BinASCIITest.test_base64errors.<locals>.assertInvalidLength   as   a=s   a==s   a===s   aaaaas]  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas
   A	B
C ??DEr   )r   rV   rZ   r   )r   r   test_base64errorsr   s"    zBinASCIITest.test_base64errorsc       	   	   C   s  d}xdD ]}g }xJt dt| j|D ]4}| | j|||  }tj||d}|| q&W t }x(|D ] }| |}t	|}||7 }qjW | 
|| j q
W | 
t	dd | 
t	dd | 
t	d	d | tjtj	d
 | tjtj	d | tjtjd | 
tdd | 
tdd | 
tjdddd | 
t	dd | 
t	dd | 
tdd | 
tjdddd | 
t	dt	d | t tdd W d Q R X d S )Nr*   )TFr   )backtick   s                                     s                                       s    s   !!!!s.   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   xs   !>   
rR   s    
Ts   `
s    Cats
   $ $-A=   
s
   $`$-A=```
)rC   rD   r   r   r   r   r   rE   r3   r   r1   r&   r   r'   )	r   ZMAX_UUr]   rG   rH   rI   r=   r>   rJ   r   r   r   test_uu   s>    



zBinASCIITest.test_uuc             C   s   t | dd}t | d|}| |d | tt j | tt j| d x*dD ]"}| t | d||d@  qZW d S )Ns   Test the CRC-32 ofr   s    this string.i7  rR   )r   rL   i4  iE# ixV4i  )r   r   r   r1   r&   r'   )r   crcr   r   r   test_crc_hqx   s    
zBinASCIITest.test_crc_hqxc             C   s@   t | d}t | d|}| |d | tt j d S )Ns   Test the CRC-32 ofs    this string.ij])r   r   r   r1   r&   r'   )r   rd   r   r   r   
test_crc32   s    zBinASCIITest.test_crc32c             C   sL   t | j}t | |}t | |\}}t |}| || j d S )N)	r   r   r   r   r   r   r   r1   r   )r   Zrler=   rI   r@   r>   r   r   r   test_hqx   s
    
zBinASCIITest.test_hqxc             C   s4   d}t |}| |d t |}| || d S )Ns  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccs
   adbcc-)r   r   r1   r   )r   r   encodeddecodedr   r   r   test_rle   s    

zBinASCIITest.test_rlec             C   s   d}t | |}t | |}| || | t jt j|d d  | t jt j|d d d  | t | || | t | || d S )Ns    {s   worldi   s   helloi   0rc      q)	r   r   r   r
   r1   r&   r   r   r   )r   stur   r   r   test_hex   s    zBinASCIITest.test_hexc             C   s  | j }tj}tj}|ddd y|dUddi W n tk
rD   Y nX | 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 | j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dd, | ||dd- | ||d.d/ | ||d0d0 | ||d1d1 | ||d0d d d- | ||d1d d d/ | ||d2d3 | ||d4d5 | ||d4dd6d5 | ||d7d7 | ||d7dd6d8 | ||d7dd9d7 | ||d:d; | ||d:dd6d; | ||d:dd9d< | ||d=d= | ||d=dd6d> | ||d=dd9d? | ||d@dA | ||d@dd6dA | ||d@dd9dB | ||dCd d dD | ||dEd d dF | ||dCd d dd6dG | ||dEd d dd6dH | ||dCd d dd9dI | ||dEd d dd9dJ | ||dKdL | ||dMdN | ||dOdP | ||dQdR | ||dSdS | ||dTd d dL d S )VNrR   F)r   headerrL   z/binascii.a2b_qp(**{1:1}) didn't raise TypeError   =s   = s   ==s   =
ABs   ABs   =
ABs   =ABs   =AB
CDs   CDs   =AB   s   =abs   =AXs   =XArc   s   =A   _T)rp       Zbar)Z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)rp   	quotetabss   x=20ys   x	ys   =20   	s   =09s    xs   	x    s   =00s    
s   =00
)ru   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)rR   )r   r   r   r   r'   r/   r1   r&   )r   r   r   r   r   r   r   test_qp   s    
zBinASCIITest.test_qpc             C   s   |  d}xptD ]h}|dkr*t|d qtt|}y|| W q tk
rv } z| d||| W d d }~X Y qX qW d S )NrR   r   r   z{}({!r}) raises {!r})r   r#   r   r   r%   r   r/   r0   )r   emptyfuncfr?   r   r   r   test_empty_stringT  s    


zBinASCIITest.test_empty_stringc             C   s   xlt tt t dhB D ]R}y| ttt|d W q tk
rh } z| d	|| W d d }~X Y qX qW | ttj
dd d S )Nr   testz{}("test") raises {!r}r   )setr#   r-   r&   r'   r%   r   r   r/   r0   r   )r   r|   r?   r   r   r   test_unicode_b2ab  s    (zBinASCIITest.test_unicode_b2ac             C   s  d}| j d | }xtttD ]\}}|dkr0qtt|}tt|}y,|| |}||}|d}||}	W n6 tk
r }
 z| 	d
|||
 W d d }
~
X Y nX |dkr|	\}	}|\}}| |	|d
|||	| | |	| | |	t | t|d qW d S )Nr*   r   asciiz{}/{} conversion raises {!r}r   z{}/{} conversion: {!r} != {!r}   )r   r,   r-   r.   r%   r   r   decoder   r/   r0   r1   r2   r3   r&   
ValueError)r   r7   r8   r9   r:   r;   r<   r=   Z
binary_resr>   r?   r@   r   r   r   test_unicode_a2bl  s,    


&zBinASCIITest.test_unicode_a2bc             C   sL   |  d}| t|d | tj|ddd | tj|ddd d S )Ns   hellos	   aGVsbG8=
T)newlineFs   aGVsbG8=)r   r1   r   r   )r   rI   r   r   r   test_b2a_base64_newline  s    
z$BinASCIITest.test_b2a_base64_newlineN)__name__
__module____qualname__r3   r   r   rC   r   r!   r)   rA   rK   rT   r\   rb   re   rf   rg   rj   ro   rz   r~   r   r   r   r   r   r   r   r      s,   %%
f
r   c               @   s   e Zd Zdd ZdS )ArrayBinASCIITestc             C   s   t  dt|S )NB)arraylist)r   rl   r   r   r   r     s    zArrayBinASCIITest.type2testN)r   r   r   r   r   r   r   r   r     s   r   c               @   s   e Zd ZeZdS )BytearrayBinASCIITestN)r   r   r   rM   r   r   r   r   r   r     s   r   c               @   s   e Zd ZeZdS )MemoryviewBinASCIITestN)r   r   r   
memoryviewr   r   r   r   r   r     s   r   __main__)__doc__unittestr   r   rW   r.   r-   r#   TestCaser   r   r   r   r   mainr   r   r   r   <module>   s$   

   