B
    u9ap>                @   s:  d 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m	Z	 ddl
Z
ddlZddlZddlmZ ddlZddlZddlmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZmZ ddlm Z m!Z!m"Z"m#Z#m$Z$ ddlm%Z%m&Z&m'Z'm(Z( ddlm)Z)m*Z* ddlm+Z+m,Z,m-Z-m.Z.m/Z/ ddlm0Z0m1Z1 ddlm2Z2 G dd dej3Z4G dd dej3Z5eddZ6G dd dej3Z7G dd dej3Z8dd Z9G dd de8Z:G dd  d e*Z;G d!d" d"e8Z<G d#d$ d$eZ=G d%d& d&eZ>G d'd( d(ej3Z?d.d)d*Z@eAd+kr6e@d,d- dS )/zUnit tests for collections.py.    N)choice	randrange)support)
namedtupleCounterOrderedDict_count_elements)UserDict
UserStringUserList)ChainMap)deque)	Awaitable	Coroutine)AsyncIteratorAsyncIterableAsyncGenerator)HashableIterableIterator	Generator
Reversible)Sized	ContainerCallable
Collection)Set
MutableSet)MappingMutableMappingKeysView	ItemsView
ValuesView)SequenceMutableSequence)
ByteStringc               @   sD   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S )TestUserObjectsc             C   s0   |  tt|tt|dj|j|jd d S )Nz&{a} should have all the methods of {b})ab)ZassertGreaterEqualsetdirformat__name__)selfr'   r(    r.   &/usr/lib/python3.7/test_collections.py_superset_test    s    

zTestUserObjects._superset_testc             C   sn   |  }| |j|j | |j|j dg|_t  |}| |j|j | |j|j | |j|j d S )Ni  )copyassertIsNotdataassertEqualtestassertIs)r-   objZobj_copyr.   r.   r/   
_copy_test*   s    
zTestUserObjects._copy_testc             C   s   |  tt d S )N)r0   r
   str)r-   r.   r.   r/   test_str_protocol7   s    z!TestUserObjects.test_str_protocolc             C   s   |  tt d S )N)r0   r   list)r-   r.   r.   r/   test_list_protocol:   s    z"TestUserObjects.test_list_protocolc             C   s   |  tt d S )N)r0   r	   dict)r-   r.   r.   r/   test_dict_protocol=   s    z"TestUserObjects.test_dict_protocolc             C   s   t  }|d | | d S )N{   )r   appendr8   )r-   r7   r.   r.   r/   test_list_copy@   s    
zTestUserObjects.test_list_copyc             C   s   t  }d|d< | | d S )Nabcr?   )r	   r8   )r-   r7   r.   r.   r/   test_dict_copyE   s    zTestUserObjects.test_dict_copyN)
r,   
__module____qualname__r0   r8   r:   r<   r>   rA   rC   r.   r.   r.   r/   r&      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 )TestChainMapc             C   s  t  }d|d< d|d< | }d|d< d|d< | |jdddddd	g | | tdddd
  | t|d xdD ]}| || qW x4tddddd D ]\}}| ||d| qW |d= | |jddiddd	g | | tdddd
  | t|d xdD ]}| || q W x6tddddd D ]\}}| ||d| qLW | t	|t
|jd t
|jd g x| t|fD ]}| || | |j|j | || | |jd |jd  x8t|jdd  |jdd  D ]\}}| || qW qW x~ttjd D ]l}	tt||	}| || | |j|j | || x*t|j|jD ]\}}| ||| qW q>W xtt|tt	|gD ]Z}| || | |j|j | || x*t|j|jD ]\}}| ||| qW qW | }
d|
d< | |
jddiddiddd	g | |
jjddiddd	g | |
d d | |
jd d d S )N   r'      r(         c)r(   rK   )r'   r(   )r'   r(   rK      rB   d   )r'   r(   rK   zz({'c': 30}, {'a': 1, 'b': 2})z({'c': 30}, {'b': 2, 'a': 1})r      )r   	new_childr4   mapsitemsr=   lenassertIngetreprtyper,   r1   r2   zipr6   rangepickleHIGHEST_PROTOCOLloadsdumpsdeepcopyevalparents)r-   rK   dkeykveZm1Zm2protofr.   r.   r/   test_basicsQ   sf    


(
"zTestChainMap.test_basicsc             C   sP   ddd}ddd}t ||}| }|| | t| t|  d S )NZbachZ	rembrandt)Zmusicartzvan goghZcarmen)ri   Zopera)r   r1   updater4   r;   rR   )r-   ZbaselineZadjustmentscmZcombinedr.   r.   r/   test_ordering   s    



zTestChainMap.test_orderingc             C   s2   |  t ji g |  tddijddig d S )NrG   rH   )r4   r   rQ   )r-   r.   r.   r/   test_constructor   s    zTestChainMap.test_constructorc             C   sH   |  t  |  ti i  | tddii  | ti ddi d S )NrG   rH   )assertFalser   
assertTrue)r-   r.   r.   r/   	test_bool   s    zTestChainMap.test_boolc          	   C   s   G dd dt }|tdddtddd}x0tdddd	d
 D ]\}}| || | q@W x4tddddd
 D ]\}}| ||d| qrW x0tddddd
 D ]\}}| ||k| qW | |ddd| | |ddd | | d | t |  W d Q R X d S )Nc               @   s   e Zd Zdd ZdS )z2TestChainMap.test_missing.<locals>.DefaultChainMapc             S   s   dS )Ni  r.   )r-   rb   r.   r.   r/   __missing__   s    z>TestChainMap.test_missing.<locals>.DefaultChainMap.__missing__N)r,   rD   rE   rq   r.   r.   r.   r/   DefaultChainMap   s   rr   rG   rH   )r'   r(   rI   rJ   )r(   rK   i  )r'   r(   rK   ra   M   TFr'   i  i  )r(   rH   )	r   r=   rR   r4   rU   poppopitemassertRaisesKeyError)r-   rr   ra   rc   rd   r.   r.   r/   test_missing   s    zTestChainMap.test_missingc             C   s   t tdddt tddddtdd	d
dddt tdddtddddddt }| d|d | t| dddddddd d!d"g
 d S )#Nr   i8[ )jhi'  i\  i  )ira   rK   i     i	  iM  ix  )rg   r(   grK   rz   7      )re   r(   rG   rH   rL      rO   )r'   r(   rK   ra   re    Z
abcdefghij)r'   rG   )r(   r|   )rK   i  )ra   i\  )re   r~   )rg   i  )r}   i	  )rz   i8[ )r{   i'  )ry   r   )r   r   r4   joinr;   rR   )r-   ra   r.   r.   r/   test_order_preservation   s    

z$TestChainMap.test_order_preservationc             C   sV   t tdddtddd}| t|tdddd | t| tdddd d S )NrG   rH   )r'   r(   rI   rJ   )r(   rK   )r'   r(   rK   )r   r=   r4   rR   )r-   ra   r.   r.   r/   test_dict_coercion   s    zTestChainMap.test_dict_coercionc             C   s   t  }d|d< d|d< ddd}||}| |jddddddg | ||jd	  G d
d dt}t  }d|d< d|d< |ddd}||}| ||jd	  xdD ]}| || qW x4tddddd D ]\}}| ||d| qW dS )z#Tests for changes for issue #16613.rG   r'   rH   r(   rI   rJ   )r(   rK   )r'   r(   r   c               @   s   e Zd Zdd Zdd ZdS )z.TestChainMap.test_new_child.<locals>.lowerdictc             S   s   t |tr| }t| |S )N)
isinstancer9   lowerr=   __getitem__)r-   rb   r.   r.   r/   r      s    
z:TestChainMap.test_new_child.<locals>.lowerdict.__getitem__c             S   s   t |tr| }t| |S )N)r   r9   r   r=   __contains__)r-   rb   r.   r.   r/   r      s    
z;TestChainMap.test_new_child.<locals>.lowerdict.__contains__N)r,   rD   rE   r   r   r.   r.   r.   r/   	lowerdict   s   r   rB   rM   )r'   BCrN   N)	r   rP   r4   rQ   r6   r=   rT   rR   rU   )r-   rK   mra   r   rb   rc   rd   r.   r.   r/   test_new_child   s$    




zTestChainMap.test_new_childN)r,   rD   rE   rh   rl   rm   rp   rx   r   r   r   r.   r.   r.   r/   rF   O   s   <rF   TestNTzx y zc               @   s   e Zd Zdd Zdd Zeejj	dkddd Z
eejj	dkd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 )"TestNamedTuplec             C   sJ  t dd}| |jd | |jd | |jt | |jtj | |jd | t	t dd | t	t dd | t	t dd | t	t d	d
 | t	t d	d | t	t d	d | t	t d	d | t	t d	d t dd t dd t dd}| 
dt|j t dd}| 
dt|j | t|jdg | t|jdddg d S )NPointzx yr.   )xyzabc%zefg ghiclassZ9abcrB   zefg g%hiz	abc classz	8efg 9ghiz_efg ghizefg efg ghiZPoint0zx1 y2_za b cntzthe quick brown foxzu')theZquick   r   !   )r   r4   r,   	__slots__rD   r   tuple_fieldsrv   
ValueErrorassertNotInrV   	TypeError_make)r-   r   r   r.   r.   r/   test_factory   s,    




zTestNamedTuple.test_factoryc          	   C   s  t dddd}| |jddd | |dd	d
 | |dd | | d t dddd}| |jddi | |dd	d
 | |dd t dddd}| |ji  | |dd	d
 | t |d W d Q R X | t |  W d Q R X | t |dd	d W d Q R X | t t dddd}W d Q R X | t t dddd}W d Q R X | t t dddd}W d Q R X t ddd d}| |ji  | |jjd  | |ddd | t |d W d Q R X t ddddgd}| |jddd | |jjd | |dd	d
 | |dd | | d t ddtddgd}| |jddd | |jjd | |dd	d
 | |dd | | d d S )Nr   zx y)
   rI   )defaultsr   rI   )r   r   rG   rH   )rG   rH   )rG   rI   )rI   r   r.   rL   )r   rI   rJ   F)	r   r4   _field_defaultsrv   r   assertIsNone__new____defaults__iter)r-   r   r.   r.   r/   test_defaults  sT    zTestNamedTuple.test_defaultsrH   z)Docstrings are omitted with -O2 and abovec             C   s   t dd}| |jd d S )Nr   zx yzPoint(x, y))r   r4   __doc__)r-   r   r.   r.   r/   test_factory_doc_attrE  s    
