B
    18\	                 @   s   d dl Z d dlZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 G dd dej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jZedkre  dS )    N)supportc               @   sj  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!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-e.j/dWdX Z0e.j/dYdZ Z1e.j/d[d\ Z2d]d^ Z3e.j/d_d` Z4e.j/dadb Z5e.j/dcdd Z6e.j/dedf Z7e.j/dgdh Z8e.j/didj Z9dkdl Z:dmdn Z;dodp Z<dqdr Z=dsdt Z>dudv Z?dwdx Z@dydz ZAd{d| ZBd}d~ ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdS )DictTestc          
   C   st   G dd dt }x^ddi|ddifD ]F}| t t f | W d Q R X | t i jf | W d Q R X q&W d S )Nc               @   s   e Zd ZdS )z7DictTest.test_invalid_keyword_arguments.<locals>.CustomN)__name__
__module____qualname__ r   r   R/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_dict.pyCustom   s   r	         )dictassertRaises	TypeErrorupdate)selfr	   invalidr   r   r   test_invalid_keyword_arguments   s    z'DictTest.test_invalid_keyword_argumentsc             C   s    |  t i  | t i  d S )N)assertEqualr   assertIsNot)r   r   r   r   test_constructor   s    zDictTest.test_constructorc             C   sb   x\dD ]T}dd t |D }t| dd |D }dd| d }| t|t| qW d S )	N)r   r
         i  c             S   s$   g | ]}d  ttjd|fqS )    )joinrandomsamplestringascii_letters).0ir   r   r   
<listcomp>!   s   z5DictTest.test_literal_constructor.<locals>.<listcomp>c             s   s   | ]\}}d  ||V  qdS )z
{!r}: {:d}N)format)r   kvr   r   r   	<genexpr>$   s    z4DictTest.test_literal_constructor.<locals>.<genexpr>{z, })ranger   shuffler   r   evalr   )r   nitemsZformatted_itemsZdictliteralr   r   r   test_literal_constructor   s    

z!DictTest.test_literal_constructorc             C   sD   |  i  d | ddi |  ti d |  tddid d S )NTr
   r   F)assertIs
assertTruebool)r   r   r   r   	test_bool(   s    zDictTest.test_boolc             C   s   i }|  t| t  ddd}| }|  t|ddh | d| | d| | d| | d| | t|jd  |  ttdd d d S )Nr
   r   )abr2   r3   )r2   zdict_keys(['a']))r   setkeysassertInr   r   reprr   )r   dr#   r   r   r   	test_keys.   s    
zDictTest.test_keysc             C   sf   i }|  t| t  ddi}|  t| dh | t|jd  |  ttdd d d S )Nr
   r   )r2   zdict_values([1]))r   r4   valuesr   r   r7   r   )r   r8   r   r   r   test_values;   s    zDictTest.test_valuesc             C   sf   i }|  t| t  ddi}|  t| dh | t|jd  |  ttdd d d S )Nr
   r   )r
   r   )r2   zdict_items([('a', 1)]))r   r4   r,   r   r   r7   r   )r   r8   r   r   r   
test_itemsC   s    zDictTest.test_itemsc             C   sl   i }|  d| | d|k | d|k ddd}| d| | d| |  d| | t|j d S )Nr2   r
   r   )r2   r3   r3   c)assertNotInassertFalser/   r6   r   r   __contains__)r   r8   r   r   r   test_containsL   s    
zDictTest.test_containsc             C   s2   i }|  t|d ddd}|  t|d d S )Nr   r
   r   )r2   r3   )r   len)r   r8   r   r   r   test_lenX   s    
zDictTest.test_lenc                s   ddd}|  |d d |  |d d d|d< d|d< |  |d d |  |d d |d= |  |ddd	 | t|j G  fd
ddt}i }d|| < | t|jd G dd dt G  fdddt}| }d||< d|_|  |j| d S )Nr
   r   )r2   r3   r2   r3      r=      )r2   r=   c                   s    e Zd Z fddZdd ZdS )z$DictTest.test_getitem.<locals>.BadEqc                s
     d S )Nr   )r   other)Excr   r   __eq__l   s    z+DictTest.test_getitem.<locals>.BadEq.__eq__c             S   s   dS )N   r   )r   r   r   r   __hash__n   s    z-DictTest.test_getitem.<locals>.BadEq.__hash__N)r   r   r   rH   rJ   r   )rG   r   r   BadEqk   s   rK   *      c               @   s   e Zd ZdS )z"DictTest.test_getitem.<locals>.ExcN)r   r   r   r   r   r   r   rG   u   s    rG   c                   s   e Zd ZdZ fddZdS )z&DictTest.test_getitem.<locals>.BadHashFc                s   | j r  ndS d S )NrL   )fail)r   )rG   r   r   rJ   y   s    z/DictTest.test_getitem.<locals>.BadHash.__hash__N)r   r   r   rN   rJ   r   )rG   r   r   BadHashw   s   rO   T)r   r   r   __getitem__objectKeyError	ExceptionrN   )r   r8   rK   rO   xr   )rG   r   test_getitem^   s(    

zDictTest.test_getitemc             C   s4   dddd}|   | |i  | t|j d  d S )Nr
   r   rD   )r
   r   rD   )clearr   r   r   )r   r8   r   r   r   
test_clear   s    zDictTest.test_clearc                sl  i }| ddi | ddi | dddd | |dddd |   | |dddd | ttf|j d  G dd d}|  | |  | |dddd 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}|  i j |  | ti j dg d S )Nr
   d   r      rD   )r
   r   rD   c               @   s$   e Zd Zdd Zdd Zdd ZdS )z,DictTest.test_update.<locals>.SimpleUserDictc             S   s   dddd| _ d S )Nr
   r   rD   )r
   r   rD   )r8   )r   r   r   r   __init__   s    z5DictTest.test_update.<locals>.SimpleUserDict.__init__c             S   s
   | j  S )N)r8   r5   )r   r   r   r   r5      s    z1DictTest.test_update.<locals>.SimpleUserDict.keysc             S   s
   | j | S )N)r8   )r   r    r   r   r   rP      s    z8DictTest.test_update.<locals>.SimpleUserDict.__getitem__N)r   r   r   rZ   r5   rP   r   r   r   r   SimpleUserDict   s   r[   c               @   s   e Zd ZdS )z!DictTest.test_update.<locals>.ExcN)r   r   r   r   r   r   r   rG      s    rG   c                   s   e Zd Z fddZdS )z-DictTest.test_update.<locals>.FailingUserDictc                s    d S )Nr   )r   )rG   r   r   r5      s    z2DictTest.test_update.<locals>.FailingUserDict.keysN)r   r   r   r5   r   )rG   r   r   FailingUserDict   s   r\   c                   s    e Zd Z fddZdd ZdS )z-DictTest.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 )zEDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc             S   s
   d| _ d S )Nr
   )r    )r   r   r   r   rZ      s    zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__c             S   s   | S )Nr   )r   r   r   r   __iter__   s    zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__c                s   | j rd| _ dS  d S )Nr   r2   )r    )r   )rG   r   r   __next__   s    zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__N)r   r   r   rZ   r]   r^   r   )rG   r   r   	BogonIter   s   r_   r   )r   r_   )rG   r   r   r5      s    
z2DictTest.test_update.<locals>.FailingUserDict.keysc             S   s   |S )Nr   )r   keyr   r   r   rP      s    z9DictTest.test_update.<locals>.FailingUserDict.__getitem__N)r   r   r   r5   rP   r   )rG   r   r   r\      s   c                   s    e Zd Zdd Z fddZdS )z-DictTest.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 )zEDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc             S   s   t d| _d S )Nr2   )ordr    )r   r   r   r   rZ      s    zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__c             S   s   | S )Nr   )r   r   r   r   r]      s    zNDictTest.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
   )r    ra   chrStopIteration)r   Zrtnr   r   r   r^      s
    
zNDictTest.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__N)r   r   r   rZ   r]   r^   r   r   r   r   r_      s   r_   r   )r   r_   r   r   r   r5      s    z2DictTest.test_update.<locals>.FailingUserDict.keysc                s    d S )Nr   )r   r`   )rG   r   r   rP      s    z9DictTest.test_update.<locals>.FailingUserDict.__getitem__N)r   r   r   r5   rP   r   )rG   r   r   r\      s   c                   s    e Zd Zdd Z fddZdS )z$DictTest.test_update.<locals>.badseqc             S   s   | S )Nr   )r   r   r   r   r]      s    z-DictTest.test_update.<locals>.badseq.__iter__c                s
     d S )Nr   )r   )rG   r   r   r^      s    z-DictTest.test_update.<locals>.badseq.__next__N)r   r   r   r]   r^   r   )rG   r   r   badseq   s   re   )	r   r   r   r   AttributeErrorrV   rS   rQ   
