o
    HXīhq  ć                   @   s  d Z ddlZddlZddlZddlmZ ddlmZ zddlmZ W n ey-   dZY nw ej	Z
ej e
e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 ]$Zej d”sbJ ejdd Zde Zeeeejfdeie e< qXedkre ”  dS dS )z=Test script for the dbm.open function based on testdumbdbm.pyé    N)Śimport_helper)Ś	os_helper)Ś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)ŚdbmZ_namesŚ
__import__ŚImportErrorZ_modules)ŚnameŚmod© r   ś7/opt/python-3.10.19/usr/lib/python3.10/test/test_dbm.pyŚdbm_iterator   s   
’
śr   c                   C   s   t  t” d S ©N)r   Ś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 )%ŚAnyDBMTestCaseó   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_db1   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>8   s    z-AnyDBMTestCase.keys_helper.<locals>.<genexpr>)ŚsortedŚkeysr!   ŚassertEqual)r$   r   r+   Zdkeysr   r   r   Śkeys_helper7   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_creationC   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_contentsK   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_modificationQ   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    r7   r,   Śgetr!   ŚassertIsNoner4   ŚKeyErrorr#   r<   r   r   r   Śtest_anydbm_read[   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_keysg   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+   ŚassertInrE   rA   r#   r<   r   r   r   Śtest_empty_valuem   s   
zAnyDBMTestCase.test_empty_valuec                 C   sF   |   ”  t td”}d d”}|  ||” || dksJ | ”  d S )NrC   r   r   r   )r&   r   r   r    r"   rM   r#   r8   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+   r9   r   r   r   r7      s   

’zAnyDBMTestCase.read_helperc                    sĢ   t  td”V |    ” g ” ddg}|D ]\}}| |< q|  t  ” tdd |D ” |D ]\}}|  | ” |   | |” q1|  d ” |  t	 fdd” W d    d S 1 s_w   Y  d S )	Nr   )rD   ó   b)s   12345678910s   019237410982340912840198242c                 s   s    | ]\}}|V  qd S r   r   )r(   r%   Śvr   r   r   r)      s    z+AnyDBMTestCase.test_keys.<locals>.<genexpr>r?   c                      s    d S )Nr?   r   r   ©r   r   r   Ś<lambda>   s    z*AnyDBMTestCase.test_keys.<locals>.<lambda>)
r   r   r    r,   r+   r*   rM   ZassertNotInr4   rG   )r$   r   r%   rQ   r   rR   r   Ś	test_keys   s   
""özAnyDBMTestCase.test_keysc                 C   s.   |   ttdtj” | jt_|   t” t  d S )NrL   )Ś
addCleanupŚsetattrr   rL   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   rN   rO   r7   rT   rW   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 s(w   Y  |  	|| j 
t”” | td”}d|d< |  d|” |  	|d d” W d    n1 sZw   Y  |  	|| j 
t”” qd S )NrL   r   Śwó   1)rU   rV   r   rL   r   rX   r   r   r    r,   ŚwhichdbrM   )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w   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 d”| _d S )Nr   )rU   r   r   r   Zimport_fresh_moduler   r2   r   r   r   rW   ·   s   
zWhichDBTestCase.setUpN)	rX   rY   rZ   r_   ŚunittestZ
skipUnlessr   rb   rW   r   r   r   r   r[      s
    
r[   zdbm.é   Z	TestCase_r/   Ś__main__)Ś__doc__rc   r   r   Ztest.supportr   r   r   r	   ZTESTFNr   ŚpathŚjoinr    r   r   r   r   ZTestCaser[   r   rX   Ś
startswithŚsuffixZtestnameŚtypeŚglobalsŚmainr   r   r   r   Ś<module>   s:    ’t
!
ž’