o
    °ó®gó  ã                   @   s´   d Z ddlZddlZddlmZ ddlmZ e d¡ZzddlmZ W n e	y.   dZY nw ej
Zdd„ Zd	d
„ ZG dd„ dƒZG dd„ dejƒZdd„ ZedkrXe ¡  dS dS )z=Test script for the dbm.open function based on testdumbdbm.pyé    N)Úimport_helper)Ú	os_helperÚdbm)Úndbmc               	   c   sH    t jD ]} z	t| dgd}W n	 ty   Y qw |t j| < |V  qd S )NÚopen)Úfromlist)r   Z_namesÚ
__import__ÚImportErrorZ_modules)ÚnameÚmod© r   úC/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_dbm.pyÚdbm_iterator   s   €
ÿ
úr   c                  C   s(   t   t  t¡d ¡D ]} t | ¡ q
d S )NÚ*)ÚglobÚescapeÚ_fnamer   Úunlink)Úfr   r   r   Údelete_files"   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 )%ÚAnyDBMTestCaseó   Python:s   Programmings   thes   ways   Guidos   intended)ÚaÚbÚcÚdr   Úgc                 C   s8   t  td¡}| jD ]}| j| || d¡< q	| ¡  d S )NÚnÚascii)r   r   r   Ú_dictÚencodeÚclose)Úselfr   Úkr   r   r   Úinit_db2   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>9   s   € z-AnyDBMTestCase.keys_helper.<locals>.<genexpr>)ÚsortedÚkeysr   ÚassertEqual)r"   r   r)   Zdkeysr   r   r   Úkeys_helper8   s   zAnyDBMTestCase.keys_helperc                 C   s   |   t| jjtƒ¡ d S ©N)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   r/   r   r   r1   r   r   r   Útest_anydbm_not_existingA   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_creationD   s   

z#AnyDBMTestCase.test_anydbm_creationc                 C   sL   t  t¡ t td¡}|  t|ƒd¡ W d   ƒ d S 1 sw   Y  d S )Nr   r   )r   Zcreate_empty_filer   r   r   r*   Úlen©r"   r   r   r   r   Ú8test_anydbm_creation_n_file_exists_with_invalid_contentsL   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   r6   r*   Ú
setdefaultr!   r;   r   r   r   Útest_anydbm_modificationR   s   
z'AnyDBMTestCase.test_anydbm_modificationc                 C   s˜   |   ¡  t td¡}|  |¡ |  | d¡| jd ¡ |  | dd¡d¡ |  | d¡¡ |  	t
¡ |d  W d   ƒ n1 sAw   Y  | ¡  d S )NÚró   ar   r>   r?   )r$   r   r   r   r6   r*   Úgetr   ÚassertIsNoner3   ÚKeyErrorr!   r;   r   r   r   Útest_anydbm_read\   s   

ÿzAnyDBMTestCase.test_anydbm_readc                 C   s*   |   ¡  t td¡}|  |¡}| ¡  d S )NrB   )r$   r   r   r   r+   r!   )r"   r   r)   r   r   r   Útest_anydbm_keysh   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   ó    s   empty)Úgetattrr   Ú_defaultmodZskipTestr   r   r*   r)   ÚassertInrD   r@   r!   r;   r   r   r   Útest_empty_valuen   s   
zAnyDBMTestCase.test_empty_valuec                 C   sF   |   ¡  t td¡}d d¡}|  ||¡ || dksJ ‚| ¡  d S )NrB   r   r   r   )r$   r   r   r   r    rL   r!   r7   r   r   r   Útest_anydbm_access|   s   
z!AnyDBMTestCase.test_anydbm_accessc                 C   s6   |   |¡}| jD ]}|  | j| || d¡ ¡ qd S )Nr   )r+   r   r*   r    )r"   r   r)   r8   r   r   r   r6   „   s   

ÿzAnyDBMTestCase.read_helperc                 C   ó
   t ƒ  d S r,   ©r   r1   r   r   r   ÚtearDown‰   ó   
