B
    u9a   ã               @   s^   d dl Z d dlZd dlmZ e d¡Ze eedƒd¡G dd„ dejƒƒZ	e
dkrZe ¡  dS )	é    N)ÚsupportÚpwdÚgetpwallzDoes not have getpwall()c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚPwdTestc             C   s
  t  ¡ }xü|D ]ô}|  t|ƒd¡ |  |d |j¡ |  |jt¡ |  |d |j¡ |  |jt¡ |  |d |j¡ |  |jt	¡ |  |d |j
¡ |  |j
t	¡ |  |d |j¡ |  |jt¡ |  |d |j¡ |  |jt¡ |  |d |j¡ |  |jt¡ qW d S )	Né   r   é   é   é   é   é   é   )r   r   ZassertEqualÚlenÚpw_nameZassertIsInstanceÚstrZ	pw_passwdÚpw_uidÚintZpw_gidZpw_gecosÚpw_dirZpw_shell)ÚselfÚentriesÚe© r   ú/usr/lib/python3.7/test_pwd.pyÚtest_values
   s"    
zPwdTest.test_valuesc             C   s¸   t  ¡ }i }i }t|ƒdkr&|  d¡ x4|D ],}| |jg ¡ |¡ | |jg ¡ |¡ q,W xV|D ]N}|d rb|d dkr|qb|  t  	|j¡||j ¡ |  t  
|j¡||j ¡ qbW d S )Niè  z*passwd file is huge; extended test skippedr   ú+)r   r   r   ZskipTestÚ
setdefaultr   Úappendr   ZassertInÚgetpwnamÚgetpwuid)r   r   ZentriesbynameZentriesbyuidr   r   r   r   Útest_values_extended$   s    


zPwdTest.test_values_extendedc             C   s´  |   ttj¡ |   ttjd¡ |   ttj¡ |   ttjd¡ |   ttjd¡ i }i }x.t ¡ D ]"\}}}}}}}	|||< |||< q^W t| ¡ ƒ}
d}|
| }x¦||krBt|ƒ}x„tt	|ƒƒD ]F}|| dkrÚd||< P q¾|| dkrêq¾q¾t
t|| ƒd ƒ||< P q¾W |d }y|
| }W n tk
r4   P Y nX d |¡}qžW |   ttj|¡ tj}|  ||¡ |   ttj|¡ |   ttjd	¡ |   ttjd
d ¡ |   ttjd
d  ¡ d S )Ng…ëQ¸	@é*   r   ÚzÚAÚZr   Ú éÿÿÿÿr   é€   )ZassertRaisesÚ	TypeErrorr   r   r   r   ÚlistÚkeysÚranger   ÚchrÚordÚ
IndexErrorÚjoinÚKeyErrorÚsysÚmaxsizeZassertNotIn)r   ZbynamesZbyuidsÚnÚpÚuÚgZgecosÚdÚsZallnamesZnameiZfakenameÚcharsÚiZfakeuidr   r   r   Útest_errors8   sH    zPwdTest.test_errorsN)Ú__name__Ú
__module__Ú__qualname__r   r   r9   r   r   r   r   r      s   r   Ú__main__)r/   ZunittestZtestr   Úimport_moduler   Z
skipUnlessÚhasattrZTestCaser   r:   Úmainr   r   r   r   Ú<module>   s   

g