a
    zeWW                     @   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         )1Zkey1Zkey2 selfr	   r	   (/usr/lib/python3.9/test/mapping_tests.py
_reference   s    z#BasicTestMappingProtocol._referencec                 C   s   |   S )zReturn an empty mapping object)	type2testr
   r	   r	   r   _empty_mapping   s    z'BasicTestMappingProtocol._empty_mappingc                 C   s&   |   }| D ]\}}|||< q|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   sf   t jj| g|R i | |   | _| 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  |u r(|}j D ]\}} | | q2tj d 	t
 fdd t|d t tj jD ]}|  qjD ]}|  q||    |   | |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 r   r	   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)iterZ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assertNotInZassertNotEqualfailr+   valuesnextget)r   pZp1r   r   kr-   
knownvaluer	   )r!   r"   r   r   	test_read+   sJ    

z"BasicTestMappingProtocol.test_readc                    s  |   | j D ] \ }| < |   | q| j D ]   = | t fdd q>|   | j | t| j t	 }|   | | t| j | 
| j}tt| \ }tt| j \}}| | || | |  | | |||| | || | | ||| | || | t|j| d}|||< | |||| | || | |||| | \ }|  | | || j   |   | tj d S )Nc                      s     S r   r	   r	   r   r:   r	   r   r#   d   r$   z5BasicTestMappingProtocol.test_write.<locals>.<lambda>i  )r   r   r   r/   r0   r1   r2   updater.   r)   r   r8   r+   r   
setdefaultpopr5   r   )r   r   r   r!   r"   r<   defaultr	   r>   r   
test_write[   sD    
z#BasicTestMappingProtocol.test_writec                 C   s   |  |  |   d S r   )r/   r   r
   r	   r	   r   test_constructor   s    z)BasicTestMappingProtocol.test_constructorc                 C   sJ   |  |    |  | j |  t|  du  |  t| jdu  d S )NFT)r'   r   r   boolr
   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 r   )r   r/   r)   r7   r1   rH   rI   r	   r	   r   test_values   s    z$BasicTestMappingProtocol.test_valuesc                 C   s0   |   }| t| g  | t|jd  d S r   )r   r/   r)   r   r1   rH   rI   r	   r	   r   
test_items   s    z#BasicTestMappingProtocol.test_itemsc                 C   s   |   }| t|d d S rG   )r   r/   r3   rI   r	   r	   r   test_len   s    z!BasicTestMappingProtocol.test_lenc                 C   sD   | j }| |t| j d  t| j d  | t|j d S rG   )	r   r/   r)   r   r0   r7   r1   rH   __getitem__rI   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 r   )r   r!   r
   	outerselfr	   r   r      s    zEBasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.__init__c                 S   s
   | j  S r   r!   r0   r
   r	   r	   r   r0      s    zABasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.keysc                 S   s
   | j | S r   r!   r   ir	   r	   r   rN      s    zHBasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.__getitem__N__name__
__module____qualname__r   r0   rN   r	   rQ   r	   r   SimpleUserDict   s   r[   c                   @   s   e Zd ZdS )z1BasicTestMappingProtocol.test_update.<locals>.ExcNrX   rY   rZ   r	   r	   r	   r   Exc   r$   r]   c                       s   e Zd Z fddZdS )=BasicTestMappingProtocol.test_update.<locals>.FailingUserDictc                    s    d S r   r	   r
   r]   r	   r   r0      s    BBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keysN)rX   rY   rZ   r0   r	   r_   r	   r   FailingUserDict   s   ra   c                       s    e Zd Z fddZdd ZdS )r^   c                    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 )UBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc                 S   s
   d| _ d S Nr   rV   r
   r	   r	   r   r      s    ^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__c                 S   s   | S r   r	   r
   r	   r	   r   r&      s    ^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__c                    s   | j rd| _ dS  d S )Nr   ard   r
   r_   r	   r   r%      s    ^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__NrX   rY   rZ   r   r&   r%   r	   r_   r	   r   	BogonIter   s   rj   r	   r   rj   r_   r	   r   r0      s    