ValueError)r   r8   r[   r\   re   r   )rG   r   test_update   s.    zDictTest.test_updatec       
         sl  |  tdd d d d i | d |  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
t}|  |ddd i |  | ddd i | |d| | | d| G dd dt}|d}|  |d d d | |tj | ttj G dd dt	 G  fdddt}|  |jdg G  fdddt
}|  tj|  G  fdddt}|  |jdg tttdtd|  tdtttddgd  G fdddt}dd tdD  }	|	jd d d d |  |dddh|	 d S ) Nabc)r2   r3   r=   )rE      r   c               s   s
   dV  d S )Nr
   r   r   r   r   r   g   s    z!DictTest.test_fromkeys.<locals>.gr
   rD   c               @   s   e Zd ZdS )z(DictTest.test_fromkeys.<locals>.dictlikeN)r   r   r   r   r   r   r   dictlike   s    rl   r2   c               @   s   e Zd Zdd ZdS )z&DictTest.test_fromkeys.<locals>.mydictc             S   s   t  S )N)collectionsUserDict)clsr   r   r   __new__   s    z.DictTest.test_fromkeys.<locals>.mydict.__new__N)r   r   r   rp   r   r   r   r   mydict   s   rq   ab)r2   r3   c               @   s   e Zd ZdS )z#DictTest.test_fromkeys.<locals>.ExcN)r   r   r   r   r   r   r   rG      s    rG   c                   s   e Zd Z fddZdS )z(DictTest.test_fromkeys.<locals>.baddict1c                s
     d S )Nr   )r   )rG   r   r   rZ      s    z1DictTest.test_fromkeys.<locals>.baddict1.__init__N)r   r   r   rZ   r   )rG   r   r   baddict1   s   rs   c                   s    e Zd Zdd Z fddZdS )z&DictTest.test_fromkeys.<locals>.BadSeqc             S   s   | S )Nr   )r   r   r   r   r]      s    z/DictTest.test_fromkeys.<locals>.BadSeq.__iter__c                s
     d S )Nr   )r   )rG   r   r   r^      s    z/DictTest.test_fromkeys.<locals>.BadSeq.__next__N)r   r   r   r]   r^   r   )rG   r   r   BadSeq   s   rt   c                   s   e Zd Z fddZdS )z(DictTest.test_fromkeys.<locals>.baddict2c                s
     d S )Nr   )r   r`   value)rG   r   r   __setitem__   s    z4DictTest.test_fromkeys.<locals>.baddict2.__setitem__N)r   r   r   rv   r   )rG   r   r   baddict2   s   rw   r   c                   s   e Zd Z fddZdS )z(DictTest.test_fromkeys.<locals>.baddict3c                s    S )Nr   )ro   )r8   r   r   rp   
  s    z0DictTest.test_fromkeys.<locals>.baddict3.__new__N)r   r   r   rp   r   )r8   r   r   baddict3	  s   rx   c             S   s   i | ]
}||qS r   r   )r   r    r   r   r   
<dictcomp>  s    z*DictTest.test_fromkeys.<locals>.<dictcomp>
   r3   r=   )r   r   fromkeysr   r   r   assertIsInstancerm   rn   rS   rQ   zipr(   copyr   )
r   rk   rl   rq   Zudrs   rt   rw   rx   resr   )rG   r8   r   test_fromkeys   sB    
(zDictTest.test_fromkeysc             C   s   dddd}|  | | | | | | | dddd | }d|d< | || | i  i  | t|jd  d S )Nr
   r   rD   )r
   r   rD   rE   )r   r~   r   assertNotEqualr   r   )r   r8   r~   r   r   r   	test_copy  s    zDictTest.test_copyc          
   C   s   xdD ]}t |d ||d  }| j|dp i }xt|D ]}|||< q>W | }| || | || d|d< | || | t|t|d  W d Q R X qW d S )N)rz   rX   i  i'  i r   )	dict_sizeru   r`   r
   )	r   	randrangesubTestr(   r~   r   r   r   rB   )r   r   r8   r    d2r   r   r   test_copy_fuzz  s    
