B
    18\V                 @   sN   d dl Z d dlZd dlZG dd de jZG dd deZG dd deZdS )    Nc               @   s   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d Zdd Zdd Zdd Zd d! Zd"d# Zd$d% ZdS )&BasicTestMappingProtocolNc             C   s   ddddS )z^Return a dictionary of values which are invariant by storage
        in the object under test.2Zvalue1)         )1key1key2 )selfr
   r
   V/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/mapping_tests.py
_reference   s    z#BasicTestMappingProtocol._referencec             C   s   |   S )zReturn an empty mapping object)	type2test)r   r
   r
   r   _empty_mapping   s    z'BasicTestMappingProtocol._empty_mappingc             C   s*   |   }x| D ]\}}|||< qW |S )zKReturn a mapping object with the value contained in data
        dictionary)r   items)r   dataxkeyvaluer
   r
   r   _full_mapping   s    z&BasicTestMappingProtocol._full_mappingc             O   s`   t jj| f|| |   | _| j \}}||i| _| j \}}||i| _|| j|< d S )N)	unittestTestCase__init__r   copy	referencepopitemother	inmapping)r   argskwr   r   r
   r
   r   r      s    

z!BasicTestMappingProtocol.__init__c                s    }t|}j  |kr(|}x&j D ]\}} | | q4W tj d 	t
 fdd t|d t tj xjD ]}|  qW xjD ]}|  qW ||    |   | |rd  s&d fdd}|t  t  j  |t t  j  |t  t  j  |t  t  j  tt  \}}ttj \} |||  ||   d S )Nr   c                  s     S )Nr
   r
   )dknownkeyr
   r   <lambda>6       z4BasicTestMappingProtocol.test_read.<locals>.<lambda>z#Empty mapping must compare to Falsez!Full mapping must compare to Truec                sV     t| d   t| d t| }  t|t|  koJt|kn   d S )N__next____iter__)
assertTruehasattrlistset)iterlstrefr   )r   r
   r   check_iterandlistH   s    z=BasicTestMappingProtocol.test_read.<locals>.check_iterandlist)r   dictr   r   r   assertEqualr(   r   keysassertRaisesKeyErrorlenassertInassertNotInassertNotEqualfailr*   valuesnextget)r   pp1r   r   kr-   
knownvaluer
   )r    r!   r   r   	test_read+   sH     
 
z"BasicTestMappingProtocol.test_readc                s  |   x.| j D ] \ }| < |   | qW x.| j D ]   = | t fdd qDW |   | j | t| j t	 }|   | | t| j | 
| j}tt| \ }tt| j \}}| | || | |  | | |||| | || | | ||| | || | t|j| d}|||< | |||| | || | |||| | \ }|  | | || j   |   | tj d S )Nc                  s     S )Nr
   r
   )r   r;   r
   r   r"   d   r#   z5BasicTestMappingProtocol.test_write.<locals>.<lambda>i  )r   r   r   r/   r0   r1   r2   updater.   r(   r   r9   r*   r   
setdefaultpopr5   r   )r   r   r   r    r!   r>   defaultr
   )r   r;   r   
test_write[   sD    
z#BasicTestMappingProtocol.test_writec             C   s   |  |  |   d S )N)r/   r   )r   r
   r
   r   test_constructor   s    z)BasicTestMappingProtocol.test_constructorc             C   sJ   |  |    |  | j |  t|  dk |  t| jdk d S )NFT)r&   r   r   bool)r   r
   r
   r   	test_bool   s    z"BasicTestMappingProtocol.test_boolc             C   sr   |   }| t| g  | j}| t| j d |  | t| j d |  | 	t
|jd  d S )Nr   )r   r/   r(   r0   r   r4   r   r5   r   r1   	TypeError)r   r    r
   r
   r   	test_keys   s    z"BasicTestMappingProtocol.test_keysc             C   s0   |   }| t| g  | t|jd  d S )N)r   r/   r(   r8   r1   rH   )r   r    r
   r
   r   test_values   s    z$BasicTestMappingProtocol.test_valuesc             C   s0   |   }| t| g  | t|jd  d S )N)r   r/   r(   r   r1   rH   )r   r    r
   r
   r   
test_items   s    z#BasicTestMappingProtocol.test_itemsc             C   s   |   }| t|d d S )Nr   )r   r/   r3   )r   r    r
   r
   r   test_len   s    z!BasicTestMappingProtocol.test_lenc             C   sD   | j }| |t| j d  t| j d  | t|j d S )Nr   )	r   r/   r(   r   r0   r8   r1   rH   __getitem__)r   r    r
   r
   r   test_getitem   s    z%BasicTestMappingProtocol.test_getitemc                s  |   }|| j | t| t| j  |   }|  | ||    |   }|| j  | t| t| j  |   }|| j  | t| t| j  | ttf|jd | G fddd}|	  ||  t
| }t
| j }| || G dd dt |   }G  fddd}|  |j|  |	  G  fddd}|  |j|  G  fd	dd}|  |j|  |   }G  fd
ddt}|  |j|  | t|jdg d S )N*   c                   s(   e Zd Z fddZdd Zdd ZdS )z<BasicTestMappingProtocol.test_update.<locals>.SimpleUserDictc                s    j | _d S )N)r   r    )r   )	outerselfr
   r   r      s    zEBasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.__init__c             S   s
   | j  S )N)r    r0   )r   r
   r
   r   r0      s    zABasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.keysc             S   s
   | j | S )N)r    )r   ir
   r
   r   rM      s    zHBasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.__getitem__N)__name__
__module____qualname__r   r0   rM   r
   )rP   r
   r   SimpleUserDict   s   rU   c               @   s   e Zd ZdS )z1BasicTestMappingProtocol.test_update.<locals>.ExcN)rR   rS   rT   r
   r
   r
   r   Exc   s    rV   c                   s   e Zd Z fddZdS )z=BasicTestMappingProtocol.test_update.<locals>.FailingUserDictc                s    d S )Nr
   )r   )rV   r
   r   r0      s    zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keysN)rR   rS   rT   r0   r
   )rV   r
   r   FailingUserDict   s   rW   c                   s    e Zd Z fddZdd ZdS )z=BasicTestMappingProtocol.test_update.<locals>.FailingUserDictc                s   G  fddd}| S )Nc                   s(   e Zd Zdd Zdd Z fddZdS )zUBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc             S   s
   d| _ d S )Nr   )rQ   )r   r
   r
   r   r      s    z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__c             S   s   | S )Nr
   )r   r
   r
   r   r%      s    z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__c                s   | j rd| _ dS  d S )Nr   a)rQ   )r   )rV   r
   r   r$      s    z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__N)rR   rS   rT   r   r%   r$   r
   )rV   r
   r   	BogonIter   s   rY   r
   )r   rY   )rV   r
   r   r0      s    
zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keysc             S   s   |S )Nr
   )r   r   r
   r
   r   rM      s    zIBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.__getitem__N)rR   rS   rT   r0   rM   r
   )rV   r
   r   rW      s   c                   s    e Zd Zdd Z fddZdS )z=BasicTestMappingProtocol.test_update.<locals>.FailingUserDictc             S   s   G dd d}| S )Nc               @   s$   e Zd Zdd Zdd Zdd ZdS )zUBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc             S   s   t d| _d S )NrX   )ordrQ   )r   r
   r
   r   r      s    z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__c             S   s   | S )Nr
   )r   r
   r
   r   r%      s    z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__c             S   s2   | j tdkr*t| j }|  j d7  _ |S td S )Nzr   )rQ   rZ   chrStopIteration)r   Zrtnr
   r
   r   r$      s
    
z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__N)rR   rS   rT   r   r%   r$   r
   r
   r
   r   rY      s   rY   r
   )r   rY   r
   r
   r   r0      s    zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keysc                s    d S )Nr
   )r   r   )rV   r
   r   rM      s    zIBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.__getitem__N)rR   rS   rT   r0   rM   r
   )rV   r
   r   rW      s   c                   s    e Zd Zdd Z fddZdS )z4BasicTestMappingProtocol.test_update.<locals>.badseqc             S   s   | S )Nr
   )r   r
   r
   r   r%     s    z=BasicTestMappingProtocol.test_update.<locals>.badseq.__iter__c                s
     d S )Nr
   )r   )rV   r
   r   r$     s    z=BasicTestMappingProtocol.test_update.<locals>.badseq.__next__N)rR   rS   rT   r%   r$   r
   )rV   r
   r   badseq  s   r^   )r   r   r   )r   r@   r   r/   r(   r   r1   rH   AttributeErrorclearsortedr   	Exceptionobject
ValueError)r   r    rU   i1i2rW   r^   r
   )rV   rP   r   test_update   sB    z$BasicTestMappingProtocol.test_updatec             C   s  |   }| |t| j d d k | |t| j d dd | j}| |t| j d d k | |t| j d dd | |t| j d t| j	 d  | |t| j d dt| j	 d  | 
t|j | 
t|jd d d  d S )Nr   r   )r   r&   r:   r(   r   r0   r/   r   r   r8   r1   rH   )r   r    r
   r
   r   test_get  s    """"z!BasicTestMappingProtocol.test_getc             C   s   |   }| t|j d S )N)r   r1   rH   rA   )r   r    r
   r
   r   test_setdefault  s    z(BasicTestMappingProtocol.test_setdefaultc             C   s*   |   }| t|j | t|jd d S )NrO   )r   r1   r2   r   rH   )r   r    r
   r
   r   test_popitem   s    z%BasicTestMappingProtocol.test_popitemc             C   sz   |   }t| j d \}}|||< | t|jt| j d  | 	||| | 	t
|d | t|j| d S )Nr   )r   r(   r   r   r1   r2   rB   r   r0   r/   r3   )r   r    r=   vr
   r
   r   test_pop%  s    z!BasicTestMappingProtocol.test_pop)rR   rS   rT   r   r   r   r   r   r?   rD   rE   rG   rI   rJ   rK   rL   rN   rg   rh   ri   rj   rl   r
   r
   r
   r   r      s&   0*ar   c               @   s   e 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d Zdd Zdd Zdd Zdd  Zd!S )"TestMappingProtocolc             C   s@   t |  | |  |  k	 | | jdddddd d S )Nr   r   )r   y)r   rE   r&   r   r/   r   )r   r
   r
   r   rE   2  s    
z$TestMappingProtocol.test_constructorc             C   sd   t |  | |    | | ddi | t|  dk | t| ddidk d S )Nr   rn   FT)r   rG   r&   r   r   rF   )r   r
   r
   r   rG   7  s
    
zTestMappingProtocol.test_boolc             C   sf   t |  |  }| t| g  | ddd}| }| d| | d| | d| d S )Nr   r   )rX   brX   ro   c)	r   rI   r   r/   r(   r0   r   r4   r5   )r   r    r=   r
   r
   r   rI   >  s    
zTestMappingProtocol.test_keysc             C   s2   t |  | ddi}| t| dg d S )Nr   r   )r   rJ   r   r/   r(   r8   )r   r    r
   r
   r   rJ   H  s    
zTestMappingProtocol.test_valuesc             C   s2   t |  | ddi}| t| dg d S )Nr   r   )r   r   )r   rK   r   r/   r(   r   )r   r    r
   r
   r   rK   M  s    
zTestMappingProtocol.test_itemsc             C   sv   |   }| d| | d|k | d|k | ddd}| d| | d| | d| | t|j d S )NrX   r   r   )rX   ro   ro   rp   )r   r5   r&   r   r4   r1   rH   __contains__)r   r    r
   r
   r   test_containsS  s    z!TestMappingProtocol.test_containsc             C   s.   t |  | ddd}| t|d d S )Nr   r   )rX   ro   )r   rL   r   r/   r3   )r   r    r
   r
   r   rL   _  s    
zTestMappingProtocol.test_lenc             C   s   t |  | ddd}| |d d | |d d d|d< d|d< | |d d | |d d |d= | |ddd	 | t|j d S )
Nr   r   )rX   ro   rX   ro   r   rp      )rX   rp   )r   rN   r   r/   r1   rH   rM   )r   r    r
   r
   r   rN   d  s    
z TestMappingProtocol.test_getitemc             C   s:   |  dddd}|  | |i  | t|jd  d S )Nr   r   r   )r   r   r   )r   r`   r/   r1   rH   )r   r    r
   r
   r   