r`   c                 S   s   |S r   r	   r   r   r	   r	   r   rN      s    IBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.__getitem__NrX   rY   rZ   r0   rN   r	   r_   r	   r   ra      s   c                       s    e Zd Zdd Z fddZdS )r^   c                 S   s   G dd d}| S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )rb   c                 S   s   t d| _d S )Nrg   )ordrV   r
   r	   r	   r   r      s    re   c                 S   s   | S r   r	   r
   r	   r	   r   r&      s    rf   c                 S   s2   | j tdkr*t| j }|  j d7  _ |S td S )Nzr   )rV   ro   chrStopIteration)r   Zrtnr	   r	   r   r%      s
    
rh   Nri   r	   r	   r	   r   rj      s   rj   r	   rk   r	   r	   r   r0      s    r`   c                    s    d S r   r	   rl   r_   r	   r   rN      s    rm   Nrn   r	   r_   r	   r   ra      s   c                       s    e Zd Zdd Z fddZdS )z4BasicTestMappingProtocol.test_update.<locals>.badseqc                 S   s   | S r   r	   r
   r	   r	   r   r&     s    z=BasicTestMappingProtocol.test_update.<locals>.badseq.__iter__c                    s
     d S r   r	   r
   r_   r	   r   r%     s    z=BasicTestMappingProtocol.test_update.<locals>.badseq.__next__NrX   rY   rZ   r&   r%   r	   r_   r	   r   badseq  s   rt   r   )r   r?   r   r/   r)   r   r1   rH   AttributeErrorclearsortedr   	Exceptionobject
ValueError)r   r!   r[   Zi1Zi2ra   rt   r	   )r]   rR   r   test_update   sB    z$BasicTestMappingProtocol.test_updatec                 C   s  |   }| |t| j d d u  | |t| j d dd | j}| |t| j d d u  | |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'   r9   r)   r   r0   r/   r   r   r7   r1   rH   rI   r	   r	   r   test_get  s    """"z!BasicTestMappingProtocol.test_getc                 C   s   |   }| t|j d S r   )r   r1   rH   r@   rI   r	   r	   r   test_setdefault  s    z(BasicTestMappingProtocol.test_setdefaultc                 C   s*   |   }| t|j | t|jd d S NrP   )r   r1   r2   r   rH   rI   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 rG   )r   r)   r   r   r1   r2   rA   r   r0   r/   r3   r   r!   r;   vr	   r	   r   test_pop%  s    z!BasicTestMappingProtocol.test_pop)rX   rY   rZ   r   r   r   r   r   r=   rC   rD   rF   rJ   rK   rL   rM   rO   r{   r|   r}   r   r   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 |  | |  |  u | | jdddddd d S )Nr   r   r   y)r   rD   r'   r   r/   r   r
   r	   r	   r   rD   2  s    
z$TestMappingProtocol.test_constructorc                 C   sd   t |  | |    | | ddi | t|  du  | t| ddidu  d S )Nr   r   FT)r   rF   r'   r   r   rE   r
   r	   r	   r   rF   7  s
    