z$TestNamedTuple.test_factory_doc_attrc             C   s6   t dd}| |jjd d|j_| |jjd d S )Nr   zx yzAlias for field number 0zdocstring for Point.x)r   r4   r   r   )r-   r   r.   r.   r/   test_doc_writableK  s    
z TestNamedTuple.test_doc_writablec             C   sR   xLddgddgddgddgdd	gd
dggD ] \}}|  td|ddj| q*W d S )N)efgzg%hi)r   _1)rB   r   )rB   r   )Z8efgZ9ghi)Z_0r   )rB   Z_efg)rB   r   r   ghi)rB   r   Z_2r   )rB   r   r   )rB   r   r   NTT)rename)r4   r   r   )r-   specZrenamedr.   r.   r/   test_name_fixerS  s    zTestNamedTuple.test_name_fixerc             C   s$   t dddgtd}| |jt d S )Nr   r   r   )module)r   collectionsr4   rD   )r-   r   r.   r.   r/   test_module_parameter^  s    z$TestNamedTuple.test_module_parameterc          	   C   s  t dd}|dd}| ||ddd | ||ddd | ||ddd | ||d  | ||f tddd | t|d	 | t|d	d
d | ttdt  | ttdt  | t|d | dt	| | ||
ddg | |jd | |jd	dd | | tddd y|jd	d
d W n tk
rV   Y nX | d t dd}|ddd}| t|d t dd}|ddd}| t|d d S )Nr   zx yr   r   )r   r   )r   )r   r   )r   r   rG   rH   rL   zPoint(XXX=1, y=2)z
Point(x=1)zPoint(x=11, y=22)__weakref__)r   )rG   r   )r   errorz%Did not detect an incorrect fieldnamezx, y)r   r4   r=   rv   r   r_   localsrV   r   r*   r   r   _replace_asdictr   Z_fail)r-   r   pr.   r.   r/   test_instanceb  s8    




zTestNamedTuple.test_instancec             C   s   t dd}|dd}| |t | |d | t|d | t|ddg | t|d | t| d |\}}| |||f | |d |d fd | t|jd | |j	| | |j
| | ttd	t  d S )
Nr   zx yr   r   )r   r   r   rG   rL   zp.z)r   assertIsInstancer   r4   r;   maxrv   
IndexErrorr   r   r   AttributeErrorr_   r   )r-   r   r   r   r   r.   r.   r/   test_tupleness  s    

zTestNamedTuple.test_tuplenessc             C   s   t dd}| | d | |g d | t| d | |  i  | | jd t dd}| |dd | |dgd | |djd | t|dd	 | |d ddi | |djd
dd | |djd d}tt	dd t
|D }t|}t d|}|t
| }| |tt
| | |t
|tt
| x(t|D ]\}}| t||| qlW t| | }	tt|t
|}
| |	|
 |jf t|d d
f|d dfg}tt
|}d
|d< d|d< | |t| | |jt| d S )NZeror   r.   zZero()Dotra   rG   )rG   zDot(d=1)i  )ra   )i  i  c             s   s&   | ]}d  dd tdD V  qdS )r   c             S   s   g | ]}t tjqS r.   )r   stringZascii_letters).0ry   r.   r.   r/   
<listcomp>  s   z;TestNamedTuple.test_odd_sizes.<locals>.<genexpr>.<listcomp>r   N)r   rY   )r   r{   r.   r.   r/   	<genexpr>  s   z0TestNamedTuple.test_odd_sizes.<locals>.<genexpr>Big*   )r   r4   r   rV   r   r   ra   r   r;   r)   rY   rS   r   	enumerategetattrr=   rX   )r-   r   r   nnamesr   r(   posnamera   Z
d_expectedZb2Zb2_expectedr.   r.   r/   test_odd_sizes  sD    



$zTestNamedTuple.test_odd_sizesc             C   s   t dddd}xxtfD ]n}t|d}t|d}xTtd|jd D ]@}||||}| || | |j|j | d	||| q@W qW d S )
Nr   rI   rJ   )r   r   rN   r\   r]   rG   s   OrderedDict)r   rZ   r   rY   r[   r4   r   r   )r-   r   r   r\   r]   Zprotocolqr.   r.   r/   test_pickle  s    

zTestNamedTuple.test_picklec             C   sL   t dddd}x8tjtjfD ](}||}| || | |j|j qW d S )Nr   rI   rJ   )r   r   rN   )r   r1   r^   r4   r   )r-   r   Zcopierr   r.   r.   r/   	test_copy  s
    zTestNamedTuple.test_copyc             C   s  t dd}|ddddd}| |d |jd	d
dddd}| |d ddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddh}t d|}ttt|}|| }| || |f tt|j|}| || |	|}| || t
| | | tt|j| |	|}tdd΄ |D }|jf tt|j|}| || | |jt| | | | d S )NTz"itemgetter property self cls tuplerG   rH   rL   r   rO   )rG   rH   rL   r   rO   r   rI   rJ   (   2   )
itemgetterpropertyr-   clsr   )r   rI   rJ   r   r   ZAliasZAtr   ZBuildZBypassZCreateZEncounteredZExpectedZFieldZForZGotZHelperZ
IronPythonZJythonrw   ZMakeZModifyZNoter   r   ZReturnZReturnsZTyper   ZUsedZValidater   Z	Variablesr'   Z
accessibleaddZaddedallZalsoZanarg_listargsZ	argumentsZautomaticallybeZbuildbuiltinsZbutZbyZcannotclass_namespaceclassmethodr   r   Zconvertr1   ZcreatedZcreationra   Z	debuggingZdefinedr=   Z
dictionarydocZ	docstringZ
docstringsZ	duplicateZeffectZeitherr   Zenvironmentsr   Zexampleexecrg   	f_globalsZfieldfield_namesZfields	formattedframeZfunctionZ	functionsZgeneraterU   getterZgotZgreaterZhashelpZidentifiersindexZ	indexableinstanceZinstantiateZ	interningZintrospectionisidentifierr   r   iterabler   keywordkeywordskwdsrS   Zliker;   maprQ   messageZmetadatamethodmethodsr   Zmodule_nameZmustr   Znamedr   namedtuple_r   	namespaceZneedsnewZnicely
num_fieldsZnumberobjectZofoperatoroptionr   Z
particularrZ   ZpicklingZplainrt   Z
positionalr   rZregularr   replaceZ	replacingrV   repr_fmtZrepresentationresultZreuse_itemgettersseenr-   Zsequencer)   ZsideZ	specifiedsplitstart
startswithstepr9   r   stringssubclasssysZtargetsZthanr   Ztheirthistor   	tuple_newrW   typenameZ
underscoreZ
unexpectedunpackZupZuseZuseduserZvalidvaluesvariableverbosewhereZwhichZworkr   r   rN   rX   c             s   s   | ]}|d  V  qdS )r   Nr.   )r   rd   r.   r.   r/   r   	  s    z5TestNamedTuple.test_name_conflicts.<locals>.<genexpr>)r   r4   r   r   rY   rS   r=   rX   r   r   rV   r   __getnewargs__)r-   r   tZnewtwordsr  Z	newvaluesr.   r.   r/   test_name_conflicts  sd    




z"TestNamedTuple.test_name_conflictsc             C   sF   t dd}| t|dd G dd d|}| t|dd d S )NAr   rG   zA(x=1)c               @   s   e Zd ZdS )z#TestNamedTuple.test_repr.<locals>.BN)r,   rD   rE   r.   r.   r.   r/   r     s   r   zB(x=1))r   r4   rV   )r-   r  r   r.   r.   r/   	test_repr  s    
zTestNamedTuple.test_reprc          	   C   sr   |  t tdddgd}W d Q R X tdddgdd}| |jd |  t tdddgd	d}W d Q R X d S )
Nr   r   r   TrB   def)r   )rB   r   F)rv   r   r   r4   r   )r-   r   r.   r.   r/   test_keyword_only_arguments  s    z*TestNamedTuple.test_keyword_only_argumentsc             C   sX   G dd dt dddg}|dd}| | tdd	g d
|_| |jdd
i d S )Nc               @   s   e Zd ZdS )zBTestNamedTuple.test_namedtuple_subclass_issue_24931.<locals>.PointN)r,   rD   rE   r.   r.   r.   r/   r   $  s   r   Z_Pointr   r   rL   r   )r   rL   )r   r   rO   w)r   r4   r   r   r  __dict__)r-   r   r'   r.   r.   r/   $test_namedtuple_subclass_issue_24931#  s
    
z3TestNamedTuple.test_namedtuple_subclass_issue_24931N)r,   rD   rE   r   r   unittestZskipIfr
  flagsoptimizer   r   r   r   r   r   r   r   r   r  r  r  r  r.   r.   r.   r/   r      s"   3$&@