zDictTest.test_copy_fuzzc             C   sT   G dd d}| }x:i ddi|difD ]$}|  }| t|t| q(W d S )Nc               @   s   e Zd ZdS )z0DictTest.test_copy_maintains_tracking.<locals>.AN)r   r   r   r   r   r   r   A/  s   r   r2   r
   val)r~   r   gc
is_tracked)r   r   r`   r8   r   r   r   r   test_copy_maintains_tracking.  s
    z%DictTest.test_copy_maintains_trackingc             C   sB   dd t dD }xt dD ]
}||= qW | }| || d S )Nc             S   s   i | ]
}||qS r   r   )r   r#   r   r   r   ry   ?  s    z1DictTest.test_copy_noncompact.<locals>.<dictcomp>i  i  )r(   r~   r   )r   r8   r#   r   r   r   r   test_copy_noncompact8  s
    
zDictTest.test_copy_noncompactc             C   s   i }|  |dd  | |ddd ddd}|  |dd  | |ddd | |dd | |ddd | t|j | t|jd d d  d S )Nr=   rD   r
   r   )r2   r3   r2   )r.   getr   r   r   )r   r8   r   r   r   test_getE  s    
zDictTest.test_getc                s   i }|  |dd  |dg  |  |dd  |dg d | |d d d |dg d | t|d d | t|j G dd dt G  fd	d
d
t}| }d||< d|_	|  |j|g  d S )NZkey0r`   rD   r   rE   r   c               @   s   e Zd ZdS )z%DictTest.test_setdefault.<locals>.ExcN)r   r   r   r   r   r   r   rG   ]  s    rG   c                   s   e Zd ZdZ fddZdS )z)DictTest.test_setdefault.<locals>.BadHashFc                s   | j r  ndS d S )NrL   )rN   )r   )rG   r   r   rJ   a  s    z2DictTest.test_setdefault.<locals>.BadHash.__hash__N)r   r   r   rN   rJ   r   )rG   r   r   rO   _  s   rO   rL   T)
r.   
setdefaultappendr   rB   r   r   rS   rQ   rN   )r   r8   rO   rT   r   )rG   r   test_setdefaultQ  s    zDictTest.test_setdefaultc             C   sd   G dd dt }| }|di}| }||g  | |jd | |jd | |j|j d d S )Nc               @   s$   e Zd Zdd Zdd Zdd ZdS )z/DictTest.test_setdefault_atomic.<locals>.Hashedc             S   s   d| _ d| _d S )Nr   )
hash_counteq_count)r   r   r   r   rZ   o  s    z8DictTest.test_setdefault_atomic.<locals>.Hashed.__init__c             S   s   |  j d7  _ dS )Nr
   rL   )r   )r   r   r   r   rJ   r  s    z8DictTest.test_setdefault_atomic.<locals>.Hashed.__hash__c             S   s   |  j d7  _ t| t|kS )Nr
   )r   id)r   rF   r   r   r   rH   u  s    z6DictTest.test_setdefault_atomic.<locals>.Hashed.__eq__N)r   r   r   rZ   rJ   rH   r   r   r   r   Hashedn  s   r   rj   r
   )rQ   r   r   r   r   )r   r   hashed1yhashed2r   r   r   test_setdefault_atomicl  s    
zDictTest.test_setdefault_atomicc          
   C   sp   G dd dt }| }|dddddddddi}| }g ||< | |jd | |jd | |j|j d d S )Nc               @   s$   e Zd Zdd Zdd Zdd ZdS )z6DictTest.test_setitem_atomic_at_resize.<locals>.Hashedc             S   s   d| _ d| _d S )Nr   )r   r   )r   r   r   r   rZ     s    z?DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__init__c             S   s   |  j d7  _ dS )Nr
   rL   )r   )r   r   r   r   rJ     s    z?DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__hash__c             S   s   |  j d7  _ t| t|kS )Nr
   )r   r   )r   rF   r   r   r   rH     s    z=DictTest.test_setitem_atomic_at_resize.<locals>.Hashed.__eq__N)r   r   r   rZ   rJ   rH   r   r   r   r   r     s   r   rj   r   r
   r   rD   )rQ   r   r   r   )r   r   r   r   r   r   r   r   test_setitem_atomic_at_resize  s    
z&DictTest.test_setitem_atomic_at_resizec             C   s  xdD ]}xt dD ]}d| }i }i }x0t |D ]$}||t|< |dk r2||t|< q2W |dkrj| }xft |D ]Z}|  \}}}	| |t| |  \}
}}| |t|
 | |dk o|	|k qtW | | | | qW qW i }| t|j d S )N)r
      r   r   )	r(   r7   r~   popitemr   intr?   r   rR   )r   copymodeZlog2sizesizer2   r3   r    kaZvataZkbZvbtbr8   r   r   r   test_popitem  s*    

