a
    äzeF  ã                   @   sî   d dl Z d dlZd dlZd dlZzd dlmZ W n eyF   dZY n0 ejjZ	ej
 e	ejj¡Zdd„ Zdd„ Zdd„ ZG d	d
„ d
ƒZG dd„ de jƒZeƒ D ]8Zejdd… Zde› Zeeee jfdeiƒeƒ e< q edkrêe  ¡  dS )é    N)Úndbmc               	   c   sJ   t jD ]>} zt| dgd}W n ty2   Y qY n0 |t j| < |V  qd S )NÚopen)Úfromlist)ÚdbmZ_namesÚ
__import__ÚImportErrorZ_modules)ÚnameÚmod© r
   ú#/usr/lib/python3.9/test/test_dbm.pyÚdbm_iterator   s    


r   c                   C   s   t j t¡ d S ©N)ÚtestÚsupportÚrmtreeÚdirnamer
   r
   r
   r   Úcleaunup_test_dir   s    r   c                   C   s   t ƒ  t t¡ d S r   )r   ÚosÚmkdirr   r
   r
   r
   r   Úsetup_test_dir"   s    r   c                   @   sŽ   e Zd Zddddd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 )%ÚAnyDBMTestCases   Python:s   Programmings   thes   ways   Guidos   intended)ÚaÚbÚcÚdÚfÚgc                 C   s8   t  td¡}| jD ]}| j| || d¡< q| ¡  d S )NÚnÚascii)r   r   Ú_fnameÚ_dictÚencodeÚclose)Úselfr   Úkr
   r
   r   Úinit_db0   s    
zAnyDBMTestCase.init_dbc                 C   s4   t dd„ | ¡ D ƒƒ}t | j ¡ ƒ}|  ||¡ |S )Nc                 s   s   | ]}|  d ¡V  qdS )r   N)Údecode)Ú.0r$   r
   r
   r   Ú	<genexpr>7   ó    z-AnyDBMTestCase.keys_helper.<locals>.<genexpr>)ÚsortedÚkeysr    ÚassertEqual)r#   r   r+   Zdkeysr
   r
   r   Úkeys_helper6   s    zAnyDBMTestCase.keys_helperc                 C   s   |   t| jjtƒ¡ d S r   )Z
assertTrueÚ
issubclassÚmoduleÚerrorÚOSError©r#   r
   r
   r   Ú
test_error<   s    zAnyDBMTestCase.test_errorc                 C   s   |   tjtjt¡ d S r   )ÚassertRaisesr   r0   r   r   r2   r
   r
   r   Útest_anydbm_not_existing?   s    z'AnyDBMTestCase.test_anydbm_not_existingc                 C   sV   t  td¡}|  t| ¡ ƒg ¡ | jD ]}| j| || d¡< q&|  |¡ | 	¡  d S )Nr   r   )
r   r   r   r,   Úlistr+   r    r!   Úread_helperr"   ©r#   r   Úkeyr
   r
   r   Útest_anydbm_creationB   s    