r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )ABCTestCasec             G   s`   t |dd }td|f|}|  x6|D ].}| }||= td|f|}| t|| q*W d S )Nc             W   s   dS )Nr   r.   )r  r   r.   r.   r/   <lambda>5      z7ABCTestCase.validate_abstract_methods.<locals>.<lambda>r   )r=   fromkeysrW   r1   rv   r   )r-   rB   r   Zmethodstubsr   r   Zstubsr.   r.   r/   validate_abstract_methods4  s    
z%ABCTestCase.validate_abstract_methodsc             C   sx   dd }t dtfdd i}t||| | | | | t|| t dtfdd i}| | | | t|| d S )Nc             W   s   dS )Nr   r.   )r  r   r.   r.   r/   r$  C  r%  z1ABCTestCase.validate_isinstance.<locals>.<lambda>r   __hash__)rW   r   setattrr   ro   
issubclassassertNotIsInstancern   )r-   rB   r   Zstubr   r.   r.   r/   validate_isinstanceB  s    zABCTestCase.validate_isinstancec          	   C   s   ddddddddd	g	}i }x&|D ]}d
| d
 }t t|||< q W G dd d}xJ| D ]>\}}t||snqZ| }||| | |jdt||f  qZW d S )Nltgtlegeneorandxorsub__c               @   s@   e Zd Zdd Zdd ZeZeZeZeZeZ	eZ
eZeZeZdS )z.ABCTestCase.validate_comparison.<locals>.Otherc             S   s
   d| _ d S )NF)
right_side)r-   r.   r.   r/   __init__V  s    z7ABCTestCase.validate_comparison.<locals>.Other.__init__c             S   s
   d| _ dS )NT)r7  )r-   otherr.   r.   r/   __eq__X  s    z5ABCTestCase.validate_comparison.<locals>.Other.__eq__N)r,   rD   rE   r8  r:  __lt____gt____le____ge____ne____ror____rand____rxor____rsub__r.   r.   r.   r/   OtherU  s   rD  zRight side not called for %s.%s)r   r   rR   hasattrro   r7  rW   )r-   r   ZopsZ	operatorsopr   rD  r9  r.   r.   r/   validate_comparisonN  s    



zABCTestCase.validate_comparisonN)r,   rD   rE   r'  r,  rG  r.   r.   r.   r/   r#  2  s   r#  c               c   s
   d V  d S )Nr.   r.   r.   r.   r/   	_test_genm  s    rH  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 )"TestOneTrickPonyABCsc             C   s6  dd }t jdd }dd }G dd d}G d	d
 d
t}d t | t g}x6|D ].}| |t | tt	|tt
t	| qTW | | g}x,|D ]$}| |t | tt	|t qW | }	| |	t | }	| |	t |	  G dd d}
t|
 | t|
 t | t|
t d }
t  d S )Nc               s   s
   d V  d S )Nr.   r.   r.   r.   r/   gens  s    z0TestOneTrickPonyABCs.test_Awaitable.<locals>.genc               s   s
   d V  d S )Nr.   r.   r.   r.   r/   corov  s    z1TestOneTrickPonyABCs.test_Awaitable.<locals>.coroc                  s   d S )Nr.   r.   r.   r.   r/   new_coroz  s    z5TestOneTrickPonyABCs.test_Awaitable.<locals>.new_coroc               @   s   e Zd Zdd ZdS )z0TestOneTrickPonyABCs.test_Awaitable.<locals>.Barc             s   s
   d V  d S )Nr.   )r-   r.   r.   r/   	__await__~  s    z:TestOneTrickPonyABCs.test_Awaitable.<locals>.Bar.__await__N)r,   rD   rE   rM  r.   r.   r.   r/   Bar}  s   rN  c                   s.   e Zd Zdd Zd fdd	Zdd Z  ZS )	z8TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoroc             S   s   |S )Nr.   )r-   valuer.   r.   r/   send  s    z=TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.sendNc                s   t  ||| d S )N)superthrow)r-   typvaltb)	__class__r.   r/   rR    s    z>TestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.throwc             s   s
   d V  d S )Nr.   )r-   r.   r.   r/   rM    s    zBTestOneTrickPonyABCs.test_Awaitable.<locals>.MinimalCoro.__await__)NN)r,   rD   rE   rP  rR  rM  __classcell__r.   r.   )rV  r/   MinimalCoro  s   rX  c               @   s   e Zd ZdS )z5TestOneTrickPonyABCs.test_Awaitable.<locals>.CoroLikeN)r,   rD   rE   r.   r.   r.   r/   CoroLike  s    rY  )types	coroutiner   intr   r+  r   rn   r*  rW   rV   r   ro   closeregisterr   r   Z
gc_collect)r-   rJ  rK  rL  rN  rX  non_samplesr   samplesrK   rY  r.   r.   r/   test_Awaitabler  s0    
"

z#TestOneTrickPonyABCs.test_Awaitablec             C   sP  dd }t jdd }dd }G dd d}G d	d
 d
t}d t | t | g}x6|D ].}| |t | tt|tt	t| qXW | g}x,|D ]$}| 
|t | tt|t qW | }	| |	t | }	| 
|	t |	  G dd d}
| t|
 t | t|
t G dd d}
| t|
 t | t|
t d S )Nc               s   s
   d V  d S )Nr.   r.   r.   r.   r/   rJ    s    z0TestOneTrickPonyABCs.test_Coroutine.<locals>.genc               s   s
   d V  d S )Nr.   r.   r.   r.   r/   rK    s    z1TestOneTrickPonyABCs.test_Coroutine.<locals>.coroc                  s   d S )Nr.   r.   r.   r.   r/   rL    s    z5TestOneTrickPonyABCs.test_Coroutine.<locals>.new_coroc               @   s   e Zd Zdd ZdS )z0TestOneTrickPonyABCs.test_Coroutine.<locals>.Barc             s   s
   d V  d S )Nr.   )r-   r.   r.   r/   rM    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.Bar.__await__N)r,   rD   rE   rM  r.   r.   r.   r/   rN    s   rN  c                   s.   e Zd Zdd Zd fdd	Zdd Z  ZS )	z8TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoroc             S   s   |S )Nr.   )r-   rO  r.   r.   r/   rP    s    z=TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.sendNc                s   t  ||| d S )N)rQ  rR  )r-   rS  rT  rU  )rV  r.   r/   rR    s    z>TestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.throwc             s   s
   d V  d S )Nr.   )r-   r.   r.   r/   rM    s    zBTestOneTrickPonyABCs.test_Coroutine.<locals>.MinimalCoro.__await__)NN)r,   rD   rE   rP  rR  rM  rW  r.   r.   )rV  r/   rX    s   rX  c               @   s.   e Zd Zdd Zd
ddZdd Zdd	 ZdS )z5TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLikec             S   s   d S )Nr.   )r-   rO  r.   r.   r/   rP    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.sendNc             S   s   d S )Nr.   )r-   rS  rT  rU  r.   r.   r/   rR    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.throwc             S   s   d S )Nr.   )r-   r.   r.   r/   r]    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.closec             S   s   d S )Nr.   )r-   r.   r.   r/   rM    s    z?TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.__await__)NN)r,   rD   rE   rP  rR  r]  rM  r.   r.   r.   r/   rY    s   
rY  c               @   s$   e Zd Zdd Zdd Zdd ZdS )z5TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLikec             S   s   d S )Nr.   )r-   rO  r.   r.   r/   rP    s    z:TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.sendc             S   s   d S )Nr.   )r-   r.   r.   r/   r]    s    z;TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.closec             S   s   d S )Nr.   )r-   r.   r.   r/   rM    s    z?TestOneTrickPonyABCs.test_Coroutine.<locals>.CoroLike.__await__N)r,   rD   rE   rP  r]  rM  r.   r.   r.   r/   rY    s   )rZ  r[  r   r\  r   r+  rn   r*  rW   rV   r   r   ro   r]  r   )r-   rJ  rK  rL  rN  rX  r_  r   r`  rK   rY  r.   r.   r/   test_Coroutine  s0    
"
	z#TestOneTrickPonyABCs.test_Coroutinec             C   s  t  t t t g}x6|D ].}| |t | tt|tt	t| qW d t
 t t t t t t
tttt g}x6|D ].}| |t | tt|tt	t| q|W | tt G dd dt}| t| d | tt
| | td | td d S )Nc                   s   e Zd Z fddZ  ZS )z-TestOneTrickPonyABCs.test_Hashable.<locals>.Hc                s
   t   S )N)rQ  r(  )r-   )rV  r.   r/   r(    s    z6TestOneTrickPonyABCs.test_Hashable.<locals>.H.__hash__)r,   rD   rE   r(  rW  r.   r.   )rV  r/   H  s   rc  r   r(  )	bytearrayr;   r)   r=   r+  r   rn   r*  rW   rV   r\  floatcomplexr9   r   	frozensetr   bytesr   ro   rv   r   r4   hashr'  r,  )r-   r_  r   r`  rc  r.   r.   r/   test_Hashable  s$    
"
"z"TestOneTrickPonyABCs.test_Hashablec             C   s   G dd d}|  t| t |  t|t d tg g}x6|D ].}| |t | tt|ttt| q@W | 	td | 
td d S )Nc               @   s   e Zd Zdd ZdS )z3TestOneTrickPonyABCs.test_AsyncIterable.<locals>.AIc             S   s   | S )Nr.   )r-   r.   r.   r/   	__aiter__  s    z=TestOneTrickPonyABCs.test_AsyncIterable.<locals>.AI.__aiter__N)r,   rD   rE   rk  r.   r.   r.   r/   AI   s   rl  rk  )ro   r   r   r*  r   r+  rn   rW   rV   r'  r,  )r-   rl  r_  r   r.   r.   r/   test_AsyncIterable  s    

"z'TestOneTrickPonyABCs.test_AsyncIterablec             C   s   G dd d}|  t| t |  t|t d tg g}x6|D ].}| |t | tt|ttt| q@W G dd d}| | t | 	tdd d S )Nc               @   s   e Zd Zdd Zdd ZdS )z3TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AIc             S   s   | S )Nr.   )r-   r.   r.   r/   rk    s    z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__aiter__c                s   t d S )N)StopAsyncIteration)r-   r.   r.   r/   	__anext__  s    z=TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AI.__anext__N)r,   rD   rE   rk  ro  r.   r.   r.   r/   rl    s   rl  c               @   s   e Zd Zdd ZdS )z:TestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnlyc                s   t d S )N)rn  )r-   r.   r.   r/   ro    s    zDTestOneTrickPonyABCs.test_AsyncIterator.<locals>.AnextOnly.__anext__N)r,   rD   rE   ro  r.   r.   r.   r/   	AnextOnly  s   rp  ro  rk  )
ro   r   r   r*  r   r+  rn   rW   rV   r'  )r-   rl  r_  r   rp  r.   r.   r/   test_AsyncIterator  s    

"z'TestOneTrickPonyABCs.test_AsyncIteratorc             C   st  d dddg}x6|D ].}|  |t | tt|ttt| qW t t t t	 t
 t t t  t  t  t dd dD g}x6|D ].}| |t | tt|ttt| qW G dd dt}| t	| g  | tt| | td	 | td	 G d
d d}G dd d|}| t|t | t| t | t|t | t| t d S )Nr   gQ	@y              ?c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r   ,  s    z5TestOneTrickPonyABCs.test_Iterable.<locals>.<genexpr>r.   c                   s   e Zd Z fddZ  ZS )z-TestOneTrickPonyABCs.test_Iterable.<locals>.Ic                s
   t   S )N)rQ  __iter__)r-   )rV  r.   r/   rr  3  s    z6TestOneTrickPonyABCs.test_Iterable.<locals>.I.__iter__)r,   rD   rE   rr  rW  r.   r.   )rV  r/   I2  s   rs  rr  c               @   s   e Zd Zdd ZdS )z.TestOneTrickPonyABCs.test_Iterable.<locals>.Itc             S   s   t g S )N)r   )r-   r.   r.   r/   rr  ;  r%  z7TestOneTrickPonyABCs.test_Iterable.<locals>.It.__iter__N)r,   rD   rE   rr  r.   r.   r.   r/   It:  s   rt  c               @   s   e Zd ZdZdS )z5TestOneTrickPonyABCs.test_Iterable.<locals>.ItBlockedN)r,   rD   rE   rr  r.   r.   r.   r/   	ItBlocked<  s   ru  )r+  r   rn   r*  rW   rV   rh  r9   r   r;   r)   rg  r=   keysrR   r  rH  r   ro   r4   r'  r,  r   )r-   r_  r   r`  rs  rt  ru  r.   r.   r/   test_Iterable!  s.    
"
"z"TestOneTrickPonyABCs.test_Iterablec             C   s  d dddt  t t g}x6|D ].}| |t | tt|ttt| qW t  	 t  
 t   t t 	 t 
 t  t dd dD tg tg g}x6|D ].}| |t | tt|ttt| qW t t t t t t 	 t 
 t  g}x8|D ]0}| |t | tt|ttt| qW | ttttt | ttttt | ttttt G dd dt}| tt| g  | tt| | td	d
 G dd d}G dd d|}| t|t | t| t | t|t | t| t G dd d}G dd d|}	G dd d|}