zDictTest.test_popitemc                s   i }d\}}|||< |  t|jd | ||| | t|d |  t|j| | |||| |||< | ||d| |  t|j G dd dt G  fdddt}| }d	||< d
|_|   |j| d S )N)ri   defZghir   r
   c               @   s   e Zd ZdS )zDictTest.test_pop.<locals>.ExcN)r   r   r   r   r   r   r   rG     s    rG   c                   s   e Zd ZdZ fddZdS )z"DictTest.test_pop.<locals>.BadHashFc                s   | j r  ndS d S )NrL   )rN   )r   )rG   r   r   rJ     s    z+DictTest.test_pop.<locals>.BadHash.__hash__N)r   r   r   rN   rJ   r   )rG   r   r   rO     s   rO   rL   T)	r   rR   popr   rB   r   rS   rQ   rN   )r   r8   r#   r$   rO   rT   r   )rG   r   test_pop  s"    zDictTest.test_popc          	   C   s@   i }d|d< |  t  x|D ]}d||d < qW W d Q R X d S )Nr
   )r   RuntimeError)r   r8   r    r   r   r   test_mutating_iteration  s
    
z DictTest.test_mutating_iterationc                sP   G  fddd  d} d}|di}||f _ d||< | ||di d S )Nc                   s,   e Zd ZdZdd Zdd Z fddZdS )z/DictTest.test_mutating_lookup.<locals>.NastyKeyNc             S   s
   || _ d S )N)ru   )r   ru   r   r   r   rZ     s    z8DictTest.test_mutating_lookup.<locals>.NastyKey.__init__c             S   s   dS )Nr
   r   )r   r   r   r   rJ     s    z8DictTest.test_mutating_lookup.<locals>.NastyKey.__hash__c                s(    j r j \}}d  _ ||= | j|jkS )N)mutate_dictru   )r   rF   rq   r`   )NastyKeyr   r   rH     s
    
z6DictTest.test_mutating_lookup.<locals>.NastyKey.__eq__)r   r   r   r   rZ   rJ   rH   r   )r   r   r   r     s   r   r
   r   )r   r   )r   Zkey1Zkey2r8   r   )r   r   test_mutating_lookup  s    
zDictTest.test_mutating_lookupc                s   i }|  t|d d|d< |  t|d i }||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DictTest.test_repr.<locals>.ExcN)r   r   r   r   r   r   r   rG     s    rG   c                   s   e Zd Z fddZdS )z#DictTest.test_repr.<locals>.BadReprc                s
     d S )Nr   )r   )rG   r   r   __repr__  s    z,DictTest.test_repr.<locals>.BadRepr.__repr__N)r   r   r   r   r   )rG   r   r   BadRepr  s   r   )r   r7   rS   rQ   r   )r   r8   r   r   )rG   r   	test_repr  s    
zDictTest.test_reprc             C   s8   i }x t t d D ]}d|i}qW | tt| d S )NrX   r
   )r(   sysgetrecursionlimitr   RecursionErrorr7   )r   r8   r    r   r   r   test_repr_deep  s    zDictTest.test_repr_deepc          	      sx   |  i i  |  ddiddi G dd dt G  fdddt}| di}ddi}|   ||k W d Q R X d S )Nr
   r   c               @   s   e Zd ZdS )zDictTest.test_eq.<locals>.ExcN)r   r   r   r   r   r   r   rG     s    rG   c                   s    e Zd Z fddZdd ZdS )z DictTest.test_eq.<locals>.BadCmpc                s
     d S )Nr   )r   rF   )rG   r   r   rH     s    z'DictTest.test_eq.<locals>.BadCmp.__eq__c             S   s   dS )Nr
   r   )r   r   r   r   rJ     s    z)DictTest.test_eq.<locals>.BadCmp.__hash__N)r   r   r   rH   rJ   r   )rG   r   r   BadCmp  s   r   )r   rS   rQ   r   )r   r   d1r   r   )rG   r   test_eq  s    
zDictTest.test_eqc             C   s    |  dd  |  dd  d S )Nc             S   s   |   S )N)r5   )rT   r   r   r   <lambda>      z.DictTest.test_keys_contained.<locals>.<lambda>c             S   s   |   S )N)r,   )rT   r   r   r   r     r   )helper_keys_contained)r   r   r   r   test_keys_contained  s    zDictTest.test_keys_containedc             C   s  |t  }|t  }|ddd}|dddd}|dddd}|dddd}| ||k  | ||k | ||k | ||k | ||k | ||k | ||k | ||k  | ||k  | ||k | ||k | ||k | ||k | ||k | ||k | ||k  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k d S )Nr
   r   )r
   r   rD   )r
   r   rD   )rE   r   rD   )r   r/   r?   )r   fnemptyZempty2ZsmallerZlargerZlarger2Zlarger3r   r   r   r   !  s<    

zDictTest.helper_keys_containedc          	   C   s  G dd d}d| i}d| i}|  t | | k W d Q R X |  t | | k W d Q R X |  t | | k W d Q R X |  t | | k W d Q R X | | d}|  t | | k  W d Q R X |  t | | k W d Q R X d S )Nc               @   s   e Zd Zdd ZdS )z9DictTest.test_errors_in_view_containment_check.<locals>.Cc             S   s   t d S )N)r   )r   rF   r   r   r   rH   O  s    z@DictTest.test_errors_in_view_containment_check.<locals>.C.__eq__N)r   r   r   rH   r   r   r   r   CN  s   r   r
   )r
   r   )r   r   r,   )r   r   r   r   Zd3r   r   r   %test_errors_in_view_containment_checkM  s     

z.DictTest.test_errors_in_view_containment_checkc             C   s   ddd  }dddd  }ddi  }| || t  | || ddh | || dh | || dh | ||@ ddh | ||@ t  | ||B dddh | ||A dh | ||A dddh d S )Nr
   r   )r
   r   rD   )r
   r   rD   rE   )r5   r   r4   )r   k1k2k3r   r   r   $test_dictview_set_operations_on_keysc  s    z-DictTest.test_dictview_set_operations_on_keysc             C   s   ddd  }dddd  }ddi  }| || t  | || ddh | || d	h | || d
h | ||@ ddh | ||@ t  | ||B ddd	h | ||A d	h | ||A ddd
h d S )Nr
   r   )r
   r   rD   )r
   r   rD   rE   )r
   r
   )r   r   )rD   rD   )rE   rE   )r,   r   r4   )r   r   r   r   r   r   r   %test_dictview_set_operations_on_itemsr  s    z.DictTest.test_dictview_set_operations_on_itemsc             C   s   |  ddi dhk |  dhddi k | ddi dhB ddh | dhddi B ddh |  ddi dhk |  dhddi k | ddi dhB ddh | dhddi B ddh d S )Nr
   r   )r
   r
   )r/   r5   r   r,   )r   r   r   r   "test_dictview_mixed_set_operations  s    z+DictTest.test_dictview_mixed_set_operationsc       
   	   C   sZ  |  ttd |  ti d G dd dt}|ddd}| |d d | |d d | d| | d|  | |d d	 G d
d dt}| }| t}|d	  W d Q R X | |jj	d G dd dt}| }| t
}|d	  W d Q R X | |jj	d G dd dt}| }	| t
}|	d	  W d Q R X | |jj	d d S )N__missing__c               @   s   e Zd Zdd ZdS )z DictTest.test_missing.<locals>.Dc             S   s   dS )NrL   r   )r   r`   r   r   r   r     s    z,DictTest.test_missing.<locals>.D.__missing__N)r   r   r   r   r   r   r   r   D  s   r   r   rE   )r
   rD   r
   rD   rL   c               @   s   e Zd Zdd ZdS )z DictTest.test_missing.<locals>.Ec             S   s   t |d S )N)r   )r   r`   r   r   r   r     s    z,DictTest.test_missing.<locals>.E.__missing__N)r   r   r   r   r   r   r   r   E  s   r   )rL   c               @   s   e Zd Zdd ZdS )z DictTest.test_missing.<locals>.Fc             S   s   dd | _ d S )Nc             S   s   d S )Nr   )r`   r   r   r   r     r   z;DictTest.test_missing.<locals>.F.__init__.<locals>.<lambda>)r   )r   r   r   r   rZ     s    z)DictTest.test_missing.<locals>.F.__init__N)r   r   r   rZ   r   r   r   r   F  s   r   c               @   s   e Zd ZdS )z DictTest.test_missing.<locals>.GN)r   r   r   r   r   r   r   G  s   r   )r?   hasattrr   r   r>   r5   r   r   	exceptionargsrR   )
