B
    u9a,  ã               @   sH   d Z ddlZddlmZ e d¡ZG dd„ dejƒZedkrDe 	¡  dS )zTest script for the grp module.é    N)ÚsupportÚgrpc               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚGroupDatabaseTestCasec             C   s”   |   t|ƒd¡ |   |d |j¡ |  |jt¡ |   |d |j¡ |  |jt¡ |   |d |j¡ |  |jt¡ |   |d |j¡ |  |jt	¡ d S )Né   r   é   é   é   )
ÚassertEqualÚlenÚgr_nameZassertIsInstanceÚstrZ	gr_passwdÚgr_gidÚintZgr_memÚlist)ÚselfÚvalue© r   ú/usr/lib/python3.7/test_grp.pyÚcheck_value
   s    z!GroupDatabaseTestCase.check_valuec             C   s$   t  ¡ }x|D ]}|  |¡ qW d S )N)r   Úgetgrallr   )r   ÚentriesÚer   r   r   Útest_values   s    
z!GroupDatabaseTestCase.test_valuesc             C   sœ   t  ¡ }t|ƒdkr|  d¡ xx|D ]p}t  |j¡}|  |¡ |  |j|j¡ |j}| 	d¡s$| 	d¡rjq$t  
|¡}|  |¡ |  |j ¡ | ¡ ¡ q$W d S )Niè  z&huge group file, extended test skippedú+ú-)r   r   r
   ÚskipTestÚgetgrgidr   r   r	   r   Ú
startswithÚgetgrnamÚlower)r   r   r   Ze2Únamer   r   r   Útest_values_extended   s    




z*GroupDatabaseTestCase.test_values_extendedc             C   s‚  |   ttj¡ |   ttj¡ |   ttjd¡ |   ttjd¡ i }i }x6t ¡ D ]*\}}}}|rN|dkrhqN|||< |||< qNW t| ¡ ƒ}d}|| }	x¦|	|kr:t|	ƒ}
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
r,   P Y nX d	 |
¡}	q–W |   ttj|	¡ d
}x||krl|d d }qRW |   ttj|¡ d S )Né*   za br   r   ÚzÚAÚZr   Ú i  r   i   )ZassertRaisesÚ	TypeErrorr   r   r   r   Ú
ValueErrorr   ÚkeysÚranger
   ÚchrÚordÚ
IndexErrorÚjoinÚKeyError)r   ZbynamesZbygidsÚnÚpÚgZmemZallnamesZnameiZfakenameÚcharsÚiZfakegidr   r   r   Útest_errors1   sF    z!GroupDatabaseTestCase.test_errorsc             C   sN   t  ¡ }|s|  d¡ |d d }|  tt jt|ƒ¡ |  tt jt|ƒ¡ d S )Nz	no groupsr   r   )r   r   r   ZassertWarnsÚDeprecationWarningr   Úfloatr   )r   r   Úgidr   r   r   Útest_noninteger_gida   s    
z)GroupDatabaseTestCase.test_noninteger_gidN)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r5   r9   r   r   r   r   r      s
   0r   Ú__main__)
Ú__doc__ZunittestZtestr   Úimport_moduler   ZTestCaser   r:   Úmainr   r   r   r   Ú<module>   s   
c