| t|t | t| t | t|	t | t|	 t | t|
t | t|
 t d S )Nr   gQ	@y              ?c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r   M  s    z7TestOneTrickPonyABCs.test_Reversible.<locals>.<genexpr>r.   c               @   s   e Zd Zdd Zdd ZdS )z/TestOneTrickPonyABCs.test_Reversible.<locals>.Rc             S   s
   t t S )N)r   r;   )r-   r.   r.   r/   rr  ^  s    z8TestOneTrickPonyABCs.test_Reversible.<locals>.R.__iter__c             S   s
   t t S )N)r   r;   )r-   r.   r.   r/   __reversed__`  s    z<TestOneTrickPonyABCs.test_Reversible.<locals>.R.__reversed__N)r,   rD   rE   rr  rx  r.   r.   r.   r/   R]  s   ry  rx  rr  c               @   s   e Zd Zdd ZdS )z7TestOneTrickPonyABCs.test_Reversible.<locals>.RevNoIterc             S   s   t g S )N)reversed)r-   r.   r.   r/   rx  g  r%  zDTestOneTrickPonyABCs.test_Reversible.<locals>.RevNoIter.__reversed__N)r,   rD   rE   rx  r.   r.   r.   r/   	RevNoIterf  s   r{  c               @   s   e Zd Zdd ZdS )z9TestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIterc             S   s   t g S )N)r   )r-   r.   r.   r/   rr  i  r%  zBTestOneTrickPonyABCs.test_Reversible.<locals>.RevPlusIter.__iter__N)r,   rD   rE   rr  r.   r.   r.   r/   RevPlusIterh  s   r|  c               @   s   e Zd Zdd Zdd ZdS )z1TestOneTrickPonyABCs.test_Reversible.<locals>.Revc             S   s   t g S )N)r   )r-   r.   r.   r/   rr  p  r%  z:TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__iter__c             S   s   t g S )N)rz  )r-   r.   r.   r/   rx  q  r%  z>TestOneTrickPonyABCs.test_Reversible.<locals>.Rev.__reversed__N)r,   rD   rE   rr  rx  r.   r.   r.   r/   Revo  s   r}  c               @   s   e Zd ZdZdS )z:TestOneTrickPonyABCs.test_Reversible.<locals>.RevItBlockedN)r,   rD   rE   rr  r.   r.   r.   r/   RevItBlockedr  s   r~  c               @   s   e Zd ZdZdS )z;TestOneTrickPonyABCs.test_Reversible.<locals>.RevRevBlockedN)r,   rD   rE   rx  r.   r.   r.   r/   RevRevBlockedt  s   r  )r=   r)   rg  r+  r   rn   r*  rW   rV   rv  rR   r  r   rH  r   rz  rh  r9   r   r;   r   r   ro   r#   r   r   r4   re  r'  r   )r-   r_  r   Znon_reversiblesr`  ry  r{  r|  r}  r~  r  r.   r.   r/   test_ReversibleC  sN    
"
"
$z$TestOneTrickPonyABCs.test_Reversiblec             C   s  d ddddd g}x6|D ].}|  |t | tt|ttt| qW t tdtt dd d	D g}x6|D ].}|  |t | tt|ttt| qrW t	 t
 t t t t t t  t  t  g
}x6|D ].}| |t | tt|ttt| qW | ttttt | ttttt | ttttt | ttttt | ttttt | ttttt G d
d dt}G dd d|}| tt| g  | tt| | tt	| | tt| | tt| g  | tt| | tt	| | tt| | tddd G dd d}G dd d}G dd d}	| t|t | t| t | t|t | t| t | t|	t | t|	 t G dd d}
G dd d}| t|
t | t|
 t | t|t | t| t G dd d}G dd d|}| t|t | t| t d S )Nr   gQ	@y              ?c             S   s   d|  S )NrH   r.   )r   r.   r.   r/   r$    r%  z6TestOneTrickPonyABCs.test_Collection.<locals>.<lambda>r%  c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r     s    z7TestOneTrickPonyABCs.test_Collection.<locals>.<genexpr>r.   c               @   s$   e Zd Zdd Zdd Zdd ZdS )z1TestOneTrickPonyABCs.test_Collection.<locals>.Colc             S   s
   t t S )N)r   r;   )r-   r.   r.   r/   rr    s    z:TestOneTrickPonyABCs.test_Collection.<locals>.Col.__iter__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   __len__  s    z9TestOneTrickPonyABCs.test_Collection.<locals>.Col.__len__c             S   s   dS )NFr.   )r-   itemr.   r.   r/   r     s    z>TestOneTrickPonyABCs.test_Collection.<locals>.Col.__contains__N)r,   rD   rE   rr  r  r   r.   r.   r.   r/   Col  s   r  c               @   s   e Zd ZdS )z4TestOneTrickPonyABCs.test_Collection.<locals>.DerColN)r,   rD   rE   r.   r.   r.   r/   DerCol  s    r  r  rr  r   c               @   s   e Zd Zdd Zdd ZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoIterc             S   s   dS )Nr   r.   )r-   r.   r.   r/   r    r%  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__len__c             S   s   dS )NFr.   )r-   r  r.   r.   r/   r     r%  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoIter.__contains__N)r,   rD   rE   r  r   r.   r.   r.   r/   	ColNoIter  s   r  c               @   s   e Zd Zdd Zdd ZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoSizec             S   s   t g S )N)r   )r-   r.   r.   r/   rr    r%  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__iter__c             S   s   dS )NFr.   )r-   r  r.   r.   r/   r     r%  zDTestOneTrickPonyABCs.test_Collection.<locals>.ColNoSize.__contains__N)r,   rD   rE   rr  r   r.   r.   r.   r/   	ColNoSize  s   r  c               @   s   e Zd Zdd Zdd ZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.ColNoContc             S   s   t g S )N)r   )r-   r.   r.   r/   rr    r%  z@TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__iter__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r    r%  z?TestOneTrickPonyABCs.test_Collection.<locals>.ColNoCont.__len__N)r,   rD   rE   rr  r  r.   r.   r.   r/   	ColNoCont  s   r  c               @   s    e Zd Zdd Zdd ZdZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.SizeBlockc             S   s   t g S )N)r   )r-   r.   r.   r/   rr    r%  z@TestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__iter__c             S   s   dS )NFr.   )r-   r.   r.   r/   r     r%  zDTestOneTrickPonyABCs.test_Collection.<locals>.SizeBlock.__contains__N)r,   rD   rE   rr  r   r  r.   r.   r.   r/   	SizeBlock  s   r  c               @   s    e Zd Zdd Zdd ZdZdS )z7TestOneTrickPonyABCs.test_Collection.<locals>.IterBlockc             S   s   dS )Nr   r.   )r-   r.   r.   r/   r    r%  z?TestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__len__c             S   s   dS )NTr.   )r-   r.   r.   r/   r     r%  zDTestOneTrickPonyABCs.test_Collection.<locals>.IterBlock.__contains__N)r,   rD   rE   r  r   rr  r.   r.   r.   r/   	IterBlock  s   r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )z5TestOneTrickPonyABCs.test_Collection.<locals>.ColImplc             S   s
   t t S )N)r   r;   )r-   r.   r.   r/   rr    s    z>TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__iter__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r    s    z=TestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__len__c             S   s   dS )NFr.   )r-   r  r.   r.   r/   r     s    zBTestOneTrickPonyABCs.test_Collection.<locals>.ColImpl.__contains__N)r,   rD   rE   rr  r  r   r.   r.   r.   r/   ColImpl  s   r  c               @   s   e Zd ZdZdS )z4TestOneTrickPonyABCs.test_Collection.<locals>.NonColN)r,   rD   rE   r   r.   r.   r.   r/   NonCol  s   r  )r+  r   rn   r*  rW   rV   rH  r   rd  r)   rg  r=   rh  r9   r   r;   rv  rR   r  r   ro   r#   r   r   r   r   r4   re  r'  r   )r-   Znon_collectionsr   Znon_col_iterablesr`  r  r  r  r  r  r  r  r  r  r.   r.   r/   test_Collection}  sh    
"
" 
"

z$TestOneTrickPonyABCs.test_Collectionc             C   s(  d ddddddg i t  g
}x6|D ].}| |t | tt|ttt| q W tt tt	 tt
 tt tt tt  tt tt  tt  tt  t dd dD g}x6|D ].}| |t | tt|ttt| qW | td	d
 G dd d}| | t d S )Nr   gQ	@y              ?r%  r   r.   c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r     s    z5TestOneTrickPonyABCs.test_Iterator.<locals>.<genexpr>__next__rr  c               @   s   e Zd Zdd ZdS )z4TestOneTrickPonyABCs.test_Iterator.<locals>.NextOnlyc             s   s
   dV  d S )NrG   r.   )r-   r.   r.   r/   r    s    z=TestOneTrickPonyABCs.test_Iterator.<locals>.NextOnly.__next__N)r,   rD   rE   r  r.   r.   r.   r/   NextOnly  s   r  )r)   r+  r   rn   r*  rW   rV   r   rh  r9   r   r;   r=   rg  rv  rR   r  rH  r   ro   r'  )r-   r_  r   r`  r  r.   r.   r/   test_Iterator  s"    
"
"z"TestOneTrickPonyABCs.test_Iteratorc             C   s  G dd d}G dd d}G dd d}d ddd	d
ddg i t  tdtg | | | g}x6|D ].}| |t | tt|ttt| qbW G dd d}G dd dt}dd }| dd  | | g}	xB|	D ]:}| |t	 | |t | 
tt|ttt| qW | tdd | }
| |
t|
 | |
d t|
 | d|
d | |
  | t|
