3
r«Y];8  ã               @   sÜ   d Z ddlZddlZddlZddlmZ dd„ ZG dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZ	G dd„ dƒZ
G dd„ dƒZG dd„ dƒZG dd„ dƒZddlmZ dd„ ZG dd„ deƒZG dd„ deƒZG dd„ dejƒZdS )z3
Tests common to tuple, list and UserList.UserList
é    N)Úsupportc             c   s   x| D ]
}|V  qW dS )zRegular generatorN© )ÚseqnÚir   r   úlib/python3.6/test/seq_tests.pyÚiterfunc   s    
r   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚSequencezSequence using __getitem__c             C   s
   || _ d S )N)r   )Úselfr   r   r   r   Ú__init__   s    zSequence.__init__c             C   s
   | j | S )N)r   )r	   r   r   r   r   Ú__getitem__   s    zSequence.__getitem__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   r   r   r   r      s   r   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚIterFuncz Sequence using iterator protocolc             C   s   || _ d| _d S )Nr   )r   r   )r	   r   r   r   r   r
      s    zIterFunc.__init__c             C   s   | S )Nr   )r	   r   r   r   Ú__iter__   s    zIterFunc.__iter__c             C   s2   | j t| jƒkrt‚| j| j  }|  j d7  _ |S )Né   )r   Úlenr   ÚStopIteration)r	   Úvr   r   r   Ú__next__   s
     zIterFunc.__next__N)r   r   r   r   r
   r   r   r   r   r   r   r      s   r   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚIterGenz9Sequence using iterator protocol defined with a generatorc             C   s   || _ d| _d S )Nr   )r   r   )r	   r   r   r   r   r
   '   s    zIterGen.__init__c             c   s   x| j D ]
}|V  qW d S )N)r   )r	   Úvalr   r   r   r   *   s    zIterGen.__iter__N)r   r   r   r   r
   r   r   r   r   r   r   %   s   r   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚIterNextOnlyz Missing __getitem__ and __iter__c             C   s   || _ d| _d S )Nr   )r   r   )r	   r   r   r   r   r
   0   s    zIterNextOnly.__init__c             C   s2   | j t| jƒkrt‚| j| j  }|  j d7  _ |S )Nr   )r   r   r   r   )r	   r   r   r   r   r   3   s
     zIterNextOnly.__next__N)r   r   r   r   r
   r   r   r   r   r   r   .   s   r   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú
IterNoNextzIterator missing __next__()c             C   s   || _ d| _d S )Nr   )r   r   )r	   r   r   r   r   r
   ;   s    zIterNoNext.__init__c             C   s   | S )Nr   )r	   r   r   r   r   >   s    zIterNoNext.__iter__N)r   r   r   r   r
   r   r   r   r   r   r   9   s   r   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Ú
IterGenExczTest propagation of exceptionsc             C   s   || _ d| _d S )Nr   )r   r   )r	   r   r   r   r   r
   C   s    zIterGenExc.__init__c             C   s   | S )Nr   )r	   r   r   r   r   F   s    zIterGenExc.__iter__c             C   s   dd  d S )Né   r   r   )r	   r   r   r   r   H   s    zIterGenExc.__next__N)r   r   r   r   r
   r   r   r   r   r   r   r   A   s   r   c               @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚIterFuncStopzTest immediate stopc             C   s   d S )Nr   )r	   r   r   r   r   r
   M   s    zIterFuncStop.__init__c             C   s   | S )Nr   )r	   r   r   r   r   O   s    zIterFuncStop.__iter__c             C   s   t ‚d S )N)r   )r	   r   r   r   r   Q   s    zIterFuncStop.__next__N)r   r   r   r   r
   r   r   r   r   r   r   r   K   s   r   )Úchainc             C   s   t tdd„ ttt| ƒƒƒƒƒS )z Test multiple tiers of iteratorsc             S   s   | S )Nr   )Úxr   r   r   Ú<lambda>W   s    zitermulti.<locals>.<lambda>)r   Úmapr   r   r   )r   r   r   r   Ú	itermultiU   s    r"   c               @   s   e Zd Zdd„ ZdS )Ú
