a
    ze                     @   sf  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 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 ]Z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 ]BZejdd Zde de dZeeeedeide e< q
qedkrbe   dS )    N)support)MutableMapping)dbm_iteratorc                 C   s
   |  dS Nlatin-1)decode)s r	   &/usr/lib/python3.9/test/test_shelve.pyL1   s    r   c                   @   sP   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__   s    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__   s    zbyteskeydict.__delitem__c                 C   s
   t | jS r   )lenr   r   r	   r	   r
   __len__   s    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   &   s    zbyteskeydict.keysc                 C   s
   t | jS r   )r   r   r   r	   r	   r
   copy)   s    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yx   Y n0 | d d S N   Fprotocol	writeback   r(         key1r-   z"Closed shelf should not find a key)shelveShelfassertEqualr   closeassertRaises
ValueErrorfailr   d1r   r	   r	   r
   
test_close1   s    zTestCase.test_closeNc                 C   s`   t | j | tj| j tj| j|d}z$d|d< | 	|d d W |
  n
|
  0 d S )Nr*   r,   r0   )osmkdirdirname
addCleanupr   rmtreer1   openfnr3   r4   )r   r*   r   r	   r	   r
   test_open_template@   s    zTestCase.test_open_templatec                 C   s   | j dd d S )Nr   r;   rC   r   r	   r	   r
   test_ascii_file_shelfJ   s    zTestCase.test_ascii_file_shelfc                 C   s   | j dd d S )Nr-   r;   rD   r   r	   r	   r
   test_binary_file_shelfM   s    zTestCase.test_binary_file_shelfc                 C   s   | j dd d S )Nr(   r;   rD   r   r	   r	   r
   test_proto2_file_shelfP   s    zTestCase.test_proto2_file_shelfc                 C   s   t  }tj|dd(}d|d< | |d d W d    n1 sB0    Y  t  }tj|dd(}d|d< | |d d W d    n1 s0    Y  | t|d | t|d | | |  d S )Nr   r;   r,   r0   r-   )r   r1   r2   r3   r   assertNotEqualitemsr   r9   r   Zd2r	   r	   r
   test_in_memory_shelfS   s    ..zTestCase.test_in_memory_shelfc                 C   s  t  }tj|dddR}g d|d< | |d g d |d d | |d g d W d    n1 sn0    Y  t  }tj|dddR}g d|d< | |d g d |d d | |d g d W d    n1 s0    Y  | t|d	 | t|d	 d S )
Nr(   Fr)   r,   r0      T)r-   r(   r.   r/   rL   r-   )r   r1   r2   r3   appendr   rJ   r	   r	   r
   test_mutable_entrya   s    22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Ã¶pr-   utf-8r   )Zkeyencodingascii)r1   r2   ZassertInr   r5   UnicodeEncodeErrorr   )r   r   r   r   r	   r	   r
   test_keyencodings   s    zTestCase.test_keyencodingc                 C   sx   i }d}| d}tj|dd0}dg||< || }|d d W d    n1 sV0    Y  || }| || d S )Nr   rO   T)r+   r-   r(   )r   r1   r2   rM   rH   )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 sZ0    Y  | tt| z|d  W n ty   Y n0 | d d S r'   )r1   r2   r3   r   r5   r6   r7   r8   r	   r	   r
   	test_with   s    .zTestCase.test_withc                 C   s<   t i }| |jd W d    n1 s.0    Y  d S )Nr.   )r1   r2   r3   Z	_protocol)r   r   r	   r	   r
   test_default_protocol   s    zTestCase.test_default_protocol)N)r!   r"   r#   r   TESTFNr>   r<   pathjoinrB   r:   rC   rE   rF   rG   rK   rN   rR   rT   rU   rV   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(   )r-   r(   r.   )r0   Zkey2Zkey3r	   r   r	   r	   r
   
_reference   s    zTestShelveBase._referenceN)r!   r"   r#   r1   r2   Z	type2testr[   r	   r	   r	   r
   rZ      s   rZ   c                   @   s   e Zd Zdd ZdS )TestShelveInMemBasec                 C   s   t jt fi | jS r   )r1   r2   r   _argsr   r	   r	   r
   _empty_mapping   s    z"TestShelveInMemBase._empty_mappingN)r!   r"   r#   r^   r	   r	   r	   r
   r\      s   r\   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 )Nr-   )counterr1   rA   	base_pathstrr]   r?   r4   )r   xr	   r	   r
   r^      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   rW   r<   r=   r?   r@   rX   rY   ra   setattrdbmrd   dbm_mod)r   r>   r	   r	   r
   setUp   s    
zTestShelveFileBase.setUpN)r!   r"   r#   r`   r^   rh   r	   r	   r	   r
   r_      s   r_   )mapping_testsr-   Z	TestProtoZ	MemShelver]   r*   r/   ZFile_ZShelve)rg   r]   __main__)Zunittestrf   r<   r1   globpickletestr   collections.abcr   Ztest.test_dbmr   r   r   r%   rZ   r\   r_   ri   rangeHIGHEST_PROTOCOLprotoZBasicTestMappingProtocolbasesnametypeglobalsrg   r!   suffixmainr	   r	   r	   r
   <module>   s<   r





