o
    gF                     @   s  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d dlmZ G dd dejZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdd Zedkre  dS dS )    N)support)	os_helper)MutableMapping)dbm_iteratorc                 C   s
   |  dS Nlatin-1)decode)s r
   F/Users/admin/.pyenv/versions/3.10.0/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__   s   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                   @   sh   e Zd Z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 )TestCaseshelftemp.dbc                 C   s$   t  | jd D ]}t| qd S N*)globfnr   unlink)r   fr
   r
   r   tearDown1   s   zTestCase.tearDownc                 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   r4         key1r9   z"Closed shelf should not find a key)shelveShelfassertEqualr   closeassertRaises
ValueErrorfailr   d1r	   r
   r
   r   
test_close5   s   zTestCase.test_closec                 C   B   t j| jdd}zd|d< | |d d W |  d S |  w )Nr   r6   r8   r<   r=   openr/   r?   r@   r   r	   r
   r
   r   test_ascii_file_shelfD   
   zTestCase.test_ascii_file_shelfc                 C   rG   )Nr9   rH   r8   r<   rI   rK   r
   r
   r   test_binary_file_shelfL   rM   zTestCase.test_binary_file_shelfc                 C   rG   )Nr4   rH   r8   r<   rI   rK   r
   r
   r   test_proto2_file_shelfT   rM   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   rH   r8   r<   r9   )r   r=   r>   r?   r   assertNotEqualitemsr   rE   r	   Zd2r
   r
   r   test_in_memory_shelf\   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 )
Nr4   Fr5   r8   r<      T)r9   r4   r:   r;   rT   r9   )r   r=   r>   r?   appendr   rR   r
   r
   r   test_mutable_entryj   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Ã¶pr9   utf-8r   )Zkeyencodingascii)r=   r>   ZassertInr   rA   UnicodeEncodeErrorr   )r   r   r   r	   r
   r
   r   test_keyencoding|   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   rW   T)r7   r9   r4   )r   r=   r>   rU   rP   )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 r3   )r=   r>   r?   r   rA   rB   rC   rD   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   )r=   r>   r?   Z	_protocolpickleDEFAULT_PROTOCOLrK   r
   r
   r   test_default_protocol   s   "zTestCase.test_default_protocolN)r%   r&   r'   r/   r2   rF   rL   rN   rO   rS   rV   rZ   r\   r]   r`   r
   r
   r
   r   r*   -   s    r*   )mapping_testsc                   @   s:   e Zd ZdZdZdd ZejZdd Z	dd Z
d	d
 ZdS )TestShelveBaser+   r   c                 O   s$   g | _ tjj| g|R i | d S r   )_dbra   BasicTestMappingProtocolr   )r   argskwr
   r
   r   r      s   zTestShelveBase.__init__c                 C   s   ddddS )NZvalue1r4   )r9   r4   r:   )r<   Zkey2Zkey3r
   r   r
   r
   r   
_reference   r#   zTestShelveBase._referencec                 C   s\   | j rtjt fi | j}n|  jd7  _tj| jt| j fi | j}| j	
| |S )Nr9   )_in_memr=   r>   r   _argscounterrJ   r/   strrc   rU   )r   xr
   r
   r   _empty_mapping   s    zTestShelveBase._empty_mappingc                 C   sH   | j D ]}|  qg | _ | js t| jd D ]	}t| qd S d S r,   )rc   r@   rh   r.   r/   r   r0   )r   Zdbr1   r
   r
   r   r2      s   

zTestShelveBase.tearDownN)r%   r&   r'   r/   rj   r   r=   r>   Z	type2testrg   rm   r2   r
   r
   r
   r   rb      s    rb   c                   @      e Zd ZddiZdZdS )TestAsciiFileShelver6   r   FNr%   r&   r'   ri   rh   r
   r
   r
   r   ro          ro   c                   @   rn   )TestBinaryFileShelver6   r9   FNrp   r
   r
   r
   r   rr      rq   rr   c                   @   rn   )TestProto2FileShelver6   r4   FNrp   r
   r
   r
   r   rs      rq   rs   c                   @   rn   )TestAsciiMemShelver6   r   TNrp   r
   r
   r
   r   rt      rq   rt   c                   @   rn   )TestBinaryMemShelver6   r9   TNrp   r
   r
   r
   r   ru      rq   ru   c                   @   rn   )TestProto2MemShelver6   r4   TNrp   r
   r
   r
   r   rv      rq   rv   c               
   C   s&   t  D ]} tttttttt	 qd S r   )
r   r   Zrun_unittestro   rr   rs   rt   ru   rv   r*   )moduler
   r
   r   	test_main   s   
rx   __main__)Zunittestr=   r.   r^   testr   Ztest.supportr   collections.abcr   Ztest.test_dbmr   r   r   r*   ra   rd   rb   ro   rr   rs   rt   ru   rv   rx   r%   r
   r
   r
   r   <module>   s.    z