z#AnyDBMTestCase.test_anydbm_creationc                 C   sL   t j t¡ t td¡ }|  t|ƒd¡ W d   ƒ n1 s>0    Y  d S )Nr   r   )r   r   Zcreate_empty_filer   r   r   r,   Úlen©r#   r   r
   r
   r   Ú8test_anydbm_creation_n_file_exists_with_invalid_contentsJ   s    zGAnyDBMTestCase.test_anydbm_creation_n_file_exists_with_invalid_contentsc                 C   s`   |   ¡  t td¡}d | jd< |d< |  |¡ |  | dd¡d¡ |  |d d¡ | ¡  d S )Nr   s   indentedr   ó   gó   xxxó   foo)	r%   r   r   r   r    r7   r,   Ú
setdefaultr"   r<   r
   r
   r   Útest_anydbm_modificationP   s    
z'AnyDBMTestCase.test_anydbm_modificationc                 C   s˜   |   ¡  t td¡}|  |¡ |  | d¡| jd ¡ |  | dd¡d¡ |  | d¡¡ |  	t
¡ |d  W d   ƒ n1 s‚0    Y  | ¡  d S )NÚró   ar   r?   r@   )r%   r   r   r   r7   r,   Úgetr    ÚassertIsNoner4   ÚKeyErrorr"   r<   r
   r
   r   Útest_anydbm_readZ   s    
&zAnyDBMTestCase.test_anydbm_readc                 C   s*   |   ¡  t td¡}|  |¡}| ¡  d S )NrC   )r%   r   r   r   r-   r"   )r#   r   r+   r
   r
   r   Útest_anydbm_keysf   s    
zAnyDBMTestCase.test_anydbm_keysc                 C   sž   t tjdd ƒdkr|  d¡ t td¡}|  | ¡ g ¡ d|d< |  | ¡ dg¡ |  d|¡ |  |d d¡ |  | 	d¡d¡ |  | 
d¡d¡ | ¡  d S )NZlibraryzBerkeley DBzCBerkeley DB doesn't distinguish the empty value from the absent oner   r)   s   empty)Úgetattrr   Ú_defaultmodZskipTestr   r   r,   r+   ÚassertInrE   rA   r"   r<   r
   r
   r   Útest_empty_valuel   s    
zAnyDBMTestCase.test_empty_valuec                 C   s6   |   ¡  t td¡}d d¡}|  ||¡ | ¡  d S )NrC   r   r   )r%   r   r   r   r!   rL   r"   r8   r
   r
   r   Útest_anydbm_accessz   s
    
z!AnyDBMTestCase.test_anydbm_accessc                 C   s6   |   |¡}| jD ] }|  | j| || d¡ ¡ qd S )Nr   )r-   r    r,   r!   )r#   r   r+   r9   r
   r
   r   r7   ‚   s    

zAnyDBMTestCase.read_helperc                    sÊ   t  td¡ª‰ |  ˆ  ¡ g ¡ ddg}|D ]\}}|ˆ |< q*|  tˆ  ¡ ƒtdd„ |D ƒƒ¡ |D ]$\}}|  |ˆ ¡ |  ˆ | |¡ qb|  dˆ ¡ |  t	‡ fdd„¡ W d   ƒ n1 s¼0    Y  d S )	Nr   )rD   ó   b)s   12345678910s   019237410982340912840198242c                 s   s   | ]\}}|V  qd S r   r
   )r'   r$   Úvr
   r
   r   r(      r)   z+AnyDBMTestCase.test_keys.<locals>.<genexpr>r?   c                      s   ˆ d S )Nr?   r
   r
   ©r   r
   r   Ú<lambda>’   r)   z*AnyDBMTestCase.test_keys.<locals>.<lambda>)
r   r   r   r,   r+   r*   rL   ZassertNotInr4   rG   )r#   r   r$   rP   r
   rQ   r   Ú	test_keys‡   s    
"zAnyDBMTestCase.test_keysc                 C   s.   |   ttdtj¡ | jt_|   t¡ tƒ  d S )NrK   )Ú
addCleanupÚsetattrr   rK   r/   r   r   r2   r
   r
   r   ÚsetUp”   s    
zAnyDBMTestCase.setUpN)Ú__name__Ú
__module__Ú__qualname__r    r%   r-   r3   r5   r:   r=   rB   rH   rI   rM   rN   r7   rS   rV   r
   r
   r
   r   r   '   s*   û
r   c                   @   s2   e Zd Zdd„ Zejedddd„ ƒZdd„ Zd	S )
ÚWhichDBTestCasec              	   C   sØ   |   ttdtj¡ tƒ D ]º}|j}tƒ  |t_| td¡ W d   ƒ n1 sP0    Y  |  	|| j 
t¡¡ | td¡4}d|d< |  d|¡ |  	|d d¡ W d   ƒ n1 s´0    Y  |  	|| j 
t¡¡ qd S )NrK   r   Úwó   1)rT   rU   r   rK   r   rW   r   r   r   r,   ÚwhichdbrL   )r#   r/   r   r   r
   r
   r   Útest_whichdbœ   s    
,.zWhichDBTestCase.test_whichdbzTest requires ndbm)Úreasonc                 C   sD   t td dƒ W d   ƒ n1 s$0    Y  |  | j t¡¡ d S )Nz.dbÚwb)r   r   rF   r   r]   r2   r
   r
   r   Útest_whichdb_ndbm°   s    .z!WhichDBTestCase.test_whichdb_ndbmc                 C   s"   |   t¡ tƒ  tj d¡| _d S )Nr   )rT   r   r   r   r   Zimport_fresh_moduler   r2   r
   r
   r   rV   ¶   s    
zWhichDBTestCase.setUpN)	rW   rX   rY   r^   ÚunittestZ
skipUnlessr   ra   rV   r
   r
   r
   r   rZ   ›   s   
rZ   é   Z	TestCase_r/   Ú__main__)rb   r   r   Ztest.supportr   r   r   r   ZTESTFNr   ÚpathÚjoinr   r   r   r   r   ZTestCaserZ   r	   rW   ÚsuffixZtestnameÚtypeÚglobalsÚmainr
   r
   r
   r   Ú<module>   s.   
t!

þ