jt | td|
jttd | t|
jt  G dd dt}| t| j G dd dt}| t| j d S )Nc               @   s.   e Zd Zdd Zdd Zdd Zd
dd	ZdS )z4TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1c             S   s   | S )Nr.   )r-   r.   r.   r/   rr    r%  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__iter__c             S   s   d S )Nr.   )r-   r.   r.   r/   r    r%  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.__next__c             S   s   d S )Nr.   )r-   r.   r.   r/   r]    r%  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.closeNc             S   s   d S )Nr.   )r-   rS  rT  rU  r.   r.   r/   rR    r%  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen1.throw)NN)r,   rD   rE   rr  r  r]  rR  r.   r.   r.   r/   NonGen1  s   r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z4TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2c             S   s   | S )Nr.   )r-   r.   r.   r/   rr    r%  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__iter__c             S   s   d S )Nr.   )r-   r.   r.   r/   r    r%  z=TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.__next__c             S   s   d S )Nr.   )r-   r.   r.   r/   r]    r%  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.closec             S   s   |S )Nr.   )r-   rO  r.   r.   r/   rP    r%  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen2.sendN)r,   rD   rE   rr  r  r]  rP  r.   r.   r.   r/   NonGen2  s   r  c               @   s&   e Zd Zdd Zdd ZdddZdS )	z4TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3c             S   s   d S )Nr.   )r-   r.   r.   r/   r]    r%  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.closec             S   s   |S )Nr.   )r-   rO  r.   r.   r/   rP    r%  z9TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.sendNc             S   s   d S )Nr.   )r-   rS  rT  rU  r.   r.   r/   rR    r%  z:TestOneTrickPonyABCs.test_Generator.<locals>.NonGen3.throw)NN)r,   rD   rE   r]  rP  rR  r.   r.   r.   r/   NonGen3  s   r  r   gQ	@y              ?r%  r   r.   c               @   s6   e Zd Zdd Zdd Zdd Zdd Zdd
dZd	S )z0TestOneTrickPonyABCs.test_Generator.<locals>.Genc             S   s   | S )Nr.   )r-   r.   r.   r/   rr    r%  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__iter__c             S   s   d S )Nr.   )r-   r.   r.   r/   r  	  r%  z9TestOneTrickPonyABCs.test_Generator.<locals>.Gen.__next__c             S   s   d S )Nr.   )r-   r.   r.   r/   r]  
  r%  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.closec             S   s   |S )Nr.   )r-   rO  r.   r.   r/   rP    r%  z5TestOneTrickPonyABCs.test_Generator.<locals>.Gen.sendNc             S   s   d S )Nr.   )r-   rS  rT  rU  r.   r.   r/   rR    r%  z6TestOneTrickPonyABCs.test_Generator.<locals>.Gen.throw)NN)r,   rD   rE   rr  r  r]  rP  rR  r.   r.   r.   r/   Gen  s
   r  c                   s&   e Zd Zdd Zd fdd	Z  ZS )z7TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGenc             S   s   |S )Nr.   )r-   rO  r.   r.   r/   rP    s    z<TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.sendNc                s   t  ||| d S )N)rQ  rR  )r-   rS  rT  rU  )rV  r.   r/   rR    s    z=TestOneTrickPonyABCs.test_Generator.<locals>.MinimalGen.throw)NN)r,   rD   rE   rP  rR  rW  r.   r.   )rV  r/   
MinimalGen  s   r  c               s   s
   dV  d S )NrG   r.   r.   r.   r.   r/   rJ    s    z0TestOneTrickPonyABCs.test_Generator.<locals>.genc               s   s   d V S )Nr.   r.   r.   r.   r/   r$    r%  z5TestOneTrickPonyABCs.test_Generator.<locals>.<lambda>rP  rR  rH   z^huhu$Zhuhuc               @   s   e Zd Zdd Zdd ZdS )z8TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClosec             S   s   |S )Nr.   )r-   rO  r.   r.   r/   rP  *  r%  z=TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.sendc             W   s   t d S )N)r   )r-   r   r.   r.   r/   rR  +  r%  z>TestOneTrickPonyABCs.test_Generator.<locals>.FailOnClose.throwN)r,   rD   rE   rP  rR  r.   r.   r.   r/   FailOnClose)  s   r  c               @   s   e Zd Zdd Zdd ZdS )z@TestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExitc             S   s   |S )Nr.   )r-   rO  r.   r.   r/   rP  0  r%  zETestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.sendc             W   s   d S )Nr.   )r-   r   r.   r.   r/   rR  1  r%  zFTestOneTrickPonyABCs.test_Generator.<locals>.IgnoreGeneratorExit.throwN)r,   rD   rE   rP  rR  r.   r.   r.   r/   IgnoreGeneratorExit/  s   r  )r)   r   r+  r   rn   r*  rW   rV   r   r   ro   r'  r6   rP  nextr4   r   r]  rv   r   rR  ZassertRaisesRegexStopIterationRuntimeError)r-   r  r  r  r_  r   r  r  rJ  r`  mgenr  r  r.   r.   r/   test_Generator  s<    
"
"z#TestOneTrickPonyABCs.test_Generatorc             C   s  G dd d}G dd d}G dd d}d ddd	d
ddg i t  tdtg | | | g}x6|D ].}| |t | tt|ttt| qbW G dd d}G dd dt}dd }| | | g}	xB|	D ]:}| |t	 | |t | 
tt|ttt| qW | tdd dd }
| }| ||  | |
|d |
|  | d|
|d | |
|  | t |
|t W d Q R X G dd dt}| t |
|   W d Q R X G dd dt}| t |
|   W d Q R X d S )Nc               @   s.   e Zd Zdd Zdd Zdd Zd
dd	ZdS )z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1c             S   s   | S )Nr.   )r-   r.   r.   r/   rk  7  r%  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__aiter__c             S   s   d S )Nr.   )r-   r.   r.   r/   ro  8  r%  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.__anext__c             S   s   d S )Nr.   )r-   r.   r.   r/   aclose9  r%  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.acloseNc             S   s   d S )Nr.   )r-   rS  rT  rU  r.   r.   r/   athrow:  r%  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen1.athrow)NN)r,   rD   rE   rk  ro  r  r  r.   r.   r.   r/   NonAGen16  s   r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2c             S   s   | S )Nr.   )r-   r.   r.   r/   rk  =  r%  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__aiter__c             S   s   d S )Nr.   )r-   r.   r.   r/   ro  >  r%  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.__anext__c             S   s   d S )Nr.   )r-   r.   r.   r/   r  ?  r%  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.aclosec             S   s   |S )Nr.   )r-   rO  r.   r.   r/   asend@  r%  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen2.asendN)r,   rD   rE   rk  ro  r  r  r.   r.   r.   r/   NonAGen2<  s   r  c               @   s&   e Zd Zdd Zdd ZdddZdS )	z:TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3c             S   s   d S )Nr.   )r-   r.   r.   r/   r  C  r%  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.aclosec             S   s   |S )Nr.   )r-   rO  r.   r.   r/   r  D  r%  z@TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.asendNc             S   s   d S )Nr.   )r-   rS  rT  rU  r.   r.   r/   r  E  r%  zATestOneTrickPonyABCs.test_AsyncGenerator.<locals>.NonAGen3.athrow)NN)r,   rD   rE   r  r  r  r.   r.   r.   r/   NonAGen3B  s   r  r   gQ	@y              ?r%  r   r.   c               @   s6   e Zd Zdd Zdd Zdd Zdd Zdd
dZd	S )z5TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Genc             S   s   | S )Nr.   )r-   r.   r.   r/   rk  O  r%  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__aiter__c                s   d S )Nr.   )r-   r.   r.   r/   ro  P  r%  z?TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.__anext__c                s   d S )Nr.   )r-   r.   r.   r/   r  Q  r%  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.aclosec                s   |S )Nr.   )r-   rO  r.   r.   r/   r  R  r%  z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.asendNc                s   d S )Nr.   )r-   rS  rT  rU  r.   r.   r/   r  S  r%  z<TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.Gen.athrow)NN)r,   rD   rE   rk  ro  r  r  r  r.   r.   r.   r/   r  N  s
   r  c                   s&   e Zd Zdd Zd fdd	Z  ZS )z=TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGenc                s   |S )Nr.   )r-   rO  r.   r.   r/   r  V  s    zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.asendNc                s   t  |||I d H  d S )N)rQ  r  )r-   rS  rT  rU  )rV  r.   r/   r  X  s    zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.MinimalAGen.athrow)NN)r,   rD   rE   r  r  rW  r.   r.   )rV  r/   MinimalAGenU  s   r  c               S  s
   dV  d S )NrG   r.   r.   r.   r.   r/   rJ  [  s    z5TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.genr  r  c          
   S   sV   d }xLy|  d  W q tk
rL } z|jr6|jd nd }P W d d }~X Y qX qW |S )Nr   )rP  r  r   )rK  r  Zexr.   r.   r/   	run_asynce  s    z;TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.run_asyncrH   c               @   s   e Zd Zdd Zdd ZdS )z=TestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClosec                s   |S )Nr.   )r-   rO  r.   r.   r/   r  y  r%  zCTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.asendc                s   t d S )N)r   )r-   r   r.   r.   r/   r  z  r%  zDTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.FailOnClose.athrowN)r,   rD   rE   r  r  r.   r.   r.   r/   r  x  s   r  c               @   s   e Zd Zdd Zdd ZdS )zETestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExitc                s   |S )Nr.   )r-   rO  r.   r.   r/   r    r%  zKTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.asendc                s   d S )Nr.   )r-   r   r.   r.   r/   r    r%  zLTestOneTrickPonyABCs.test_AsyncGenerator.<locals>.IgnoreGeneratorExit.athrowN)r,   rD   rE   r  r  r.   r.   r.   r/   r    s   r  )r)   r   r+  r   rn   r*  rW   rV   r   r   ro   r'  r6   rk  r  ro  r4   r   r  rv   r   r  r  )r-   r  r  r  r_  r   r  r  rJ  r`  r  r  r  r  r.   r.   r/   test_AsyncGenerator5  s>    
"
"z(TestOneTrickPonyABCs.test_AsyncGeneratorc             C   s   d dddt  dd dD g}x6|D ].}| |t | tt|ttt| q"W t t t	 t
 t t t t  t  t  g
}x6|D ].}| |t | tt|ttt| qW | td | td d S )Nr   gQ	@y              ?c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r     s    z2TestOneTrickPonyABCs.test_Sized.<locals>.<genexpr>r.   r  )rH  r+  r   rn   r*  rW   rV   rh  r9   r   r;   r)   rg  r=   rv  rR   r  r   ro   r'  r,  )r-   r_  r   r`  r.   r.   r/   
test_Sized  s    
"
"zTestOneTrickPonyABCs.test_Sizedc          
   C   s   d dddt  dd dD g}x6|D ].}| |t | tt|ttt| q"W t t t	 t
 t t t t  t  g	}x6|D ].}| |t | tt|ttt| qW | td | td d S )Nr   gQ	@y              ?c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r     s    z6TestOneTrickPonyABCs.test_Container.<locals>.<genexpr>r.   r   )rH  r+  r   rn   r*  rW   rV   rh  r9   r   r;   r)   rg  r=   rv  rR   r   ro   r'  r,  )r-   r_  r   r`  r.   r.   r/   test_Container  s    
"
"z#TestOneTrickPonyABCs.test_Containerc             C   s   d ddddddg i t  t dd dD g}x6|D ].}| |t | tt|ttt| q0W d	d
 ttt	t
