U
    /e;                     @   s   d dl Z d dlmZ d dlZd dlm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ejdeegdd ZdS )    N)MutableMapping)Func)ZictBase)
utils_testc                 C   s   | d S N    xr   r   8/tmp/pip-unpacked-wheel-z3s6s24u/zict/tests/test_func.pyinc   s    r   c                 C   s   | d S r   r   r	   r   r   r   dec   s    r   c                 C   s   | dd  | d d  S r   r   r	   r   r   r   rotl   s    r   c                 C   s   | dd  | d d  S )Nr   r	   r   r   r   rotr   s    r   c                     s   i } t tt|  d d<  d dks(t| d dks8td ksDtt dgksVtt  dgksltt  dgkstt fdddD stt fdddD st d= d| kstd S )	N
   r
      )r
   r   c                 3   s   | ]}|t  kV  qd S N)str.0sfr   r   	<genexpr>'   s     ztest_simple.<locals>.<genexpr>)r   r   r
   r   c                 3   s   | ]}|t  kV  qd S r   )reprr   r   r   r   r   (   s     )r   r   r   AssertionErrorlistvaluesitemsall)dr   r   r   test_simple   s    r"   c                  C   s(   i } t tt| }t| t| dS )z,
    Test mapping interface for Func().
    N)r   r   r   r   Zcheck_mappingZcheck_closing)r!   zr   r   r   test_mapping.   s    
r$   wrapped_clsc                    sT   G  fddd G dd d| }t  fdddd | }|ttd d	S )
zTest that Func.update() descopes the output of self.dump as soon as it can, if
    the wrapped mapping allows, and doesn't store everything into a list.
    c                       s(   e Zd ZdZ fddZ fddZdS )z*test_update_descopes_early.<locals>.Dumpedr   c                    s(   t     jd7  _ jdk s$td S )Nr      )gcZcollectnr   selfDumpedr   r   __init__A   s    z3test_update_descopes_early.<locals>.Dumped.__init__c                    s     j d8  _ d S r   )r(   r)   r+   r   r   __del__F   s    z2test_update_descopes_early.<locals>.Dumped.__del__N)__name__
__module____qualname__r(   r-   r.   r   r+   r   r   r,   >   s   r,   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z)test_update_descopes_early.<locals>.Dummyc                 S   s   d S r   r   r*   keyvaluer   r   r   __setitem__J   s    z5test_update_descopes_early.<locals>.Dummy.__setitem__c                 S   s   t |d S r   KeyErrorr2   r   r   r   __getitem__M   s    z5test_update_descopes_early.<locals>.Dummy.__getitem__c                 S   s   t |d S r   r6   )r*   r3   r   r   r   __delitem__P   s    z5test_update_descopes_early.<locals>.Dummy.__delitem__c                 S   s   t dS )Nr   )iterr)   r   r   r   __iter__S   s    z2test_update_descopes_early.<locals>.Dummy.__iter__c                 S   s   dS )Nr   r   r)   r   r   r   __len__V   s    z1test_update_descopes_early.<locals>.Dummy.__len__N)r/   r0   r1   r5   r8   r9   r;   r<   r   r   r   r   DummyI   s
   r=   c                    s     S r   r   )vr+   r   r   <lambda>Y       z,test_update_descopes_early.<locals>.<lambda>c                 S   s   d S r   r   )wr   r   r   r?   Y   r@   r   N)r   updatedictfromkeysrange)r%   r=   r!   r   r+   r   test_update_descopes_early8   s    rF   )r'   collections.abcr   ZpytestZzictr   Zzict.commonr   Z
zict.testsr   r   r   r   r   r"   r$   markZparametrizerF   r   r   r   r   <module>   s   