r   r   r8   r   er=   r   fr   rk   r   r   r   test_missing  s0    zDictTest.test_missingc          	   C   s6   i }|  t}|d  W d Q R X | |jjd d S )N)r
   ))r
   )r   rR   r   r   r   )r   r8   r=   r   r   r   test_tuple_keyerror  s    zDictTest.test_tuple_keyerrorc          
      sn   G dd dt  G  fddd}i }| }| }d||< x.dD ]&}|   t|t  W d Q R X q@W d S )Nc               @   s   e Zd ZdS )z.DictTest.test_bad_key.<locals>.CustomExceptionN)r   r   r   r   r   r   r   CustomException  s   r   c                   s    e Zd Zdd Z fddZdS )z)DictTest.test_bad_key.<locals>.BadDictKeyc             S   s
   t | jS )N)hash	__class__)r   r   r   r   rJ     s    z2DictTest.test_bad_key.<locals>.BadDictKey.__hash__c                s   t || jr |S )N)
isinstancer   )r   rF   )r   r   r   rH     s    z0DictTest.test_bad_key.<locals>.BadDictKey.__eq__N)r   r   r   rJ   rH   r   )r   r   r   
BadDictKey  s   r   r
   )z	d[x2] = 2z	z = d[x2]zx2 in dz	d.get(x2)zd.setdefault(x2, 42)z	d.pop(x2)zd.update({x2: 2}))rS   r   execlocals)r   r   r8   x1Zx2Zstmtr   )r   r   test_bad_key  s    	