tjg jg}x6|D ].}| |t | tt|ttt| qW | td | td d S )Nr   gQ	@y              ?r   r%  r.   c             s   s   | ]
}|V  qd S )Nr.   )r   r   r.   r.   r/   r     s    z5TestOneTrickPonyABCs.test_Callable.<locals>.<genexpr>c               S   s   d S )Nr.   r.   r.   r.   r/   r$    r%  z4TestOneTrickPonyABCs.test_Callable.<locals>.<lambda>__call__)r)   rH  r+  r   rn   r*  rW   rV   r\  r   rS   r;   r@   r   ro   r'  r,  )r-   r_  r   r`  r.   r.   r/   test_Callable  s     
"
"z"TestOneTrickPonyABCs.test_Callablec             C   sP   xJt ttttttfD ]4}G dd d|}| t|| | 	tt
| qW d S )Nc               @   s   e Zd ZdS )z7TestOneTrickPonyABCs.test_direct_subclassing.<locals>.CN)r,   rD   rE   r.   r.   r.   r/   r     s   r   )r   r   r   r   r   r   r   ro   r*  rn   r\  )r-   r   r   r.   r.   r/   test_direct_subclassing  s    z,TestOneTrickPonyABCs.test_direct_subclassingc             C   s\   xVt ttttttfD ]@}G dd d}| t|||j	 |
| | t|| qW d S )Nc               @   s   e Zd ZdZdS )z1TestOneTrickPonyABCs.test_registration.<locals>.CN)r,   rD   rE   r(  r.   r.   r.   r/   r     s   r   )r   r   r   r   r   r   r   rn   r*  r,   r^  ro   )r-   r   r   r.   r.   r/   test_registration  s
    
