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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 )%Ś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_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   r/   r   r   r1   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    r6   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   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_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*   ŚassertInrD   r@   r"   r;   r   r   r   Śtest_empty_valuem   s   
zAnyDBMTestCase.test_empty_valuec                 C   s6   |   ”  t td”}d d”}|  ||” | ”  d S )NrB   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                    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   )rC   ó   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)   rL   ZassertNotInr3   rF   )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   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   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 s(w   Y  |  	|| j 
t”” | td”}d|d< |  d|” |  	|d d” W d    n1 sZw   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w   Y  |  | j t”” d S )Nz.dbŚwb)r   r   rE   r   r]   r1   r   r   r   Śtest_whichdb_ndbm±   s   .z!WhichDBTestCase.test_whichdb_ndbmc                 C   s    |   t” t  t d”| _d S )Nr   )rT   r   r   r   Zimport_fresh_moduler   r1   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__)Ś__doc__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>   s8    ’t
!
ž’