zDictTest.test_bad_keyc             C   sV   i }xt dD ]}|||< qW xt dD ]
}||= q(W xt ddD ]}|||< qBW d S )Nrj   	   )r(   )r   r8   r    r   r   r   test_resize1  s    
zDictTest.test_resize1c                s`   G  fdddt }i  dd | < d | < d | < d | < d | < d	d
 d< d S )Nc                   s"   e Zd Zdd Z fddZdS )z DictTest.test_resize2.<locals>.Xc             S   s   dS )Nrj   r   )r   r   r   r   rJ     s    z)DictTest.test_resize2.<locals>.X.__hash__c                s   r    dS )NF)rV   )r   rF   )r8   resizingr   r   rH     s    z'DictTest.test_resize2.<locals>.X.__eq__N)r   r   r   rJ   rH   r   )r8   r   r   r   X  s   r   Fr
   r   rD   rE   rj   Tr   r   )rQ   )r   r   r   )r8   r   r   test_resize2  s    




zDictTest.test_resize2c          
   C   s8   |  t  dd d d d d d d d d}W d Q R X i }d S )Nr
   r   )r2   r3   r=   r8   r   r   rk   h)r   ZeroDivisionError)r   r8   r   r   r   $test_empty_presized_dict_in_freelist  s    z-DictTest.test_empty_presized_dict_in_freelistc             C   s|   G dd dt }tjtjtjf}xV|D ]N}| }t|}|di}|||_t|j|_	~~t
  | | d d q&W d S )Nc               @   s   e Zd ZdS )z+DictTest.test_container_iterator.<locals>.CN)r   r   r   r   r   r   r   r     s   r   r
   zCycle was not collected)rQ   r   r,   r:   r5   weakrefrefr$   iterrT   r   collectr.   )r   r   Zviewsr$   objr   	containerr   r   r   test_container_iterator	  s    


z DictTest.test_container_iteratorc             C   s&   t   t   | t || d S )N)r   r   r?   r   )r   tr   r   r   _not_tracked  s    zDictTest._not_trackedc             C   s8   |  t|| t  t  |  t|| d S )N)r/   r   r   r   )r   r   r   r   r   _tracked  s    zDictTest._trackedc             C   s   dddg f\}}}}|  i  |  |d|||di |  ddd |  dtd |  dt i | dg i | dg fi | di i | dt i d S )	Ng      ?r2   )r
   Nr   r
   r   )r
   r3   )r
   )NTFr   )r   r   rQ   r   r4   )r   rT   r   rb   wr   r   r   test_track_literals%  s    
zDictTest.test_track_literalsc       	      C   sV  G dd dt }dddt  fg | f\}}}}}t }| | d|d< | | d||< | | d||< | | | |  ||d< | | | |  d |d< | | | |  t }t }||d< | | | | ||d< | | t|||g}| | t }|| | | t||||g}| | t }|| | | t|||d	}| | t||||d
}| | t }|j|||d	 | | |j|d | | t||f|dfg}| | t||f||fg}| | t }|||f|dfg | | |||f||fg | | d S )Nc               @   s   e Zd ZdS )z-DictTest.test_track_dynamic.<locals>.MyObjectN)r   r   r   r   r   r   r   MyObject:  s   r   g      ?r2   r
   r   rD   rE   )rT   r   rb   )rT   r   rb   r   )r   )rQ   r   r   r~   r   r{   r   )	r   r   rT   r   rb   r   or8   ddr   r   r   test_track_dynamic7  sh     





















zDictTest.test_track_dynamicc             C   s    G dd dt }| |  d S )Nc               @   s   e Zd ZdS )z,DictTest.test_track_subtypes.<locals>.MyDictN)r   r   r   r   r   r   r   MyDictz  s   r   )r   r   )r   r   r   r   r   test_track_subtypesw  s    zDictTest.test_track_subtypesc             C   sJ   G dd d}g }x2t |D ]&}| }d\|_|_|_||j qW |S )Nc               @   s   e Zd ZdS )z(DictTest.make_shared_key_dict.<locals>.CN)r   r   r   r   r   r   r   r     s   r   )r
   r   rD   )r(   rT   r   rb   r   __dict__)r   r+   r   Zdictsr    r2   r   r   r   make_shared_key_dict~  s    zDictTest.make_shared_key_dictc             C   s   |  d\}}d|d< t|}d|d< |dd t|}d|d< | || | t|dddddg | t|dddddg dS )	zMsplit table must be combined when setdefault()
        breaks insertion orderr   r
   r2   r3   rT   r   rb   N)r   r   	getsizeofr   assertGreaterr   list)r   r2   r3   Zsize_aZsize_br   r   r   test_splittable_setdefault  s    

z#DictTest.test_splittable_setdefaultc          	   C   s   |  d\}}t|}|d= | t |d= W dQ R X | t|| | t|ddg | t|dddg d|d< | t|dddg | t|dddg dS )z*split table must be combined when del d[k]r   r   NrT   rb   rL   )r   r   r   r   rR   r   r   r   )r   r2   r3   	orig_sizer   r   r   test_splittable_del  s    
zDictTest.test_splittable_delc          	   C   s   |  d\}}t|}|d | t |d W dQ R X | t|| | t|ddg | t|dddg d|d< | t|dddg | t|dddg dS )z*split table must be combined when d.pop(k)r   r   NrT   rb   rL   )	r   r   r   r   r   rR   r   r   r   )r   r2   r3   r   r   r   r   test_splittable_pop  s    

zDictTest.test_splittable_popc          	   C   s:   |  d\}}d|d< | t |d W dQ R X dS )z6pop a pending key in a splitted table should not crashr   rE   r2   N)r   r   rR   r   )r   r2   r3   r   r   r   test_splittable_pop_pending  s    z$DictTest.test_splittable_pop_pendingc          	   C   s   |  d\}}t|}| }| |d | t |d= W dQ R X | t|| | t|ddg | t|dddg dS )z-split table must be combined when d.popitem()r   )rb   rD   rb   NrT   r   )	r   r   r   r   r   r   rR   r   r   )r   r2   r3   r   itemr   r   r   test_splittable_popitem  s    
z DictTest.test_splittable_popitemc             C   s   ddl }G dd d}| }d|_| ||j |jd | ||j d|_| ||j | }d|_| ||j |j  | ||j d|_| ||j dS )	z;setattr() must not convert combined table into split table.r   Nc               @   s   e Zd ZdS )z5DictTest.test_splittable_setattr_after_pop.<locals>.CN)r   r   r   r   r   r   r   r     s   r   r
   r2   r   rD   )	_testcapir2   r/   Zdict_hassplittabler   r   r?   r   )r   r  r   r2   r   r   r   !test_splittable_setattr_after_pop  s     
z*DictTest.test_splittable_setattr_after_popc          	   C   s   xt tjd D ]}dddd}t|}t||}t|}| t|t| t|}yt|}W n t	k
r~   wY nX t||}t|}||= | t|t| qW d S )Nr
   r2   r3   r=   )r
   r   rD   )
r(   pickleHIGHEST_PROTOCOLr   dumpsloadsr   sortednextrd   )r   protodataitr8   dropr   r   r   test_iterator_pickling  s    


zDictTest.test_iterator_picklingc             C   s   xt tjd D ]}dddd}t| }t||}t|}| |tj	j
 | t|| t|}t|}t||}t|}||d = | t|| qW d S )Nr
   r2   r3   r=   )r
   r   rD   r   )r(   r  r  r   r,   r  r  r|   rm   ri   Iteratorr   r   r  )r   r	  r
  Zitorgr8   r  r  r   r   r   test_itemiterator_pickling  s    



z#DictTest.test_itemiterator_picklingc             C   s   xt tjd D ]}dddd}t| }t||}t|}| tt	|tt	|  t|}t
|}t||}t|}t	||g }| t|tt	|  qW d S )Nr
   r2   r3   r=   )r
   r   rD   )r(   r  r  r   r:   r  r  r   r  r   r  )r   r	  r
  r  r8   r  r:   r   r   r   test_valuesiterator_pickling"  s    
 

z%DictTest.test_valuesiterator_picklingc             C   sZ   G dd d}|d}G dd dt }| |jt||d | |j|j|d  d S )Nc               @   s   e Zd Zdd ZdS )z=DictTest.test_instance_dict_getattr_str_subclass.<locals>.Fooc             S   s
   || _ d S )N)msg)r   r  r   r   r   rZ   4  s    zFDictTest.test_instance_dict_getattr_str_subclass.<locals>.Foo.__init__N)r   r   r   rZ   r   r   r   r   Foo3  s   r  123c               @   s   e Zd ZdS )z>DictTest.test_instance_dict_getattr_str_subclass.<locals>._strN)r   r   r   r   r   r   r   _str7  s   r  r  )strr   r  getattrr   )r   r  r   r  r   r   r   'test_instance_dict_getattr_str_subclass2  s
    z0DictTest.test_instance_dict_getattr_str_subclassc             C   s<   G dd d}| }d|j d< d|_| |j ddd d S )Nc               @   s   e Zd ZdS )zFDictTest.test_object_set_item_single_instance_non_str_key.<locals>.FooN)r   r   r   r   r   r   r   r  =  s    r  r
   r2   )r
   r2   )r   r2   r   )r   r  r   r   r   r   0test_object_set_item_single_instance_non_str_key<  s
    
z9DictTest.test_object_set_item_single_instance_non_str_keyc                sD   G fddd  fdddD xt D ]}||< q0W d S )Nc                   s   e Zd Z fddZdS )z4DictTest.check_reentrant_insertion.<locals>.Mutatingc                s     d S )Nr   )r   )r8   mutater   r   __del__H  s    z<DictTest.check_reentrant_insertion.<locals>.Mutating.__del__N)r   r   r   r  r   )r8   r  r   r   MutatingG  s   r  c                s   i | ]}  |qS r   r   )r   r#   )r  r   r   ry   K  s    z6DictTest.check_reentrant_insertion.<locals>.<dictcomp>Zabcdefghijklmnopqr)r   )r   r  r#   r   )r  r8   r  r   check_reentrant_insertionC  s    z"DictTest.check_reentrant_insertionc                s>   dd }  |  fdd}  | dd }  | d S )Nc             S   s   d| d< d S )Nrj   r3   r   )r8   r   r   r   r  Q  s    z1DictTest.test_reentrant_insertion.<locals>.mutatec                s   |   j |   d S )N)r   r   rV   )r8   )r   r   r   r  U  s    c             S   s   x| r|    qW d S )N)r   )r8   r   r   r   r  Z  s    )r  )r   r  r   )r   r   test_reentrant_insertionO  s    

z!DictTest.test_reentrant_insertionc                sZ   G  fddd}dd t ddD }t| d | < | dddi}| t|j  d S )Nc                   s    e Zd Zdd Z fddZdS )z)DictTest.test_merge_and_mutate.<locals>.Xc             S   s   dS )Nr   r   )r   r   r   r   rJ   a  s    z2DictTest.test_merge_and_mutate.<locals>.X.__hash__c                s       dS )NF)rV   )r   r   )rF   r   r   rH   d  s    z0DictTest.test_merge_and_mutate.<locals>.X.__eq__N)r   r   r   rJ   rH   r   )rF   r   r   r   `  s   r   c             S   s   g | ]}|d fqS )r   r   )r   r    r   r   r   r!   h  s    z2DictTest.test_merge_and_mutate.<locals>.<listcomp>r
   i9  r   )r(   r   r   r   r   )r   r   lr8   r   )rF   r   test_merge_and_mutate_  s    