z&TestOneTrickPonyABCs.test_registrationN)r,   rD   rE   ra  rb  rj  rm  rq  rw  r  r  r  r  r  r  r  r  r  r  r.   r.   r.   r/   rI  p  s    2A":XGQrI  c               @   s>   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd ZdS )WithSetr.   c             C   s   t || _d S )N)r)   r3   )r-   itr.   r.   r/   r8    s    zWithSet.__init__c             C   s
   t | jS )N)rS   r3   )r-   r.   r.   r/   r    s    zWithSet.__len__c             C   s
   t | jS )N)r   r3   )r-   r.   r.   r/   rr    s    zWithSet.__iter__c             C   s
   || j kS )N)r3   )r-   r  r.   r.   r/   r     s    zWithSet.__contains__c             C   s   | j | d S )N)r3   r   )r-   r  r.   r.   r/   r     s    zWithSet.addc             C   s   | j | d S )N)r3   discard)r-   r  r.   r.   r/   r    s    zWithSet.discardN)r.   )	r,   rD   rE   r8  r  rr  r   r   r  r.   r.   r.   r/   r    s   
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!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+S ),TestCollectionABCsc             C   s`   x.t tgD ]"}| | t | t|t q
W | tddd G dd dt}| |  d S )Nr   rr  r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )z*TestCollectionABCs.test_Set.<locals>.MySetc             S   s   dS )NFr.   )r-   r   r.   r.   r/   r     s    z7TestCollectionABCs.test_Set.<locals>.MySet.__contains__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r    s    z2TestCollectionABCs.test_Set.<locals>.MySet.__len__c             S   s   t g S )N)r   )r-   r.   r.   r/   rr    s    z3TestCollectionABCs.test_Set.<locals>.MySet.__iter__N)r,   rD   rE   r   r  rr  r.   r.   r.   r/   MySet  s   r  )r)   rg  r   r   ro   r*  r'  rG  )r-   sampler  r.   r.   r/   test_Set  s    zTestCollectionABCs.test_Setc             C   s8   G dd dt }| |  }}| t|t|k d S )Nc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z8TestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSetc             S   s   dddg| _ d S )NrG   rH   rL   )contents)r-   r.   r.   r/   r8    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__init__c             S   s
   || j kS )N)r  )r-   r   r.   r.   r/   r     s    zETestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__contains__c             S   s
   t | jS )N)rS   r  )r-   r.   r.   r/   r    s    z@TestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__len__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rr    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__iter__c             S   s   |   S )N)_hash)r-   r.   r.   r/   r(    s    zATestCollectionABCs.test_hash_Set.<locals>.OneTwoThreeSet.__hash__N)r,   rD   rE   r8  r   r  rr  r(  r.   r.   r.   r/   OneTwoThreeSet  s
   r  )r   ro   ri  )r-   r  r'   r(   r.   r.   r/   test_hash_Set  s    z TestCollectionABCs.test_hash_Setc             C   sL   G dd dt }|d}|d}|d}| || | || d S )Nc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z5TestCollectionABCs.test_isdisjoint_Set.<locals>.MySetc             S   s
   || _ d S )N)r  )r-   itrr.   r.   r/   r8    s    z>TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r-   r   r.   r.   r/   r     s    zBTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rr  
  s    z>TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__iter__c             S   s   t dd | jD S )Nc             S   s   g | ]}|qS r.   r.   )r   r   r.   r.   r/   r     s    zQTestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rS   r  )r-   r.   r.   r/   r    s    z=TestCollectionABCs.test_isdisjoint_Set.<locals>.MySet.__len__N)r,   rD   rE   r8  r   rr  r  r.   r.   r.   r/   r    s   r  )rG   rH   rL   )r   rO      )rG   rO   r  )r   ro   
isdisjointrn   )r-   r  s1s2s3r.   r.   r/   test_isdisjoint_Set  s    	z&TestCollectionABCs.test_isdisjoint_Setc             C   s   G dd dt }|d}|d}|d}|d}| ||k | ||k  | ||k | ||k | ||k | || | || d S )Nc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z3TestCollectionABCs.test_equality_Set.<locals>.MySetc             S   s
   || _ d S )N)r  )r-   r  r.   r.   r/   r8    s    z<TestCollectionABCs.test_equality_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r-   r   r.   r.   r/   r     s    z@TestCollectionABCs.test_equality_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rr    s    z<TestCollectionABCs.test_equality_Set.<locals>.MySet.__iter__c             S   s   t dd | jD S )Nc             S   s   g | ]}|qS r.   r.   )r   r   r.   r.   r/   r     s    zOTestCollectionABCs.test_equality_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rS   r  )r-   r.   r.   r/   r    s    z;TestCollectionABCs.test_equality_Set.<locals>.MySet.__len__N)r,   rD   rE   r8  r   rr  r  r.   r.   r.   r/   r    s   r  )rG   )rG   rH   )rL   r   )r   ro   rn   r4   ZassertNotEqual)r-   r  r  r  r  Zs4r.   r.   r/   test_equality_Set  s    	z$TestCollectionABCs.test_equality_Setc             C   s<   G dd dt }|d}|d}||@ }| ||d d S )Nc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z5TestCollectionABCs.test_arithmetic_Set.<locals>.MySetc             S   s
   || _ d S )N)r  )r-   r  r.   r.   r/   r8  ,  s    z>TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r-   r   r.   r.   r/   r   .  s    zBTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rr  0  s    z>TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__iter__c             S   s   t dd | jD S )Nc             S   s   g | ]}|qS r.   r.   )r   r   r.   r.   r/   r   3  s    zQTestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__.<locals>.<listcomp>)rS   r  )r-   r.   r.   r/   r  2  s    z=TestCollectionABCs.test_arithmetic_Set.<locals>.MySet.__len__N)r,   rD   rE   r8  r   rr  r  r.   r.   r.   r/   r  +  s   r  )rG   rH   rL   )rL   r   rO   )rL   )r   r4   )r-   r  r  r  r  r.   r.   r/   test_arithmetic_Set*  s
    	z&TestCollectionABCs.test_arithmetic_Setc             C   sT   |  t t | ttt | t t | ttt | tddddd d S )Nr   rr  r  r   r  )	r   r)   r   ro   r*  r+  rg  rn   r'  )r-   r.   r.   r/   test_MutableSet9  s    z"TestCollectionABCs.test_MutableSetc             C   s,   t d}|t dM }| t|td d S )NabcdZcdefZcd)r  r4   r)   )r-   r  r.   r.   r/   test_issue_5647A  s    z"TestCollectionABCs.test_issue_5647c             C   s4   G dd dt }|ddddg}| | d d S )Nc               @   sL   e Zd ZdgZdddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )z1TestCollectionABCs.test_issue_4920.<locals>.MySetZ__sNc             S   s   |d krg }t || _d S )N)r)   	_MySet__s)r-   rR   r.   r.   r/   r8  K  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__init__c             S   s
   || j kS )N)r  )r-   rd   r.   r.   r/   r   O  s    z>TestCollectionABCs.test_issue_4920.<locals>.MySet.__contains__c             S   s
   t | jS )N)r   r  )r-   r.   r.   r/   rr  Q  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__iter__c             S   s
   t | jS )N)rS   r  )r-   r.   r.   r/   r  S  s    z9TestCollectionABCs.test_issue_4920.<locals>.MySet.__len__c             S   s   || j k}| j | |S )N)r  r   )r-   rd   r  r.   r.   r/   r   U  s    
z5TestCollectionABCs.test_issue_4920.<locals>.MySet.addc             S   s   || j k}| j | |S )N)r  r  )r-   rd   r  r.   r.   r/   r  Y  s    
z9TestCollectionABCs.test_issue_4920.<locals>.MySet.discardc             S   s   dt t|  S )Nz	MySet(%s))rV   r;   )r-   r.   r.   r/   __repr__]  s    z:TestCollectionABCs.test_issue_4920.<locals>.MySet.__repr__)N)r,   rD   rE   r   r8  r   rr  r  r   r  r  r.   r.   r.   r/   r  I  s   
r  rO   +   rH   rG   )r   r4   rt   )r-   r  r  r.   r.   r/   test_issue_4920G  s    z"TestCollectionABCs.test_issue_4920c             C   s~   t  }t td}t |}||8 }| || t |}||N }| || t |}||M }| || ||O }| || d S )Nr   )r  rY   r4   )r-   emptyZfullr  r.   r.   r/   test_issue8750b  s    z!TestCollectionABCs.test_issue8750c             C   sh   G dd dt }G dd dt }| }| }| ||k  | ||k | ||k | ||k d S )Nc               @   s$   e Zd Zdd Zdd Zdd ZdS )z;TestCollectionABCs.test_issue16373.<locals>.MyComparableSetc             S   s   dS )NFr.   )r-   r   r.   r.   r/   r   u  s    zHTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__contains__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r  w  s    zCTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__len__c             S   s   t g S )N)r   )r-   r.   r.   r/   rr  y  s    zDTestCollectionABCs.test_issue16373.<locals>.MyComparableSet.__iter__N)r,   rD   rE   r   r  rr  r.   r.   r.   r/   MyComparableSett  s   r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z>TestCollectionABCs.test_issue16373.<locals>.MyNonComparableSetc             S   s   dS )NFr.   )r-   r   r.   r.   r/   r   |  s    zKTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__contains__c             S   s   dS )Nr   r.   )r-   r.   r.   r/   r  ~  s    zFTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__len__c             S   s   t g S )N)r   )r-   r.   r.   r/   rr    s    zGTestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__iter__c             S   s   t S )N)NotImplemented)r-   r   r.   r.   r/   r=    s    zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__le__c             S   s   t S )N)r  )r-   r   r.   r.   r/   r;    s    zETestCollectionABCs.test_issue16373.<locals>.MyNonComparableSet.__lt__N)r,   rD   rE   r   r  rr  r=  r;  r.   r.   r.   r/   MyNonComparableSet{  s
   r  )r   rn   ro   )r-   r  r  csZncsr.   r.   r/   test_issue16373q  s    z"TestCollectionABCs.test_issue16373c       	      C   s   G dd d}G dd dt }td}| }||||g}|t||dt||dg}x&|D ]}x|D ]}| || qhW q^W | ||d | ||d | ||d	 | ||d d S )
Nc               @   s   e Zd Zdd ZdS )z=TestCollectionABCs.test_issue26915.<locals>.CustomEqualObjectc             S   s   dS )NFr.   )r-   r9  r.   r.   r/   r:    s    zDTestCollectionABCs.test_issue26915.<locals>.CustomEqualObject.__eq__N)r,   rD   rE   r:  r.   r.   r.   r/   CustomEqualObject  s   r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )z:TestCollectionABCs.test_issue26915.<locals>.CustomSequencec             S   s
   || _ d S )N)_seq)r-   seqr.   r.   r/   r8    s    zCTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__init__c             S   s
   | j | S )N)r  )r-   r   r.   r.   r/   r     s    zFTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__getitem__c             S   s
   t | jS )N)rS   r  )r-   r.   r.   r/   r    s    zBTestCollectionABCs.test_issue26915.<locals>.CustomSequence.__len__N)r,   rD   rE   r8  r   r  r.   r.   r.   r/   CustomSequence  s   r  nan)rG   rH   r   rG   rH   )r#   re  r!   r"   rT   r4   r   count)	r-   r  r  r  r7   r  Z
containers	containerelemr.   r.   r/   test_issue26915  s    

z"TestCollectionABCs.test_issue26915c             C   s   |  t|t| d S )N)ZassertSetEqualr)   )r-   r  r  r.   r.   r/   assertSameSet  s    z TestCollectionABCs.assertSameSetc          	   C   s   G dd dt }td}td}td}|d}|d}|d}td}td}	td}
||@ }| ||@ | | ||@ | | ||@ | | ||	@ | ||B }| ||B | | ||B | | ||B | | ||	B | || }|| }| || | | || | | || | | || | | || | | || | | ||	 | | || | ||A }| ||A | | ||A | | ||A | | ||	A | | ||k  | ||k  | ||k  | ||k  | ||k  | ||k  | ||k  | ||k  | ||k  | t ||
k  W d Q R X | t ||k  W d Q R X | t ||	k  W d Q R X | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d Q R X | t ||k W d Q R X | t ||	k W d Q R X | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d Q R X | t ||k W d Q R X | t ||	k W d Q R X | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t ||
k W d Q R X | t ||k W d Q R X | t ||	k W d Q R X | ||k | ||k | ||k | ||k | ||k | ||k | ||
k | ||k | ||	k | ||k | ||k | ||k | ||k | ||k | ||k | ||
k | ||k | ||	k d S )	Nc               @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )zLTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSetr.   c             S   s.   g | _ x"|D ]}|| j kr| j | qW d S )N)r3   r@   )r-   elementsr  r.   r.   r/   r8    s    

zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__init__c             S   s
   || j kS )N)r3   )r-   r  r.   r.   r/   r     s    zYTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__contains__c             S   s
   t | jS )N)r   r3   )r-   r.   r.   r/   rr    s    zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__iter__c             S   s
   t | jS )N)rS   r3   )r-   r.   r.   r/   r    s    zTTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__len__c             S   s   d | jS )Nz	Set({!r}))r+   r3   )r-   r.   r.   r/   r    s    zUTestCollectionABCs.test_Set_interoperability_with_real_sets.<locals>.ListSet.__repr__N)r.   )r,   rD   rE   r8  r   rr  r  r  r.   r.   r.   r/   ListSet  s
   
r  rB   ZbcdZabcdeZabccbaZbcddcbZ
abcdeedcba)r   r)   r;   r  ro   rn   rv   r   )r-   r  Zr1Zr2Zr3f1f2Zf3l1l2l3targetZ
fwd_targetZ
rev_targetr.   r.   r/   (test_Set_interoperability_with_real_sets  s    	z;TestCollectionABCs.test_Set_interoperability_with_real_setsc             C   sp   x,t gD ]"}| | t | t|t qW | tdddd G dd dt}| |  | tt	|  d S )Nr   rr  r  r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )z2TestCollectionABCs.test_Mapping.<locals>.MyMappingc             S   s   dS )Nr   r.   )r-   r.   r.   r/   r  N  s    z:TestCollectionABCs.test_Mapping.<locals>.MyMapping.__len__c             S   s   t d S )N)r   )r-   r{   r.   r.   r/   r   P  s    z>TestCollectionABCs.test_Mapping.<locals>.MyMapping.__getitem__c             S   s   t dS )Nr.   )r   )r-   r.   r.   r/   rr  R  s    z;TestCollectionABCs.test_Mapping.<locals>.MyMapping.__iter__N)r,   rD   rE   r  r   rr  r.   r.   r.   r/   	MyMappingM  s   r  )
r=   r   r   ro   r*  r'  rG  rv   r   rz  )r-   r  r  r.   r.   r/   test_MappingG  s    zTestCollectionABCs.test_Mappingc          	   C   sH   x,t gD ]"}| | t | t|t qW | tdddddd d S )Nr   rr  r  r   __setitem____delitem__)r=   r   r   ro   r*  r'  )r-   r  r.   r.   r/   test_MutableMappingW  s
    z&TestCollectionABCs.test_MutableMappingc             C   s   t  }d|d< | | t | | t | | t | | t t  }d|d< | dhB }| |t t| d|d< | 	t
|ddg t  }d|d< | dhB }| |t t| d|d< | 	t
|ddg d S )NrO   redorange   Zblue)r  rL   )r  rO   )r	   r   rv  r   r    rR   r!   r)   r;   r4   sorted)r-   ZmymaprN   r.   r.   r/   test_MutableMapping_subclass^  s(    z/TestCollectionABCs.test_MutableMapping_subclassc             C   s   x2t tttgD ]"}| | t | t|t qW | tdt | ttt | t	dt | tt	t | ttt | 
tdddd d S )Nr   r%  r   rr  r  r   )r   r;   rh  r9   r   r#   ro   r*  rY   
memoryviewr'  )r-   r  r.   r.   r/   test_Sequencew  s    z TestCollectionABCs.test_Sequencec       
   
      s   G dd dt } fdd}xttfD ]}|d}ddgttdt|d	  }||}x~t|d
hB D ]l}||||f xXtdt|d	 D ]B}|||||f x,tdt|d	 D ]}	||||||	f qW qW qhW q&W d S )Nc               @   s&   e Zd Zd	ddZdd Zdd ZdS )
zATestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclassr.   c             S   s
   || _ d S )N)r  )r-   r  r.   r.   r/   r8    s    zJTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__init__c             S   s
   | j | S )N)r  )r-   r   r.   r.   r/   r     s    zMTestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__getitem__c             S   s
   t | jS )N)rS   r  )r-   r.   r.   r/   r    s    zITestCollectionABCs.test_Sequence_mixins.<locals>.SequenceSubclass.__len__N)r.   )r,   rD   rE   r8  r   r  r.   r.   r.   r/   SequenceSubclass  s   
r  c                sh   y| j | }W n4 tk
rB    t |j |  W d Q R X Y n"X |j | } ||d| |f  d S )Nz
%r.index%s)r   r   rv   r4   )Zseq1Zseq2Z
index_argsZexpectedactual)r-   r.   r/   assert_index_same  s    
zBTestCollectionABCs.test_Sequence_mixins.<locals>.assert_index_sameabracadabraiirL   rN   )r#   r;   r9   rY   rS   r)   )
r-   r  r  ZtyZ	nativeseqZindexesZseqseqZletterr  stopr.   )r-   r/   test_Sequence_mixins  s    z'TestCollectionABCs.test_Sequence_mixinsc             C   s   x.t tgD ]"}| | t | t|t q
W x0tttgD ]"}| 	| t | 
t|t q<W | 	tdt | 
ttt d S )Nr%  )rh  rd  r   r%   ro   r*  r9   r;   r   r+  rn   r  )r-   r  r.   r.   r/   test_ByteString  s    z"TestCollectionABCs.test_ByteStringc          
   C   s   x0t ttgD ]"}| | t | t|t qW x0ttt	gD ]"}| 
| t | t|t q>W | ttt | tddddddd d S )Nr   rr  r  r   r  r  insert)r   r9   rh  r+  r$   rn   r*  r;   rd  r   r   ro   r'  )r-   r  r.   r.   r/   test_MutableSequence  s    
z'TestCollectionABCs.test_MutableSequencec             C   s   G dd dt }| }|d |d | t|d | |d d |  | |d d |  | t|d |d | t|d |d	7 }| t|d
 | |d d |  | t|d d S )Nc               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )zOTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclassc             S   s
   g | _ d S )N)lst)r-   r.   r.   r/   r8    s    zXTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__init__c             S   s   || j |< d S )N)r  )r-   r   rO  r.   r.   r/   r    s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__setitem__c             S   s
   | j | S )N)r  )r-   r   r.   r.   r/   r     s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__getitem__c             S   s
   t | jS )N)rS   r  )r-   r.   r.   r/   r    s    zWTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__len__c             S   s   | j |= d S )N)r  )r-   r   r.   r.   r/   r    s    z[TestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.__delitem__c             S   s   | j || d S )N)r  r  )r-   r   rO  r.   r.   r/   r    s    zVTestCollectionABCs.test_MutableSequence_mixins.<locals>.MutableSequenceSubclass.insertN)	r,   rD   rE   r8  r  r   r  r  r  r.   r.   r.   r/   MutableSequenceSubclass  s   r  r   )rG   rH   rL   r   rO   rL   rG   r   )r   rI   rJ   r  r   rJ   )	r$   r@   extendr4   rS   reversert   removeclear)r-   r  Zmssr.   r.   r/   test_MutableSequence_mixins  s"    


z.TestCollectionABCs.test_MutableSequence_mixinsN)r,   rD   rE   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    s,    #
r  c               @   s   e Zd Zdd Zdd ZdS )CounterSubclassWithSetItemc             O   s   d| _ tj| f|| d S )NF)calledr   r8  )r-   r   r   r.   r.   r/   r8    s    z#CounterSubclassWithSetItem.__init__c             C   s   d| _ t| || d S )NT)r  r   r  )r-   rb   rO  r.   r.   r/   r    s    z&CounterSubclassWithSetItem.__setitem__N)r,   rD   rE   r8  r  r.   r.   r.   r/   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )CounterSubclassWithGetc             O   s   d| _ tj| f|| d S )NF)r  r   r8  )r-   r   r   r.   r.   r/   r8    s    zCounterSubclassWithGet.__init__c             C   s   d| _ t| ||S )NT)r  r   rU   )r-   rb   defaultr.   r.   r/   rU     s    zCounterSubclassWithGet.getN)r,   rD   rE   r8  rU   r.   r.   r.   r/   r    s   r  c               @   st   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S )TestCounterc          
   C   s  t d}| |t dddd | |t dddd | |t | |t | tt t | tt t | t|d | t|	 d | t
|	 dddg | t
| ddd	g | t
|ddd	g | t
| d
ddg | |d d | |d d | |d	d | |dd | |ddd | |ddd | |tdddd | t|d | | d
ddg x2tdD ]&}| ||d
ddgd |  qW | dt
| d |d  d7  < |d  d8  < |d	= |d	= |d  d8  < d|d< |d  d7  < | |tdddddd | dt
| d | |dd | d| x*tdD ]}| \}}| || qW |  | |i  | t|d | tt jd | tt| |tddd  |jdd! |t d" |  |d# |d$ |  | |td%d&ddd' | |ddd | |d d | |ddd | |d d d S )(NZabcabarL   rH   rG   )r'   r(   rK   r  r'   r(   rK   )r'   rL   )r(   rH   )rK   rG   rN   r   TFr   z!Counter({'a': 3, 'b': 2, 'c': 1})rO   r   Zaaabbcra   r   re   rg   r   )r'   r(   ra   re   rg   Zaaaaffffz	Counter()rB   )r'   r(   )rK   ZPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbA   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZcdci+  iM  )r'   r(   rK   ra   ) r   r4   r   r=   r   ro   r*  rS   sumr  r  rv  rR   r   rU   rV   most_commonrY   r   r  rt   r   ru   r  rv   NotImplementedErrorr&  r   ri  rj   r8  
setdefault)r-   rK   r{   r  Zcntr.   r.   r/   rh     st    

zTestCounter.test_basicsc             C   s   |  ttdd dg |  ttdd dg |  ttd d dg | ttd | ttdd | ttj d S )Nr   )r-   )r-   r   )r   )r   r   )r   Nr.   )r4   r;   r   rR   rv   r   r8  )r-   r.   r.   r/   	test_init6  s    zTestCounter.test_initc             C   s   t  }|jdd | t| dg t  }|jdd | t| dg t  }|jd d | t| dg | tt  jd | tt  ji i  | tt j d S )Nr   )r-   )r-   r   )r   )r   r   )r   N)r   rj   r4   r;   rR   rv   r   )r-   rK   r.   r.   r/   test_update>  s    zTestCounter.test_updatec          
      s   t d  fdd}|  |t |t xDttjd D ]2} j|d |tt	| W d Q R X qRW |t
t t  }| || |t  d S )Nz)which witch had which witches wrist watchc                s*   d| f }  | |  |  d S )Nz
copy: %s
words: %s)r2   r4   )dupmsg)r-   r  r.   r/   checkP  s    z'TestCounter.test_copying.<locals>.checkrG   )rf   )r   r  r1   r^   rY   rZ   r[   ZsubTestr\   r]   r_   rV   rj   )r-   r  rf   Zupdate_testr.   )r-   r  r/   test_copyingL  s    $
zTestCounter.test_copyingc             C   sX   G dd dt }|d}| }| || | t|t| | t|t| d S )Nc               @   s   e Zd ZdS )z1TestCounter.test_copy_subclass.<locals>.MyCounterN)r,   rD   rE   r.   r.   r.   r/   	MyCountera  s   r  Zslartibartfast)r   r1   r4   rS   rW   )r-   r  rK   ra   r.   r.   r/   test_copy_subclass`  s    zTestCounter.test_copy_subclassc             C   sx   d}|  tt| t| |  tt|tt| |  tt|tt|  |  tt|t| d S )Nz%she sells sea shells by the sea shore)r4   r  r   r  r)   r=   rR   )r-   r  r.   r.   r/   test_conversionsi  s
     zTestCounter.test_conversionsc             C   s:   t dddd}x&|D ]}| ||k | || qW d S )Nr   r  r   )r'   r(   rK   )r   ro   rT   )r-   rK   r  r.   r.   r/   "test_invariant_for_the_in_operatorq  s    
