o
    >h                     @   sv   d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ G dd	 d	ejZG d
d deZeegZdS )z
Test cases for dirdbm module.
    N)	b64decode)dirdbm)rebuild)FilePath)unittestc                   @   s\   e Zd ZdddZdddZdddZdd	d
ZdddZdddZdddZ	dddZ
dS )DirDbmTestsreturnNc                 C   (   t |  | _t| jj| _d| _d S )N)s   abcs   foos   /lalals    s    
s   baz)r   mktemppathr   opendbmitemsself r   x/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/twisted/test/test_dirdbm.pysetUp      
zDirDbmTests.setUpc                 C   s2   t d}d| j|< d| j|< | | j| d d S )Nz//==   a)r   r   assertEqual)r   kr   r   r   test_all   s   

zDirDbmTests.test_allc                 C   s    t d}d|d< tt  d S )Nzdirdbm.rebuild.test   values   key)r   Shelfr   )r   sr   r   r   test_rebuildInteraction!   s   
z#DirDbmTests.test_rebuildInteractionc              	   C   s  | j }g }t }| jD ]\}}|||< || || q|  | jD ]\}}| || | || | q%z|d  W n	 tyG   Y nw J d|	 }t|
 }t| }|  t| j}	| ||dt| dt|  | ||dt|t| | |	|dt|	 dt|  |  }
||
}|	 }t|
 }t| }|  | ||dt|t| | ||d	t|t|f  | ||d
t|t|f  |  | t|	 t|
   ko
t|   ko
t|  ko
dkn  d | t|t| t|
 | jD ]\}}||= | ||d q!| t|	 dd | t|
 dd | t| dd | t|dd d S )Ns   XXXr   z)didn't raise KeyError on non-existent keyz.keys() output didn't match: z != z'.values() output didn't match: {} != {}zitems() didn't match: z'.copyTo().keys() didn't match: {} != {}z).copyTo().values() didn't match: %s != %sz(.copyTo().items() didn't match: %s != %sz.clear() failedz3key is still in database, even though we deleted itzdatabase has keyszdatabase has valueszdatabase has items)r   setr   appendaddsortassertInr   KeyErrorkeysvaluesreprformatr   copyToclear
assertTruelenassertNotEqualshutilrmtreeassertNotIn)r   dr&   r'   r   vdbkeysdbvaluesdbitemsr   copyPathd2copykeys
copyvalues	copyitemsr   r   r   test_dbm&   s   


L
zDirDbmTests.test_dbmc                 C   sJ   dd l }d| jd< | t|  | jd dk | t| jjd d S )Nr      v   k   s   nokey)timer   r,   absgetModificationTimeassertRaisesr%   )r   r@   r   r   r   test_modificationTime   s   
"z!DirDbmTests.test_modificationTimec                 C   sn  | j d}| j|d jdd}|d W d   n1 s"w   Y  | j d}| j|jdd}|d W d   n1 sGw   Y  | j|d jdd}|d	 W d   n1 shw   Y  | jd
jdd}|d W d   n1 sw   Y  t| jj}| |d d | |d d | 	| j
d | 	| j
d dS )zJ
        DirDBM: test recovery from directory after a faked crash
        s   key1s   .rplw)moder   Ns   key2s   corrects   wrongzaa.news   deletedz*.newz*.rpl)r   _encoder   childr   writer   DirDBMr   assertFalseglobChildren)r   r   fk2r   r   r   r   test_recovery   s&   zDirDbmTests.test_recoveryc                 C   s   |  t| jjdd z|  t| jjdd W n tjy(   | | jtj Y nw |  t| jj	d |  t| jj
d |  t| jjd |  t| jjd |  t| jjd dS )zx
        L{dirdbm.DirDBM} operations only support string keys: other types
        should raise a L{TypeError}.
           32r?   N)rC   	TypeErrorr   __setitem__r   FailTestassertIsInstancer   r   __getitem____delitem__has_key__contains__rB   r   r   r   r   test_nonStringKeys   s   zDirDbmTests.test_nonStringKeysc                 C   sL   dt t dtddfdd}d| jd< | | jd	| | t| jjdd
 dS )z4
        Failure path when setting an item.
        r   datar   Nc                 S   s   |  | td)Nzfail to write)
setContentOSError)r   r\   r   r   r   
_writeFail   s   
z,DirDbmTests.test_failSet.<locals>._writeFails   tests   failkey
_writeFiles   test2)r   strbytesr   patchrC   IOErrorrT   )r   r_   r   r   r   test_failSet   s   
zDirDbmTests.test_failSetr   N)__name__
__module____qualname__r   r   r   r<   rD   rO   r[   re   r   r   r   r   r      s    

	


`

r   c                   @   s   e Zd ZdddZdS )
ShelfTestsr   Nc                 C   r	   )N)r
   r   r   )s   int   )s   floatg      (@)s   tuple)Nrk   )r   r   r   r   r   r   r   r   r   r   r   r      r   zShelfTests.setUprf   )rg   rh   ri   r   r   r   r   r   rj      s    rj   )__doc__r/   base64r   twisted.persistedr   twisted.pythonr   twisted.python.filepathr   twisted.trialr   TestCaser   rj   	testCasesr   r   r   r   <module>   s    <