zDictTest.test_merge_and_mutatec             C   sH   t | tt t | dd t t | dd t t | dd t d S )Nc             S   s   t |  S )N)r   r5   )r8   r   r   r   r   p  r   z4DictTest.test_free_after_iterating.<locals>.<lambda>c             S   s   t |  S )N)r   r:   )r8   r   r   r   r   q  r   c             S   s   t |  S )N)r   r,   )r8   r   r   r   r   r  r   )r   check_free_after_iteratingr   r   )r   r   r   r   test_free_after_iteratingn  s    z"DictTest.test_free_after_iteratingc                s<   G  fddd}| di | | i|   k d S )Nc                   s,   e Zd ZfddZ fddZdd ZdS )z9DictTest.test_equal_operator_modifying_operand.<locals>.Xc                s       d S )N)rV   )r   )dict_br   r   r  w  s    zADictTest.test_equal_operator_modifying_operand.<locals>.X.__del__c                s       dS )NT)rV   )r   rF   )dict_ar   r   rH   z  s    z@DictTest.test_equal_operator_modifying_operand.<locals>.X.__eq__c             S   s   dS )N   r   )r   r   r   r   rJ   ~  s    zBDictTest.test_equal_operator_modifying_operand.<locals>.X.__hash__N)r   r   r   r  rH   rJ   r   )r#  r"  r   r   r   v  s   r   r   )r/   )r   r   r   )r#  r"  r   %test_equal_operator_modifying_operandt  s    
z.DictTest.test_equal_operator_modifying_operandc                sT   G  fdddt }i  |dd|ddi yt  W n tk
rN   Y nX d S )Nc                   s    e Zd Zdd Z fddZdS )zADictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.Xc             S   s   dS )Nr$  r   )r   r   r   r   rJ     s    zJDictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.X.__hash__c                s   t  dkr   dS )Nr
   F)rB   rV   )r   rF   )r8   r   r   rH     s    zHDictTest.test_fromkeys_operator_modifying_dict_operand.<locals>.X.__eq__N)r   r   r   rJ   rH   r   )r8   r   r   r     s   r   r
   r   )r   r   r{   r   )r   r   r   )r8   r   -test_fromkeys_operator_modifying_dict_operand  s    	z6DictTest.test_fromkeys_operator_modifying_dict_operandc                sP   G  fdddt }i  |d|dh yt  W n tk
