o
    HXh                     @   sr  d dl Z d dlZd dlZd dlZd dl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 ZG dd	 d	eZG d
d de jZG dd dZG dd deZG dd deZd dlmZ eejd D ]CZeejfZde dZeeeddeiie e< eejfZe D ] Zejdd Zde de dZeeeedeide e< qqiedkre    dS dS )    N)support)	os_helper)MutableMapping)dbm_iteratorc                 C   s
   |  dS Nlatin-1)decode)s r
   :/opt/python-3.10.19/usr/lib/python3.10/test/test_shelve.pyL1      
r   c                   @   sR   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd ZeZ	dd Z
dd ZdS )byteskeydictc                 C   s
   i | _ d S N)dselfr
   r
   r   __init__   r   zbyteskeydict.__init__c                 C   s   | j t| S r   r   r   r   keyr
   r
   r   __getitem__   s   zbyteskeydict.__getitem__c                 C   s   || j t|< d S r   r   )r   r   valuer
   r
   r   __setitem__   s   zbyteskeydict.__setitem__c                 C   s   | j t|= d S r   r   r   r
   r
   r   __delitem__      zbyteskeydict.__delitem__c                 C   
   t | jS r   )lenr   r   r
   r
   r   __len__   r   zbyteskeydict.__len__c                 c   s"    | j  D ]}|dV  qd S r   )r   keysencode)r   kr
   r
   r   iterkeys"   s   zbyteskeydict.iterkeysc                 C   s   t |  S r   )listr"   r   r
   r
   r   r   (      zbyteskeydict.keysc                 C   r   r   )r   r   r   r
   r
   r   copy+   r   zbyteskeydict.copyN)__name__
__module____qualname__r   r   r   r   r   r"   __iter__r   r%   r
   r
   r
   r   r      s    r   c                   @   s|   e Zd ZejZejejdZ	dd Z
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S )TestCaseshelftemp.dbc                 C   s   i }t j|ddd}g d|d< | |d g d | t|d |  | tt| z|d  W n
 ty=   Y d S w | d d S N   Fprotocol	writeback   r-         key1r2   z"Closed shelf should not find a key)shelveShelfassertEqualr   closeassertRaises
ValueErrorfailr   d1r	   r
   r
   r   
test_close3   s   zTestCase.test_closeNc                 C   s^   t | j | tj| j tj| j|d}zd|d< | 	|d d W |
  d S |
  w )Nr/   r1   r5   )osmkdirdirname
addCleanupr   rmtreer6   openfnr8   r9   )r   r/   r	   r
   r
   r   test_open_templateB   s   zTestCase.test_open_templatec                 C      | j dd d S )Nr   r@   rH   r   r
   r
   r   test_ascii_file_shelfL   r   zTestCase.test_ascii_file_shelfc                 C   rI   )Nr2   r@   rJ   r   r
   r
   r   test_binary_file_shelfO   r   zTestCase.test_binary_file_shelfc                 C   rI   )Nr-   r@   rJ   r   r
   r
   r   test_proto2_file_shelfR   r   zTestCase.test_proto2_file_shelfc                 C   s   t  }tj|dd}d|d< | |d d W d    n1 s!w   Y  t  }tj|dd}d|d< | |d d W d    n1 sGw   Y  | t|d | t|d | | |  d S )Nr   r@   r1   r5   r2   )r   r6   r7   r8   r   assertNotEqualitemsr   r>   r	   Zd2r
   r
   r   test_in_memory_shelfU   s   zTestCase.test_in_memory_shelfc                 C   s  t  }tj|ddd)}g d|d< | |d g d |d d | |d g d W d    n1 s7w   Y  t  }tj|ddd)}g d|d< | |d g d |d d | |d g d W d    n1 ssw   Y  | t|d	 | t|d	 d S )
Nr-   Fr.   r1   r5      T)r2   r-   r3   r4   rR   r2   )r   r6   r7   r8   appendr   rP   r
   r
   r   test_mutable_entryc   s    zTestCase.test_mutable_entryc                 C   sv   i }d}dgt ||< | |d| dgt j|dd|< | |d| t j|dd}| t|j|dg d S )Nu   PÃ¶pr2   utf-8r   )Zkeyencodingascii)r6   r7   ZassertInr    r:   UnicodeEncodeErrorr   )r   r   r   r	   r
   r
   r   test_keyencodingu   s   zTestCase.test_keyencodingc                 C   sx   i }d}| d}tj|dd}dg||< || }|d d W d    n1 s+w   Y  || }| || d S )Nr   rU   T)r0   r2   r-   )r    r6   r7   rS   rN   )r   r   r   
encodedkeyr	   Zp1Zp2r
   r
   r   &test_writeback_also_writes_immediately   s   

z/TestCase.test_writeback_also_writes_immediatelyc                 C   s   i }t j|ddd }g d|d< | |d g d | t|d W d    n1 s-w   Y  | tt| z|d  W n
 tyI   Y d S w | d d S r,   )r6   r7   r8   r   r:   r;   r<   r=   r
   r
   r   	test_with   s   zTestCase.test_withc                 C   s@   t i }| |jtj W d    d S 1 sw   Y  d S r   )r6   r7   r8   Z	_protocolpickleDEFAULT_PROTOCOL)r   r	   r
   r
   r   test_default_protocol   s   "zTestCase.test_default_protocolr   )r&   r'   r(   r   TESTFNrC   rA   pathjoinrG   r?   rH   rK   rL   rM   rQ   rT   rX   rZ   r[   r^   r
   r
   r
   r   r*   /   s    

r*   c                   @   s   e Zd ZejZdd ZdS )TestShelveBasec                 C   s   ddddS )NZvalue1r-   )r2   r-   r3   )r5   Zkey2Zkey3r
   r   r
   r
   r   
_reference   r$   zTestShelveBase._referenceN)r&   r'   r(   r6   r7   Z	type2testrc   r
   r
   r
   r   rb      s    rb   c                   @   s   e Zd Zdd ZdS )TestShelveInMemBasec                 C   s   t jt fi | jS r   )r6   r7   r   _argsr   r
   r
   r   _empty_mapping   s   z"TestShelveInMemBase._empty_mappingN)r&   r'   r(   rf   r
   r
   r
   r   rd      s    rd   c                   @   s    e Zd ZdZdd Zdd ZdS )TestShelveFileBaser   c                 C   s>   |  j d7  _ tj| jt| j  fi | j}| |j |S )Nr2   )counterr6   rF   	base_pathstrre   rD   r9   )r   xr
   r
   r   rf      s    z!TestShelveFileBase._empty_mappingc                 C   sL   t j}t| | t j| tj|d| _| t	t
dt
j | jt
_d S )Nr+   _defaultmod)r   r_   rA   rB   rD   rE   r`   ra   ri   setattrdbmrl   dbm_mod)r   rC   r
   r
   r   setUp   s   
zTestShelveFileBase.setUpN)r&   r'   r(   rh   rf   rp   r
   r
   r
   r   rg      s    rg   )mapping_testsr2   Z	TestProtoZ	MemShelvere   r/   r4   ZFile_ZShelve)ro   re   __main__)!Zunittestrn   rA   r6   globr\   testr   Ztest.supportr   collections.abcr   Ztest.test_dbmr   r   r   r*   rb   rd   rg   rq   rangeHIGHEST_PROTOCOLprotoZBasicTestMappingProtocolbasesnametypeglobalsro   r&   suffixmainr
   r
   r
   r   <module>   sD    r