zAnyDBMTestCase.tearDownc                 C   s   | j t_tƒ  d S r,   )r.   r   rK   r   r1   r   r   r   ÚsetUpŒ   s   
zAnyDBMTestCase.setUpN)Ú__name__Ú
__module__Ú__qualname__r   r$   r+   r2   r4   r9   r<   rA   rG   rH   rM   rN   r6   rQ   rS   r   r   r   r   r   )   s,    û
r   c                   @   sB   e Zd Zdd„ Zejedddd„ ƒZdd„ Zd	d
„ Z	dd„ Z
dS )ÚWhichDBTestCasec                 C   sš   t ƒ D ]G}|j}|dkrqtƒ  | td¡}| ¡  |  || j t¡¡ | td¡}d|d< |  	d|¡ |  |d d¡ | ¡  |  || j t¡¡ qd S )Nzdbm.dumbr   Úwó   1)
r   rT   r   r   r   r!   r*   r   ÚwhichdbrL   )r"   r.   r
   r   r   r   r   Útest_whichdb’   s   
ízWhichDBTestCase.test_whichdbzTest requires ndbm)Úreasonc                 C   s`   d  t¡}t|dƒ |  tj|¡ W d   ƒ n1 sw   Y  |  | j |d d… ¡¡ d S )Nz
{}_ndbm.dbrX   éýÿÿÿ)	Úformatr   r   Z
addCleanupr   r   rE   r   rZ   )r"   Zdb_filer   r   r   Útest_whichdb_ndbm¨   s
   
ÿz!WhichDBTestCase.test_whichdb_ndbmc                 C   rO   r,   rP   r1   r   r   r   rQ   °   rR   zWhichDBTestCase.tearDownc                 C   s8   t ƒ  tj| _t | jd¡| _| j ¡  t 	d¡| _d S )Nr   r   )
r   r   ÚTESTFNÚfilenamer   r   r   r!   r   Zimport_fresh_moduler1   r   r   r   rS   ³   s
   
zWhichDBTestCase.setUpc                    sÄ   t  ˆ jd¡ˆ _ˆ  ˆ j ¡ g ¡ ddg}|D ]	\}}|ˆ j|< qˆ  tˆ j ¡ ƒtdd„ |D ƒƒ¡ |D ]\}}ˆ  |ˆ j¡ ˆ  ˆ j| |¡ q5ˆ  dˆ j¡ ˆ  	t
‡ fdd„¡ ˆ j ¡  d S )	Nr   )rC   ó   b)s   12345678910s   019237410982340912840198242c                 s   s    | ]\}}|V  qd S r,   r   )r&   r#   Úvr   r   r   r'   À   s   € z,WhichDBTestCase.test_keys.<locals>.<genexpr>r>   c                      s
   ˆ j d S )Nr>   )r   r   r1   r   r   Ú<lambda>Å   s   
 z+WhichDBTestCase.test_keys.<locals>.<lambda>)r   r   ra   r   r*   r)   r(   rL   ZassertNotInr3   rF   r!   )r"   r   r#   rc   r   r1   r   Ú	test_keysº   s   $zWhichDBTestCase.test_keysN)rT   rU   rV   r[   ÚunittestZ
skipUnlessr   r_   rQ   rS   re   r   r   r   r   rW   ‘   s    
rW   c                 C   sN   g }t ƒ D ]}| td|j ttjfd|iƒ¡ qdd„ |D ƒ}| |¡ |S )Nz	TestCase-r.   c                 S   s   g | ]}t  |¡‘qS r   )rf   Z	makeSuite)r&   r   r   r   r   Ú
<listcomp>Ï   s    zload_tests.<locals>.<listcomp>)r   ÚappendÚtyperT   r   rf   ÚTestCaseZaddTests)ÚloaderZtestsÚpatternZclassesr   Zsuitesr   r   r   Ú
load_testsÉ   s   
þ
rm   Ú__main__)Ú__doc__rf   r   Ztest.supportr   r   Úimport_moduler   r   r	   r`   r   r   r   r   rj   rW   rm   rT   Úmainr   r   r   r   Ú<module>   s(    
ÿh8ÿ