LyingTuplec             c   s
   dV  d S )Nr   r   )r	   r   r   r   r   Z   s    zLyingTuple.__iter__N)r   r   r   r   r   r   r   r   r#   Y   s   r#   c               @   s   e Zd Zdd„ ZdS )Ú	LyingListc             c   s
   dV  d S )Nr   r   )r	   r   r   r   r   ^   s    zLyingList.__iter__N)r   r   r   r   r   r   r   r   r$   ]   s   r$   c               @   s°   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ ZdS )*Ú
CommonTestNc             C   sÔ  g }dg}ddg}| j ƒ }| j |ƒ}| j |ƒ}| j |ƒ}| j |ƒ}| j |ƒ}	| j |ƒ}
| j |ƒ}| j t|ƒƒ}G dd„ dƒ}||ƒ}| j |ƒ}| jt|ƒt|ƒƒ d}| j |ƒ}| jt|ƒt|ƒƒ xÎddtdƒdtdddƒfD ]°}x2ttttt	fD ] }| j| j ||ƒƒ| j |ƒƒ qôW | j| j t
|ƒƒ| j ƒ ƒ | j| j dd„ dD ƒƒ| j dƒƒ | jt| j t|ƒƒ | jt| j t|ƒƒ | jt| j t|ƒƒ qàW | j| j tdƒƒ| j dƒƒ | j| j tdgƒƒ| j dgƒƒ d S )Nr   r   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z.CommonTest.test_constructors.<locals>.OtherSeqc             S   s
   || _ d S )N)Ú_OtherSeq__data)r	   Zinitseqr   r   r   r
   v   s    z7CommonTest.test_constructors.<locals>.OtherSeq.__init__c             S   s
   t | jƒS )N)r   r&   )r	   r   r   r   Ú__len__x   s    z6CommonTest.test_constructors.<locals>.OtherSeq.__len__c             S   s
   | j | S )N)r&   )r	   r   r   r   r   r   z   s    z:CommonTest.test_constructors.<locals>.OtherSeq.__getitem__N)r   r   r   r
   r'   r   r   r   r   r   ÚOtherSequ   s   r(   zthis is also a sequenceZ123Ú iè  Údoç333333ó?iÐ  i˜  é   c             s   s   | ]
}|V  qd S )Nr   )Ú.0Úcr   r   r   ú	<genexpr>Š   s    z/CommonTest.test_constructors.<locals>.<genexpr>é   )r*   r+   )r0   )r   )Ú	type2testÚtupleÚassertEqualr   Úranger   r   r   r"   r   r   ÚassertRaisesÚ	TypeErrorr   r   ÚZeroDivisionErrorr   r#   r$   )r	   Zl0Úl1Úl2ÚuZu0Úu1Úu2ÚuuZuu0Zuu1Zuu2r   r(   ÚsZv0ZvvÚgr   r   r   Útest_constructorse   s<    








  "zCommonTest.test_constructorsc             C   s$   | j | jƒ ƒ | j| jdgƒƒ d S )Né*   )ZassertFalser1   Z
assertTrue)r	   r   r   r   Ú
test_truth“   s    zCommonTest.test_truthc             C   sŠ  | j dddddgƒ}x8tt|ƒƒD ](}| j|| |ƒ | j|t|ƒ |ƒ q"W xLtt|ƒ dƒD ]8}| j|| t|ƒ| ƒ | j|t|ƒ t|ƒ| ƒ q`W | jt|jt|ƒ d ƒ | jt|jt|ƒƒ | jt|jt	dddƒƒ | j ƒ }| jt|jdƒ | jt|jd	ƒ | jt
|jƒ | j ddgƒ}| j|d dƒ | j|d dƒ | j|d
 dƒ | j|d dƒ | jt|jdƒ | jt|jdƒ d S )Nr   r   r0   r   é   é
   é   éÿÿÿÿrF   éþÿÿÿrF   éýÿÿÿ)r1   r4   r   r3   Úintr5   Ú
