a
    äze,  ã                   @   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ÚstrÚ	gr_passwdÚgr_gidÚintÚgr_memÚlist)ÚselfÚvalue© r   ú#/usr/lib/python3.9/test/test_grp.pyÚcheck_value
   s    z!GroupDatabaseTestCase.check_valuec                 C   s    t  ¡ }|D ]}|  |¡ q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¡ |D ]p}t  |j¡}|  |¡ |  |j|j¡ |j}| 	d¡s"| 	d¡rhq"t  
|¡}|  |¡ |  |j ¡ | ¡ ¡ q"d S )Niè  z&huge group file, extended test skippedú+ú-)r   r   r
   ÚskipTestÚgetgrgidr   r   r	   r   Ú
startswithÚgetgrnamÚlower)r   r   r   Ú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 }t ¡ D ]*\}}}}|rL|dkrfqL|||< |||< qLt| ¡ ƒ}d}|| }	|	|v r:t|	ƒ}
t	t
|
ƒƒD ]N}|
| dkrÎd|
|<  q.q®|
| dkrÞq®q®tt|
| ƒd ƒ|
|<  q.q®|d }z|| }	W n ty,   Y q:Y n0 d	 |
¡}	q|   ttj|	¡ d
}||v rh|d d }qN|   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$   r8   r<   r   r   r   r   r      s
   0r   Ú__main__)
Ú__doc__ZunittestÚtestr   Úimport_moduler   ZTestCaser   r=   Úmainr   r   r   r   Ú<module>   s   
c