zTestMappingProtocol.test_boolc                 C   sf   t |  |  }| t| g  | ddd}| }| d| | d| | d| d S )Nr   r   rg   brg   r   c)	r   rJ   r   r/   r)   r0   r   r4   r5   )r   r!   r;   r	   r	   r   rJ   >  s    
zTestMappingProtocol.test_keysc                 C   s2   t |  | ddi}| t| dg d S )Nr   r   )r   rK   r   r/   r)   r7   rI   r	   r	   r   rK   H  s    
zTestMappingProtocol.test_valuesc                 C   s2   t |  | ddi}| t| dg d S )Nr   r   r   r   )r   rL   r   r/   r)   r   rI   r	   r	   r   rL   M  s    
zTestMappingProtocol.test_itemsc                 C   sv   |   }| d| | d|v | d|v | ddd}| d| | d| | d| | t|j d S )Nrg   r   r   r   r   r   )r   r5   r'   r   r4   r1   rH   __contains__rI   r	   r	   r   test_containsS  s    z!TestMappingProtocol.test_containsc                 C   s.   t |  | ddd}| t|d d S )Nr   r   r   )r   rM   r   r/   r3   rI   r	   r	   r   rM   _  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   r   rg   r   r   r      )rg   r   )r   rO   r   r/   r1   rH   rN   rI   r	   r	   r   rO   d  s    
z TestMappingProtocol.test_getitemc                 C   s:   |  dddd}|  | |i  | t|jd  d S Nr   r   r   r   )r   rv   r/   r1   rH   rI   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   r   rp   )r   r   )r   r   r   r   r      )r   r      )r   r   r   r   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 r   rT   r
   r	   r	   r   r     s    z@TestMappingProtocol.test_update.<locals>.SimpleUserDict.__init__c                 S   s
   | j  S r   rS   r
   r	   r	   r   r0     s    z<TestMappingProtocol.test_update.<locals>.SimpleUserDict.keysc                 S   s
   | j | S r   rT   rU   r	   r	   r   rN     s    zCTestMappingProtocol.test_update.<locals>.SimpleUserDict.__getitem__NrW   r	   r	   r	   r   r[     s   r[   )r   r{   r   r?   r/   r   r   rv   )r   r!   r[   r	   r	   r   r{   y  s4    
zTestMappingProtocol.test_updatec           	         s
  |  | jdd d d d |  }| |d|u |  |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|u  | | dj|u  | t|d|u  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)rg   r   r   )r   r   r   c                   s   s
   dV  d S rc   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>.dictlikeNr\   r	   r	   r	   r   dictlike  r$   r   rg   c                   @   s   e Zd Zdd ZdS )z1TestMappingProtocol.test_fromkeys.<locals>.mydictc                 S   s   t  S r   collectionsUserDictclsr	   r	   r   __new__  s    z9TestMappingProtocol.test_fromkeys.<locals>.mydict.__new__NrX   rY   rZ   r   r	   r	   r	   r   mydict  s   r   abr   c                   @   s   e Zd ZdS )z.TestMappingProtocol.test_fromkeys.<locals>.ExcNr\   r	   r	   r	   r   r]     r$   r]   c                       s   e Zd Z fddZdS )z3TestMappingProtocol.test_fromkeys.<locals>.baddict1c                    s
     d S r   r	   )r   r   kwargsr_   r	   r   r     s    z<TestMappingProtocol.test_fromkeys.<locals>.baddict1.__init__N)rX   rY   rZ   r   r	   r_   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 r   r	   r
   r	   r	   r   r&     s    z:TestMappingProtocol.test_fromkeys.<locals>.BadSeq.__iter__c                    s
     d S r   r	   r
   r_   r	   r   r%     s    z:TestMappingProtocol.test_fromkeys.<locals>.BadSeq.__next__Nrs   r	   r_   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 r   r	   )r   r   r   r_   r	   r   __setitem__  s    z?TestMappingProtocol.test_fromkeys.<locals>.baddict2.__setitem__N)rX   rY   rZ   r   r	   r_   r	   r   baddict2  s   r   )r/   r   fromkeysr   r'   r1   rH   	__class__typeassertIsInstancer   r   r.   rx   ry   )	r   r!   r   r   r   udr   r   r   r	   r_   r   test_fromkeys  s6    
z!TestMappingProtocol.test_fromkeysc                 C   sh   |  dddd}| | dddd |  }| | | | | |j | t|jd  d S r   )r   r/   r   r   r   r   r1   rH   rI   r	   r	   r   	test_copy  s    zTestMappingProtocol.test_copyc                 C   s   t |  |  }| |dd u  | |ddd | ddd}| |dd u  | |ddd | |dd | |ddd d S )Nr   r   r   r   r   rg   )r   r|   r   r'   r9   r/   r   rI   r	   r	   r   r|     s    
zTestMappingProtocol.test_getc                 C   s   t |  |  }| |dd u  |dg  | |dd u  |dg d | |d d d |dg d | t|d d d S )NZkey0r   r   r   r   r   )r   r}   r   r'   r@   appendr/   r3   rI   r	   r	   r   r}     s    
z#TestMappingProtocol.test_setdefaultc                 C   s   t |  dD ]}tdD ]}d| }|  }|  }t|D ]$}||t|< |dk r>||t|< q>|dkrt| }t|D ]\}|  \}}}	| |t| |  \}
}}| |t|
 | 	|dk o|	|k  q|| 	|  | 	|  qqd S )N)r      r   r   )