IndexErrorr   Ú
ValueErrorÚslicer6   )r	   r:   r   Úar   r   r   Útest_getitem—   s*     zCommonTest.test_getitemc             C   s0  dddddg}| j |ƒ}| j|dd… | j ƒ ƒ | j|dd… | j dgƒƒ | j|d
d… | j dgƒƒ | j|dd… |ƒ | j|dd… | j g ƒƒ | j|d d … |ƒ | j|dd … | j ddddgƒƒ | j|d d… | j dddgƒƒ | j|d d … |ƒ | j|d d d… | j dddgƒƒ | j|dd d… | j ddgƒƒ | j|d d d… | j dddddgƒƒ | j|d d d… | j dddgƒƒ | j|dd d… | j ddgƒƒ | j|ddd… | j g ƒƒ | j|ddd… | j dgƒƒ | j|ddd… | j dgƒƒ | j|ddd… | j ddgƒƒ | j|d d d… | j dgƒƒ | j|dd… | j g ƒƒ | j|dd… |ƒ | j|ddd… |d d d… ƒ | j|ddd… | j g ƒƒ | j|ddd… | j dddgƒƒ | j dddddgƒ}| j|tddƒ d… | j dddgƒƒ | j|dtdd	ƒ… | j ddgƒƒ d S )Nr   r   r0   r   rC   iè  éd   é€   é‘   rG   rF   iüÿÿiüÿÿrF   rG   rG   rG   rG   rG   rG   iœÿÿÿiœÿÿÿiœÿÿÿiœÿÿÿrF   rF   iœÿÿÿrF   iœÿÿÿ)r1   r3   Úpow)r	   Úlr:   rM   r   r   r   Útest_getslice±   s:    
" " &"   "(zCommonTest.test_getslicec             C   sj   | j dddgƒ}x|D ]}| j||ƒ qW x,t|ƒd t|ƒd fD ]}| j||ƒ qDW | jt|jƒ d S )Nr   r   r0   )r1   ÚassertInÚminÚmaxÚassertNotInr5   r6   Ú__contains__)r	   r:   r   r   r   r   Útest_containsÕ   s    
zCommonTest.test_containsc             C   s<   G dd„ dƒ}| j |ƒ | jg ƒƒ | j|ƒ | jdgƒƒ d S )Nc               @   s   e Zd Zdd„ ZdZdS )z,CommonTest.test_contains_fake.<locals>.AllEqc             S   s   dS )NTr   )r	   Úotherr   r   r   Ú__eq__ã   s    z3CommonTest.test_contains_fake.<locals>.AllEq.__eq__N)r   r   r   r\   Ú__hash__r   r   r   r   ÚAllEqß   s   r^   r   )rX   r1   rU   )r	   r^   r   r   r   Útest_contains_fakeÞ   s    zCommonTest.test_contains_fakec                sb   G dd„ dt ƒ‰ G ‡ fdd„dƒ}| jd|ƒ gƒ}| jd|ƒ | j|ƒ dgƒ}| jˆ |jdƒ d S )Nc               @   s   e Zd ZdS )z3CommonTest.test_contains_order.<locals>.DoNotTestEqN)r   r   r   r   r   r   r   ÚDoNotTestEqí   s   r`   c                   s   e Zd Z‡ fdd„ZdS )z4CommonTest.test_contains_order.<locals>.StopComparesc                s   ˆ ‚d S )Nr   )r	   r[   )r`   r   r   r\   ð   s    z;CommonTest.test_contains_order.<locals>.StopCompares.__eq__N)r   r   r   r\   r   )r`   r   r   ÚStopComparesï   s   ra   r   )Ú	Exceptionr1   rU   r5   rY   )r	   ra   Z
checkfirstZ	checklastr   )r`   r   Útest_contains_orderé   s    zCommonTest.test_contains_orderc             C   sb   | j t| jƒ ƒdƒ | j t| jg ƒƒdƒ | j t| jdgƒƒdƒ | j t| jdddgƒƒdƒ d S )Nr   r   r0   r   )r3   r   r1   )r	   r   r   r   Útest_lenø   s    zCommonTest.test_lenc             C   s4   | j dddgƒ}| jt|ƒdƒ | jt|ƒdƒ d S )Nr   r   r0   )r1   r3   rV   rW   )r	   r:   r   r   r   Útest_minmaxþ   s    zCommonTest.test_minmaxc             C   sÎ  | j dgƒ}| j ddgƒ}| j||| j ƒ  ƒ | j|| j ƒ | ƒ | j|| j dgƒ |ƒ | j| j dgƒ| | j ddgƒƒ | j| j ƒ |d ƒ | j| j ƒ d| ƒ | j| j ƒ |d ƒ | j| j ƒ d| ƒ | j||d ƒ | j|d| ƒ | j||d ƒ | j|d| ƒ | j|| |d ƒ | j|| d| ƒ | j|| |d ƒ | j|| d| ƒ | j|| | |d ƒ | j|| | d| ƒ G dd„ d| j ƒ}|ddgƒ}| j||d ƒ | j||d ƒ d S )	Nr   r   r0   r   c               @   s   e Zd ZdS )z(CommonTest.test_addmul.<locals>.subclassN)r   r   r   r   r   r   r   Úsubclass  s   rf   rF   rF   )r1   r3   ZassertIsNot)r	   r;   r<   rf   Zu3r   r   r   Útest_addmul  s0    "zCommonTest.test_addmulc          	   C   sº   | j ddgƒ}|| j ƒ 7 }| j|| j ddgƒƒ || j ddgƒ7 }| j|| j ddddgƒƒ || j ddgƒ7 }| j|| j ddddddgƒƒ | j dƒ}|| j dƒ7 }| j|| j d	ƒƒ d S )
Nr   r   r0   r   rC   r,   ZspamZeggsZspameggs)r1   r3   )r	   r:   r   r   r   Ú	test_iadd  s    
zCommonTest.test_iaddc          	   C   s8   | j ddgƒ}|d9 }| j|| j ddddddgƒƒ d S )Nr   r   r   )r1   r3   )r	   r:   r   r   r   Ú	test_imul,  s    zCommonTest.test_imulc             C   s.   G dd„ d| j ƒ}| jtt|dƒƒƒdƒ d S )Nc               @   s   e Zd Zdd„ ZdS )z/CommonTest.test_getitemoverwriteiter.<locals>.Tc             S   s   t |ƒd S )Nz!!!)Ústr)r	   Úkeyr   r   r   r   4  s    z;CommonTest.test_getitemoverwriteiter.<locals>.T.__getitem__N)r   r   r   r   r   r   r   r   ÚT3  s   rl   r   r0   )r   r0   )r1   r3   ÚnextÚiter)r	   rl   r   r   r   Útest_getitemoverwriteiter1  s    z$CommonTest.test_getitemoverwriteiterc             C   sŠ   x„t dƒD ]x}tt |ƒƒ}x2t ddƒD ]$}| j| j|| ƒ| j|ƒ| ƒ q&W | j| j|ƒd | jg ƒƒ | jt|ƒt|d ƒƒ q
W d S )NrC   r   r,   r   rH   éüÿÿÿ)r4   r2   r3   r1   Úid)r	   Úmr>   Únr   r   r   Útest_repeat8  s    $zCommonTest.test_repeatc             C   sL   t jdkrH| jdgƒ}|d9 }| jt|jdƒ t|dƒrH| jt|jdƒ d S )	Niÿÿÿr   r0   é   Ú__imul__i   i   i   )ÚsysÚmaxsizer1   r5   ÚMemoryErrorÚ__mul__Úhasattrrv   )r	   r   r   r   r   Útest_bigrepeat@  s    