rJ   Y nX d S )Nc                   s    e Zd Zdd Z fddZdS )z@DictTest.test_fromkeys_operator_modifying_set_operand.<locals>.Xc             S   s   dS )Nr$  r   )r   r   r   r   rJ     s    zIDictTest.test_fromkeys_operator_modifying_set_operand.<locals>.X.__hash__c                s   t  dkr   dS )Nr
   F)rB   rV   )r   rF   )r8   r   r   rH     s    zGDictTest.test_fromkeys_operator_modifying_set_operand.<locals>.X.__eq__N)r   r   r   rJ   rH   r   )r8   r   r   r     s   r   r
   r   )r   r   r{   r   )r   r   r   )r8   r   ,test_fromkeys_operator_modifying_set_operand  s    	z5DictTest.test_fromkeys_operator_modifying_set_operandc                s2   G  fddd}dt  i d| f  k d S )Nc                   s   e Zd Z fddZdS )z:DictTest.test_dictitems_contains_use_after_free.<locals>.Xc                s       tS )N)rV   NotImplemented)r   rF   )r8   r   r   rH     s    zADictTest.test_dictitems_contains_use_after_free.<locals>.X.__eq__N)r   r   r   rH   r   )r8   r   r   r     s   r   r   )r4   r,   )r   r   r   )r8   r   &test_dictitems_contains_use_after_free  s    
z/DictTest.test_dictitems_contains_use_after_freec                s*   G  fddd}| dg t  g d S )Nc                   s   e Zd Z fddZdS )z,DictTest.test_init_use_after_free.<locals>.Xc                s   g  d d < dS )Nr$  r   )r   )pairr   r   rJ     s    z5DictTest.test_init_use_after_free.<locals>.X.__hash__N)r   r   r   rJ   r   )r*  r   r   r     s   r   {   )r   )r   r   r   )r*  r   test_init_use_after_free  s    
z!DictTest.test_init_use_after_freec                sF   G fdddt   fddtdD fdd}| t| d S )Nc                   s   e Zd Z fddZdS )z;DictTest.test_oob_indexing_dictiter_iternextitem.<locals>.Xc                s       d S )N)rV   )r   )r8   r   r   r    s    zCDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.X.__del__N)r   r   r   r  r   )r8   r   r   r     s   r   c                s   i | ]} ||qS r   r   )r   r    )r   r   r   ry     s    zDDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.<dictcomp>r   c                 s*   x$   D ]} | d dkr
d  d< q
W d S )Nr   r   )r,   )result)r8   r   r   iter_and_mutate  s    zIDictTest.test_oob_indexing_dictiter_iternextitem.<locals>.iter_and_mutate)r   r(   r   r   )r   r.  r   )r   r8   r   'test_oob_indexing_dictiter_iternextitem  s    z0DictTest.test_oob_indexing_dictiter_iternextitemc             C   s   t ddg}|d t| }t|}| t| | G dd dt}dddg}||}| |tt|  G dd dt}||}| |d d d	 tt|  d S )
N)r2   r
   )r3   r   r2   c               @   s   e Zd ZdS )z1DictTest.test_dict_copy_order.<locals>.CustomDictN)r   r   r   r   r   r   r   
CustomDict  s   r0  )r=   rD   c               @   s    e Zd Zdd ZeZdd ZdS )z9DictTest.test_dict_copy_order.<locals>.CustomReversedDictc             S   s   t tt| S )N)reversedr   r   r5   )r   r   r   r   r5     s    z>DictTest.test_dict_copy_order.<locals>.CustomReversedDict.keysc             S   s   t t| S )N)r1  r   r,   )r   r   r   r   r,     s    z?DictTest.test_dict_copy_order.<locals>.CustomReversedDict.itemsN)r   r   r   r5   r]   r,   r   r   r   r   CustomReversedDict  s   r2  r   )rm   OrderedDictmove_to_endr   r,   r   r   )r   Zodexpectedr~   r0  pairsr8   r2  r   r   r   test_dict_copy_order  s    

	zDictTest.test_dict_copy_orderN)Jr   r   r   r   r   r-   r1   r9   r;   r<   rA   rC   rU   rW   rh   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   cpython_onlyr   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r!  r%  r&  r'  r)  r,  r/  r7  r   r   r   r   r      s   		&L:
!,+@	
		r   c               @   s   e Zd Zejdd ZdS )CAPITestc                s   ddl m} dddd}| ||dtdd | ||dtdd | ||d	td	d | t|g dtd | t|i dtd G d
d dt G  fddd}| |  }}|di}| |||t|d |  |||t| d S )Nr   )dict_getitem_knownhashr
   r   rD   )rT   r   rb   rT   r   rb   c               @   s   e Zd ZdS )z,CAPITest.test_getitem_knownhash.<locals>.ExcN)r   r   r   r   r   r   r   rG     s    rG   c                   s    e Zd Z fddZdd ZdS )z.CAPITest.test_getitem_knownhash.<locals>.BadEqc                s    d S )Nr   )r   rF   )rG   r   r   rH     s    z5CAPITest.test_getitem_knownhash.<locals>.BadEq.__eq__c             S   s   dS )N   r   )r   r   r   r   rJ     s    z7CAPITest.test_getitem_knownhash.<locals>.BadEq.__hash__N)r   r   r   rH   rJ   r   )rG   r   r   rK     s   rK   )r  r:  r   r   r   SystemErrorrR   rS   )r   r:  r8   rK   r   r   r   )rG   r   test_getitem_knownhash  s    zCAPITest.test_getitem_knownhashN)r   r   r   r   r8  r=  r   r   r   r   r9    s   r9  )mapping_testsc               @   s   e Zd ZeZdS )GeneralMappingTestsN)r   r   r   r   	type2testr   r   r   r   r?    s   r?  c               @   s   e Zd ZdS )DictN)r   r   r   r   r   r   r   rA    s   rA  c               @   s   e Zd ZeZdS )SubclassMappingTestsN)r   r   r   rA  r@  r   r   r   r   rB    s   rB  __main__)rm   collections.abcr   r  r   r   r   unittestr   testr   TestCaser   r9  r>  ZBasicTestMappingProtocolr?  r   rA  rB  r   mainr   r   r   r   <module>   s4            d