r   r   ranger   reprr   r   r/   intr'   )r   copymodeZlog2sizesizerg   r   rV   kavataZkbZvbtbr	   r	   r   r     s(    
z TestMappingProtocol.test_popitemc                 C   sN   t |  |  }d\}}| |||| |||< | ||d| d S )N)r   defr   )r   r   r   r/   rA   r   r	   r	   r   r     s    
zTestMappingProtocol.test_popN)rX   rY   rZ   rD   rF   rJ   rK   rL   r   rM   rO   r   r{   r   r   r|   r}   r   r   r	   r	   r	   r   r   1  s    
./r   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>.ExcNr\   r	   r	   r	   r   r]     r$   r]   c                       s    e Zd Z fddZdd ZdS )z3TestHashMappingProtocol.test_getitem.<locals>.BadEqc                    s
     d S r   r	   r   r   r_   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rX   rY   rZ   r   r   r	   r_   r	   r   BadEq  s   r   rP      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 r~   r6   r
   r_   r	   r   r   *  s    z>TestHashMappingProtocol.test_getitem.<locals>.BadHash.__hash__NrX   rY   rZ   r6   r   r	   r_   r	   r   BadHash(  s   r   T)	r   rO   rx   ry   r   r1   r2   rN   r6   )r   r   r!   r   r   r	   r_   r   rO     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 r   r   r   r	   r	   r   r   9  s    z=TestHashMappingProtocol.test_fromkeys.<locals>.mydict.__new__Nr   r	   r	   r	   r   r   8  s   r   r   r   )r   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>.ExcNr\   r	   r	   r	   r   r]   B  r$   r]   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 r~   r   r
   r_   r	   r   r   F  s    z:TestHashMappingProtocol.test_pop.<locals>.BadHash.__hash__Nr   r	   r_   r	   r   r   D  s   r   rP   T)r   r   rx   ry   r   r6   r1   rA   r   r   r!   r   r	   r_   r   r   ?  s    
z TestHashMappingProtocol.test_popc                 C   s`   |   }d|d< z8d}|D ]*}d||d < |dkr<| d |d7 }qW n tyZ   Y n0 d S )Nr   r   z7changing dict size during iteration doesn't raise Error)r   r6   RuntimeError)r   r!   countrV   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>.ExcNr\   r	   r	   r	   r   r]   h  r$   r]   c                       s   e Zd Z fddZdS )z2TestHashMappingProtocol.test_repr.<locals>.BadReprc                    s
     d S r   r	   r
   r_   r	   r   __repr__k  s    z;TestHashMappingProtocol.test_repr.<locals>.BadRepr.__repr__N)rX   rY   rZ   r   r	   r_   r	   r   BadReprj  s   r   )r   r/   r   rx   ry   r   r1   )r   r!   r   r	   r_   r   	test_repr_  s    z!TestHashMappingProtocol.test_reprc                 C   sD   |   }tt d D ]}|}|   }||d< q| tt| d S )Nr   r   )r   r   sysgetrecursionlimitr1   RecursionErrorr   )r   r!   rV   Zd0r	   r	   r   test_repr_deepq  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>.ExcNr\   r	   r	   r	   r   r]   ~  r$   r]   c                       s    e Zd Z fddZdd ZdS )z/TestHashMappingProtocol.test_eq.<locals>.BadCmpc                    s
     d S r   r	   r   r_   r	   r   r     s    z6TestHashMappingProtocol.test_eq.<locals>.BadCmp.__eq__c                 S   s   dS rc   r	   r
   r	   r	   r   r     s    z8TestHashMappingProtocol.test_eq.<locals>.BadCmp.__hash__Nr   r	   r_   r	   r   BadCmp  s   r   c                      s
     dkS rc   r	   r	   )r   r	   r   r#     r$   z1TestHashMappingProtocol.test_eq.<locals>.<lambda>c                      s    kS r   r	   r	   )d1d2r	   r   r#     r$   )r/   r   r   rx   ry   r1   r
   r	   )r   r]   r   r   r   test_eqy  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>.ExcNr\   r	   r	   r	   r   r]     r$   r]   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 r~   r   r
   r_   r	   r   r     s    zATestHashMappingProtocol.test_setdefault.<locals>.BadHash.__hash__Nr   r	   r_   r	   r   r     s   r   rP   T)r   r}   rx   ry   r   r6   r1   r@   r   r	   r_   r   r}     s    
z'TestHashMappingProtocol.test_setdefaultN)rX   rY   rZ   rO   r   r   r   r   r   r   r}   r	   r	   r	   r   r     s   	r   )r   r   r   r   r   r   r   r	   r	   r	   r   <module>   s     , h