U
    ฎช/eฟ  ใ                   @   s\   d dl Z d dlZd dlmZ d dlmZ dd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )้    N)ฺlocked)ฺ
SimpleDictc                     s,   d G  fdddt } |  }~ s(td S )NFc                       s   e Zd Z fddZdS )ztest_close_on_del.<locals>.Dc                    s   d d S ฉNTฉ ฉฺselfฉฺclosedr   ๚:/tmp/pip-unpacked-wheel-z3s6s24u/zict/tests/test_common.pyฺclose   s    z"test_close_on_del.<locals>.D.closeNฉฺ__name__ฺ
__module__ฺ__qualname__r   r   r   r   r
   ฺD   s   r   ฉr   ฺAssertionErrorฉr   ฺdr   r   r
   ฺtest_close_on_del	   s
    r   c               	      sF   d G  fdddt } |  }|}||ks0tW 5 Q R X  sBtd S )NFc                       s   e Zd Z fddZdS )ztest_context.<locals>.Dc                    s   d d S r   r   r   r   r   r
   r      s    ztest_context.<locals>.D.closeNr   r   r   r   r
   r      s   r   r   )r   r   ฺd2r   r   r
   ฺtest_context   s    r   c                     sส   g  G  fdddt } |  }| ddiก t dgks>t| tdgก t dgks`t|jddidd	 t d
dgkst|jdd t dgksคt|jddd t ddgksฦtd S )Nc                       s   e Zd Z fddZdS )ztest_update.<locals>.Dc                    s   | d S ฉNr   )r   Zitems_ฉฺitemsr   r
   ฺ
_do_update(   s    z!test_update.<locals>.D._do_updateN)r   r   r   r   r   r   r   r
   r   '   s   r   ฺx้   )r   r   )r   ้   ้   ้   )ฺy)r   r   )r!   r    ้   )r   )r   r"   r   )r   ฺother)r   r   )r#   r   )r   ฺupdateฺlistr   ฺiterr   r   r   r
   ฺtest_update$   s    r'   c                  C   sP   G dd dt } |  }d|d< d|d< | dก | dก |jddiksLtd S )Nc                   @   s   e Zd Zdd ZdS )ztest_discard.<locals>.Dc                 S   s
   t  d S r   )r   )r   ฺkeyr   r   r
   ฺ__getitem__=   s    z#test_discard.<locals>.D.__getitem__N)r   r   r   r)   r   r   r   r
   r   <   s   r   r   r   r   ฺzr!   )r   ฺdiscardฺdatar   r   r   r   r
   ฺtest_discard;   s    

r-   c                  C   s4   t  } d| d< t t | กก}|jddiks0td S )Nr   r   )r   ฺpickleฺloadsฺdumpsr,   r   )r   r   r   r   r
   ฺtest_pickleH   s    r1   c              	      s   G dd dt  G  fdddt}| }|r8t|jdd |rPtt  ก |jdd W 5 Q R X |r~td S )Nc                   @   s   e Zd ZdS )ztest_lock.<locals>.CustomErrorN)r   r   r   r   r   r   r
   ฺCustomErrorP   s   r2   c                       s   e Zd Ze fddZdS )ztest_lock.<locals>.Dc              
      s   | st |  ก  | r"t W 5 Q R X | s8t t  ก  |  ก    W 5 Q R X W 5 Q R X | stt |r~  d S r   )r   Zunlockฺpytestฺraises)r   ฺcrashฉr2   ฺ	is_lockedr   r
   ฺfT   s    

ztest_lock.<locals>.D.fN)r   r   r   r   r8   r   r6   r   r
   r   S   s   r   F)r5   T)ฺ	Exceptionr   r   r8   r3   r4   )r7   r   r   r   r6   r
   ฺ	test_lockO   s    r:   )r.   r3   Zzict.commonr   Zzict.tests.utils_testr   r   r   r'   r-   r1   r:   r   r   r   r
   ฺ<module>   s   