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                   @   sT   e Zd 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 )byteskeydictz Mapping that supports bytes keysc                 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____doc__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.         key1r3   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r0   r2   r6   )osmkdirdirname
addCleanupr   rmtreer7   openfnr9   r:   )r   r0   r	   r
   r
   r   test_open_templateB   s   zTestCase.test_open_templatec                 C      | j dd d S )Nr   rA   rI   r   r
   r
   r   test_ascii_file_shelfL   r   zTestCase.test_ascii_file_shelfc                 C   rJ   )Nr3   rA   rK   r   r
   r
   r   test_binary_file_shelfO   r   zTestCase.test_binary_file_shelfc                 C   rJ   )Nr.   rA   rK   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   rA   r2   r6   r3   )r   r7   r8   r9   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/   r2   r6      T)r3   r.   r4   r5   rS   r3   )r   r7   r8   r9   appendr   rQ   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Ã¶pr3   utf-8r   )Zkeyencodingascii)r7   r8   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   rV   T)r1   r3   r.   )r    r7   r8   rT   rO   )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-   )r7   r8   r9   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   )r7   r8   r9   Z	_protocolpickleDEFAULT_PROTOCOL)r   r	   r
   r
   r   test_default_protocol   s   "zTestCase.test_default_protocolr   )r&   r'   r(   r   TESTFNrD   rB   pathjoinrH   r@   rI   rL   rM   rN   rR   rU   rY   r[   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.   )r3   r.   r4   )r6   Zkey2Zkey3r
   r   r
   r
   r   
_reference   r$   zTestShelveBase._referenceN)r&   r'   r(   r7   r8   Z	type2testrd   r
   r
   r
   r   rc      s    rc   c                   @   s   e Zd Zdd ZdS )TestShelveInMemBasec                 C   s   t jt fi | jS r   )r7   r8   r   _argsr   r
   r
   r   _empty_mapping   s   z"TestShelveInMemBase._empty_mappingN)r&   r'   r(   rg   r
   r
   r
   r   re      s    re   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 )Nr3   )counterr7   rG   	base_pathstrrf   rE   r:   )r   xr
   r
   r   rg      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`   rB   rC   rE   rF   ra   rb   rj   setattrdbmrm   dbm_mod)r   rD   r
   r
   r   setUp   s   
zTestShelveFileBase.setUpN)r&   r'   r(   ri   rg   rq   r
   r
   r
   r   rh      s    rh   )mapping_testsr3   Z	TestProtoZ	MemShelverf   r0   r5   ZFile_ZShelve)rp   rf   __main__)!Zunittestro   rB   r7   globr]   testr   Ztest.supportr   collections.abcr   Ztest.test_dbmr   r   r   r+   rc   re   rh   rr   rangeHIGHEST_PROTOCOLprotoZBasicTestMappingProtocolbasesnametypeglobalsrp   r&   suffixmainr
   r
   r
   r   <module>   sD    r



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