zCommonTest.test_bigrepeatc             C   sD  | j ddgƒ}| j|jdƒdƒ | j|jdƒdƒ | j|jd	ƒdƒ | j|jd
ƒdƒ | jt|jdƒ | jt|jdƒ | j|jtddƒƒ| j dgƒƒ | j|jtddƒƒ| j dgƒƒ | j|jtddƒƒ| j ddgƒƒ | j|jtddƒƒ| j ddgƒƒ | j|jtddƒƒ| j g ƒƒ | jt|jtdddƒƒ | jt|jdƒ d S )NrD   rE   r   r   r0   r   r,   r   rG   rF   rH   )r1   r3   r   r5   rJ   rL   rK   r6   )r	   rM   r   r   r   Útest_subscriptH  s      ""zCommonTest.test_subscriptc                s   | j dddgƒd }| j|jdƒdƒ | j|jdƒdƒ | j|jdƒdƒ | jt|jƒ G dd„ dtƒ‰ G ‡ fdd„dƒ}| jˆ |j|ƒ ƒ d S )	Nr   r   r0   r   c               @   s   e Zd ZdS )z%CommonTest.test_count.<locals>.BadExcN)r   r   r   r   r   r   r   ÚBadExc`  s   r~   c                   s   e Zd Z‡ fdd„ZdS )z%CommonTest.test_count.<locals>.BadCmpc                s   |dkrˆ ƒ ‚dS )Nr0   Fr   )r	   r[   )r~   r   r   r\   d  s    z,CommonTest.test_count.<locals>.BadCmp.__eq__N)r   r   r   r\   r   )r~   r   r   ÚBadCmpc  s   r   )r1   r3   Úcountr5   r6   rb   )r	   rM   r   r   )r~   r   Ú
test_countX  s    zCommonTest.test_countc                sH  | j ddgƒ}| j|jdƒdƒ | j|jdƒdƒ | jt|jdƒ | j ddddddgƒ}| j|jdƒdƒ | j|jdƒdƒ | j|jddƒdƒ | j|jddƒdƒ | j|jddƒdƒ | j|jdddƒdƒ | jt|jdddƒ | jt|jƒ G dd„ dtƒ‰ G ‡ fd	d
„d
ƒ}| j ddddgƒ}| jˆ |j|ƒ ƒ | j ddddddgƒ}| j|jdƒdƒ | j|jddƒdƒ | j|jddƒdƒ | j|jddƒdƒ | j|jddƒdƒ | j|jddƒdƒ | j|jdddƒdƒ | j|jdddƒdƒ | j|jddtj	 dtj	 ƒdƒ | jt|jddtj	 dtj	 ƒ | jt|jdddƒ d S )Nr   r   r0   rD   r   rC   c               @   s   e Zd ZdS )z%CommonTest.test_index.<locals>.BadExcN)r   r   r   r   r   r   r   r~   |  s   r~   c                   s   e Zd Z‡ fdd„ZdS )z%CommonTest.test_index.<locals>.BadCmpc                s   |dkrˆ ƒ ‚dS )Nr0   Fr   )r	   r[   )r~   r   r   r\   €  s    z,CommonTest.test_index.<locals>.BadCmp.__eq__N)r   r   r   r\   r   )r~   r   r   r     s   r   rG   rF   rG   iöÿÿÿiöÿÿÿrG   rF   rp   rG   iöÿÿÿrH   rH   rG   rp   rp   iöÿÿÿ)
r1   r3   Úindexr5   rK   r€   r6   rb   rw   rx   )r	   r:   r   rM   r   )r~   r   Ú
test_indexk  s:    " zCommonTest.test_indexc             C   s`   | j ddddgƒ}xHttjd ƒD ]6}tjtj||ƒƒ}| j||ƒ | jt|ƒt|ƒƒ q"W d S )NrC   r,   é   é   r   )	r1   r4   ÚpickleZHIGHEST_PROTOCOLÚloadsÚdumpsr3   ZassertNotEqualrq   )r	   ZlstÚprotoZlst2r   r   r   Útest_pickle•  s
    zCommonTest.test_picklec             C   s$   t j| t| jƒ t j| t| jƒ d S )N)r   Zcheck_free_after_iteratingrn   r1   Úreversed)r	   r   r   r   Útest_free_after_iteratingœ  s    z$CommonTest.test_free_after_iterating)r   r   r   r1   r@   rB   rN   rT   rZ   r_   rc   rd   re   rg   rh   ri   ro   rt   r|   r}   r   rƒ   rŠ   rŒ   r   r   r   r   r%   a   s*   .$	*r%   )r   Zunittestrw   r†   Ztestr   r   r   r   r   r   r   r   r   Ú	itertoolsr   r"   r2   r#   Úlistr$   ZTestCaser%   r   r   r   r   Ú<module>   s"   	
	