z.TestCounter.test_invariant_for_the_in_operatorc             C   s  t ddddt   }| t|tdd d}xtdD ]}t tdd	 |D }|jd
ddd t tdd	 |D }|jd
ddd xt jdd ft jdd ft jdd ft jdd fgD ]`\}}|||}x4|D ],}	| |||	 ||	 ||	 ||	||f qW | 	dd	 |
 D  qW q8W d}xtdD ]}t tdd	 |D }t tdd	 |D }xht jtjft jtjft jtjfgD ]B\}}
|||}|
t| t| }| |t|d
 qW q4W d S )Nr   r  r   )r'   r(   rK   )r'   r  i  c             s   s   | ]}|t d dfV  qdS )r  r   N)r   )r   r  r.   r.   r/   r     s    z7TestCounter.test_multiset_operations.<locals>.<genexpr>rG   r   )re   rg   r}   c             s   s   | ]}|t d dfV  qdS )r  r   N)r   )r   r  r.   r.   r/   r     s    )rz   r{   ry   c             S   s   t d| | S )Nr   )r   )r   r   r.   r.   r/   r$    r%  z6TestCounter.test_multiset_operations.<locals>.<lambda>c             S   s   t d| | S )Nr   )r   )r   r   r.   r.   r/   r$    r%  c             S   s   t d| |S )Nr   )r   )r   r   r.   r.   r/   r$    r%  c             S   s   t dt| |S )Nr   )r   min)r   r   r.   r.   r/   r$    r%  c             s   s   | ]}|d kV  qdS )r   Nr.   )r   r   r.   r.   r/   r     s    ZabcdefrM   c             s   s   | ]}|t d dfV  qdS )r   rH   N)r   )r   r  r.   r.   r/   r     s    c             s   s   | ]}|t d dfV  qdS )r   rH   N)r   )r   r  r.   r.   r/   r     s    )r   r4   r=   rY   rj   __add____sub____or____and__ro   r  r)   r  r&  )r-   rK   r  r{   r   r   Z	counteropZnumberopr  r   ZsetopZcounter_resultZ
set_resultr.   r.   r/   test_multiset_operationsw  s:    

 


z$TestCounter.test_multiset_operationsc             C   s   d}xt dD ]}ttdd |D }|jdddd ttd	d |D }|jdddd
 xxtjtjftjtjftjtj	ftj
tjfgD ]H\}}| }t|}|||}	|||}
| |
|	 | t|
| qW qW d S )Nr  i  c             s   s   | ]}|t d dfV  qdS )r  r   N)r   )r   r  r.   r.   r/   r     s    z6TestCounter.test_inplace_operations.<locals>.<genexpr>rG   r   r   )re   rg   r}   c             s   s   | ]}|t d dfV  qdS )r  r   N)r   )r   r  r.   r.   r/   r     s    )rz   r{   ry   )rY   r   r=   rj   __iadd__r  __isub__r  __ior__r  __iand__r  r1   idr4   )r-   r  r{   r   r   Z
inplace_opZ
regular_oprK   Zc_idZregular_resultZinplace_resultr.   r.   r/   test_inplace_operations  s"    




z#TestCounter.test_inplace_operationsc             C   sP  t ddddddd}|jdd	d
ddddd | |t ddddddddd t ddddddd}|t dd	d
ddddd | |t ddddddddd t d}|d | |t dddddd t  }|jdd | t| dg t  }|jdd | t| dg | tt  jd | tt  ji i  | tt j d S )Nr   r   rO   r      r   )r'   r(   rK   ra   re   r}   rG   rH   r  rI   rJ   i)r'   r(   rK   ra   re   rg   rz   ir     ir   )r'   r(   rK   ra   re   rg   r}   rz   ZaaabbcdZ	aaaabbccer   )r'   r(   rK   ra   re   r   )r-   )r-   i)r   )r   i)r   subtractr4   r;   rR   rv   r   )r-   rK   r.   r.   r/   test_subtract  s$      
zTestCounter.test_subtractc          	   C   sN   t ddddddd}| t|
 tddddd | t| tdd	 d S )
Nr   r   rO   r   r  r   )r'   r(   rK   ra   re   r}   )rK   ra   re   r}   )r'   )r   r4   r=   )r-   rK   r.   r.   r/   
test_unary  s    zTestCounter.test_unaryc             C   s0   t dd d}t|}| d| | d| d S )NrH   )r'   r(   z'a': 2z	'b': None)r   rV   rT   )r-   rK   r   r.   r.   r/   test_repr_nonsortable  s    z!TestCounter.test_repr_nonsortablec          	   C   s   t d}t }t|| | |dddddd t }t|| | |tdddd	d
g td}| |j | t|dddddd td}| |j | t|dddddd d S )Nr  rO   rH   rG   )r'   r   r(   rK   ra   )r'   rO   )r(   rH   )r   rH   )rK   rG   )ra   rG   )r'   r(   rK   ra   r   )	r;   r=   r   r4   r   r  ro   r  r  )r-   Zelemsra   r   rK   r.   r.   r/   test_helper_function  s    

z TestCounter.test_helper_functionN)r,   rD   rE   rh   r  r  r  r  r  r  r  r  r   r!  r"  r#  r.   r.   r.   r/   r    s   <	'r  c             C   s8   t jtd}t|tttttg}t	j
|  t	t|  d S )N)r   )doctestZDocTestSuiter   r   rI  r  r  rF   r&   r   Zrun_unittestZrun_doctest)r  ZNamedTupleDocsZtest_classesr.   r.   r/   	test_main  s    
r%  __main__T)r  )N)Br   r   r1   r$  r   r   rZ   Zrandomr   r   rer   r
  r5   r   rZ  r   r   r   r   r   r	   r
   r   r   r   Zcollections.abcr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   ZTestCaser&   rF   r   r   r#  rH  rI  r  r  r  r  r  r%  r,   r.   r.   r.   r/   <module>   sh   0 #
  A;    a    			 v