test_clearr  s    zTestMappingProtocol.test_clearc             C   s  t |  |  }|ddi |ddi |dddd | |dddd |  | |dddd |  }|jdd |jdd |jdddd	 | |dddd	 |  }|d
dg | |ddd |  }|jd
dgddd | |ddd | ddd}|| dddd  | |ddddd G dd d}|  ||  | |dddd d S )Nr   d   r      r   )r   r   r   )r   )rn   )r   rn   r[   )r   ru   )rn   rv   )r   rn   rs   )r   r      )r   r      )r   r   r   rx   c               @   s$   e Zd Zdd Zdd Zdd ZdS )z7TestMappingProtocol.test_update.<locals>.SimpleUserDictc             S   s   dddd| _ d S )Nr   r   r   )r   r   r   )r    )r   r
   r
   r   r     s    z@TestMappingProtocol.test_update.<locals>.SimpleUserDict.__init__c             S   s
   | j  S )N)r    r0   )r   r
   r
   r   r0     s    z<TestMappingProtocol.test_update.<locals>.SimpleUserDict.keysc             S   s
   | j | S )N)r    )r   rQ   r
   r
   r   rM     s    zCTestMappingProtocol.test_update.<locals>.SimpleUserDict.__getitem__N)rR   rS   rT   r   r0   rM   r
   r
   r
   r   rU     s   rU   )r   rg   r   r@   r/   r   r   r`   )r   r    rU   r
   r
   r   rg   y  s4    
zTestMappingProtocol.test_updatec       	         s
  |  | jdd d d d |  }| |d|k	 |  |dd d d d |  |ddddd |  |g i  dd }|  || dd i | ti jd G d	d
 d
| j}|  |ddd i |  | ddd i | |dj|k | | dj|k | t|d|k G dd d| j}|d}|  |d d d | 	|t
j | ttj G dd dt G  fddd| j}|  |jdg G  fdddt}|  | jj|  G  fddd| j}|  |jdg d S )Nabc)rX   ro   rp   )rs   rx   r   c               s   s
   dV  d S )Nr   r
   r
   r
   r
   r   g  s    z,TestMappingProtocol.test_fromkeys.<locals>.gr   r   c               @   s   e Zd ZdS )z3TestMappingProtocol.test_fromkeys.<locals>.dictlikeN)rR   rS   rT   r
   r
   r
   r   dictlike  s    r{   rX   c               @   s   e Zd Zdd ZdS )z1TestMappingProtocol.test_fromkeys.<locals>.mydictc             S   s   t  S )N)collectionsUserDict)clsr
   r
   r   __new__  s    z9TestMappingProtocol.test_fromkeys.<locals>.mydict.__new__N)rR   rS   rT   r   r
   r
   r
   r   mydict  s   r   ab)rX   ro   c               @   s   e Zd ZdS )z.TestMappingProtocol.test_fromkeys.<locals>.ExcN)rR   rS   rT   r
   r
   r
   r   rV     s    rV   c                   s   e Zd Z fddZdS )z3TestMappingProtocol.test_fromkeys.<locals>.baddict1c                s
     d S )Nr
   )r   )rV   r
   r   r     s    z<TestMappingProtocol.test_fromkeys.<locals>.baddict1.__init__N)rR   rS   rT   r   r
   )rV   r
   r   baddict1  s   r   c                   s    e Zd Zdd Z fddZdS )z1TestMappingProtocol.test_fromkeys.<locals>.BadSeqc             S   s   | S )Nr
   )r   r
   r
   r   r%     s    z:TestMappingProtocol.test_fromkeys.<locals>.BadSeq.__iter__c                s
     d S )Nr
   )r   )rV   r
   r   r$     s    z:TestMappingProtocol.test_fromkeys.<locals>.BadSeq.__next__N)rR   rS   rT   r%   r$   r
   )rV   r
   r   BadSeq  s   r   c                   s   e Zd Z fddZdS )z3TestMappingProtocol.test_fromkeys.<locals>.baddict2c                s
     d S )Nr
   )r   r   r   )rV   r
   r   __setitem__  s    z?TestMappingProtocol.test_fromkeys.<locals>.baddict2.__setitem__N)rR   rS   rT   r   r
   )rV   r
   r   baddict2  s   r   )r/   r   fromkeysr   r&   r1   rH   	__class__typeassertIsInstancer|   r}   r.   rb   rc   )	r   r    rz   r{   r   udr   r   r   r
   )rV   r   test_fromkeys  s6    
z!TestMappingProtocol.test_fromkeysc             C   sh   |  dddd}| | dddd |  }| | | | | |j | t|jd  d S )Nr   r   r   )r   r   r   )r   r/   r   r   r   r   r1   rH   )r   r    r
   r
   r   	test_copy  s    zTestMappingProtocol.test_copyc             C   s   t |  |  }| |dd k | |ddd | ddd}| |dd k | |ddd | |dd | |ddd d S )Nrp   r   r   r   )rX   ro   rX   )r   rh   r   r&   r:   r/   r   )r   r    r
   r
   r   rh     s    
zTestMappingProtocol.test_getc             C   s   t |  |  }| |dd k |dg  | |dd k |dg d | |d d d |dg d | t|d d d S )Nkey0r   r   r   rs   r   )r   ri   r   r&   rA   appendr/   r3   )r   r    r
   r
   r   ri     s    
z#TestMappingProtocol.test_setdefaultc             C   s
  t |  xdD ]}xtdD ]}d| }|  }|  }x0t|D ]$}||t|< |dk rD||t|< qDW |dkr|| }xht|D ]\}|  \}}}	| |t| |  \}
}}| |t|
 | 	|dk o|	|k  qW | 	|  | 	|  qW qW d S )N)r      r   r   )
r   rj   ranger   reprr   r   r/   intr&   )r   copymodeZlog2sizesizerX   ro   rQ   kaZvataZkbZvbtbr
   r
   r   rj     s(    

z TestMappingProtocol.test_popitemc             C   sN   t |  |  }d\}}| |||| |||< | ||d| d S )N)ry   defr   )r   rl   r   r/   rB   )r   r    r=   rk   r
   r
   r   rl     s    
zTestMappingProtocol.test_popN)rR   rS   rT   rE   rG   rI   rJ   rK   rr   rL   rN   rt   rg   r   r   rh   ri   rj   rl   r
   r
   r
   r   rm   1  s    
./rm   c               @   sL   e 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S )TestHashMappingProtocolc                s   t |  G dd dt G  fdddt}|  }d|| < | t|jd G  fdddt}|  }| }d||< d	|_|  |j| d S )
Nc               @   s   e Zd ZdS )z1TestHashMappingProtocol.test_getitem.<locals>.ExcN)rR   rS   rT   r
   r
   r
   r   rV     s    rV   c                   s    e Zd Z fddZdd ZdS )z3TestHashMappingProtocol.test_getitem.<locals>.BadEqc                s
     d S )Nr
   )r   r   )rV   r
   r   __eq__  s    z:TestHashMappingProtocol.test_getitem.<locals>.BadEq.__eq__c             S   s   dS )N   r
   )r   r
   r
   r   __hash__!  s    z<TestHashMappingProtocol.test_getitem.<locals>.BadEq.__hash__N)rR   rS   rT   r   r   r
   )rV   r
   r   BadEq  s   r   rO      c                   s   e Zd ZdZ fddZdS )z5TestHashMappingProtocol.test_getitem.<locals>.BadHashFc                s   | j r  ndS d S )NrO   )r7   )r   )rV   r
   r   r   *  s    z>TestHashMappingProtocol.test_getitem.<locals>.BadHash.__hash__N)rR   rS   rT   r7   r   r
   )rV   r
   r   BadHash(  s   r   T)	rm   rN   rb   rc   r   r1   r2   rM   r7   )r   r   r    r   r   r
   )rV   r   rN     s    

z$TestHashMappingProtocol.test_getitemc             C   sJ   t |  G dd d| j}|d}| |d d d | |tj d S )Nc               @   s   e Zd Zdd ZdS )z5TestHashMappingProtocol.test_fromkeys.<locals>.mydictc             S   s   t  S )N)r|   r}   )r~   r
   r
   r   r   9  s    z=TestHashMappingProtocol.test_fromkeys.<locals>.mydict.__new__N)rR   rS   rT   r   r
   r
   r
   r   r   8  s   r   r   )rX   ro   )rm   r   r   r   r/   r   r|   r}   )r   r   r   r
   r
   r   r   6  s
    

z%TestHashMappingProtocol.test_fromkeysc                s^   t |  G dd dt G  fdddt}|  }| }d||< d|_|  |j| d S )Nc               @   s   e Zd ZdS )z-TestHashMappingProtocol.test_pop.<locals>.ExcN)rR   rS   rT   r
   r
   r
   r   rV   B  s    rV   c                   s   e Zd ZdZ fddZdS )z1TestHashMappingProtocol.test_pop.<locals>.BadHashFc                s   | j r  ndS d S )NrO   )r7   )r   )rV   r
   r   r   F  s    z:TestHashMappingProtocol.test_pop.<locals>.BadHash.__hash__N)rR   rS   rT   r7   r   r
   )rV   r
   r   r   D  s   r   rO   T)rm   rl   rb   rc   r   r7   r1   rB   )r   r   r    r   r
   )rV   r   rl   ?  s    
z TestHashMappingProtocol.test_popc             C   sR   |   }d|d< yx|D ]}d||d < qW W n tk
rB   Y nX | d d S )Nr   z7changing dict size during iteration doesn't raise Error)r   RuntimeErrorr7   )r   r    rQ   r
   r
   r   test_mutatingiterationR  s    
z.TestHashMappingProtocol.test_mutatingiterationc                s   |   }| t|d d|d< | t|d |   }||d< | t|d G dd dt G  fdd	d	t}| d| i}|  t| d S )
Nz{}r   r   z{1: 2}z
{1: {...}}c               @   s   e Zd ZdS )z.TestHashMappingProtocol.test_repr.<locals>.ExcN)rR   rS   rT   r
   r
   r
   r   rV   f  s    rV   c                   s   e Zd Z fddZdS )z2TestHashMappingProtocol.test_repr.<locals>.BadReprc                s
     d S )Nr
   )r   )rV   r
   r   __repr__i  s    z;TestHashMappingProtocol.test_repr.<locals>.BadRepr.__repr__N)rR   rS   rT   r   r
   )rV   r
   r   BadReprh  s   r   )r   r/   r   rb   rc   r   r1   )r   r    r   r
   )rV   r   	test_repr]  s    z!TestHashMappingProtocol.test_reprc             C   sH   |   }x,tt d D ]}|}|   }||d< qW | tt| d S )Nru   r   )r   r   sysgetrecursionlimitr1   RecursionErrorr   )r   r    rQ   Zd0r
   r
   r   test_repr_deepo  s    z&TestHashMappingProtocol.test_repr_deepc                s   |  |  |   |  | ddi| ddi G dd dtG fdddt |   di| ddi|  fdd | fd	d d S )
Nr   r   c               @   s   e Zd ZdS )z,TestHashMappingProtocol.test_eq.<locals>.ExcN)rR   rS   rT   r
   r
   r
   r   rV   |  s    rV   c                   s    e Zd Z fddZdd ZdS )z/TestHashMappingProtocol.test_eq.<locals>.BadCmpc                s
     d S )Nr
   )r   r   )rV   r
   r   r     s    z6TestHashMappingProtocol.test_eq.<locals>.BadCmp.__eq__c             S   s   dS )Nr   r
   )r   r
   r
   r   r     s    z8TestHashMappingProtocol.test_eq.<locals>.BadCmp.__hash__N)rR   rS   rT   r   r   r
   )rV   r
   r   BadCmp~  s   r   c                  s
     dkS )Nr   r
   r
   )r   r
   r   r"     r#   z1TestHashMappingProtocol.test_eq.<locals>.<lambda>c                  s    kS )Nr
   r
   )d1d2r
   r   r"     r#   )r/   r   r   rb   rc   r1   )r   r
   )r   rV   r   r   r   test_eqw  s    zTestHashMappingProtocol.test_eqc                s`   t |  G dd dt G  fdddt}|  }| }d||< d|_|  |j|g  d S )Nc               @   s   e Zd ZdS )z4TestHashMappingProtocol.test_setdefault.<locals>.ExcN)rR   rS   rT   r
   r
   r
   r   rV     s    rV   c                   s   e Zd ZdZ fddZdS )z8TestHashMappingProtocol.test_setdefault.<locals>.BadHashFc                s   | j r  ndS d S )NrO   )r7   )r   )rV   r
   r   r     s    zATestHashMappingProtocol.test_setdefault.<locals>.BadHash.__hash__N)rR   rS   rT   r7   r   r
   )rV   r
   r   r     s   r   rO   T)rm   ri   rb   rc   r   r7   r1   rA   )r   r   r    r   r
   )rV   r   ri     s    
z'TestHashMappingProtocol.test_setdefaultN)rR   rS   rT   rN   r   rl   r   r   r   r   ri   r
   r
   r
   r   r     s   	r   )r   r|   r   r   r   rm   r   r
   r
   r
   r   <module>   s     , h