B
    18™\(B  ã               @   sF   d Z ddlZddlZddlmZ ddlmZmZ G dd„ dejƒZdS )z,
Tests common to list and UserList.UserList
é    N)Ú
cmp_to_key)ÚsupportÚ	seq_testsc                   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‡ fd#d$„Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Z‡ fd/d0„Z‡ fd1d2„Zd3d4„ Zd5d6„ Zd7d8„ Z‡  ZS )9Ú
CommonTestc             C   s¦   |   |  g ¡|  ¡ ¡ |  dddg¡}| ¡  |   ||  g ¡¡ |  dddg¡}| dddg¡ |   ||  dddg¡¡ |  |¡}|  t|ƒt|ƒ¡ |   ||¡ d S )Né   é   é   é   é   é   )ÚassertEqualÚ	type2testÚ__init__ÚassertNotEqualÚid)ÚselfÚaÚb© r   úS/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/list_tests.pyÚ	test_init   s    
zCommonTest.test_initc          	   C   s,   g }d}|   t|¡ |d  W d Q R X d S )Nz'list indices must be integers or slicesr   )ÚassertRaisesRegexÚ	TypeError)r   r   Úmsgr   r   r   Útest_getitem_error!   s    zCommonTest.test_getitem_errorc          	   C   s,   g }d}|   t|¡ d|d< W d Q R X d S )Nz'list indices must be integers or slicesÚpythonr   )r   r   )r   r   r   r   r   r   Útest_setitem_error'   s    zCommonTest.test_setitem_errorc             C   s¶   g }dddg}|   |¡}|   |¡}|  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  t|ƒd¡ |  t|ƒd¡ | |¡ | d¡ |  t|ƒd¡ |  t|ƒd¡ d S )Nr   r   r   z	[0, 1, 2]r   z[0, 1, 2, [...], 3])r   r   ÚstrÚreprÚappend)r   Zl0Úl2Za0Úa2r   r   r   Ú	test_repr-   s    




zCommonTest.test_reprc             C   sB   |   g ¡}x$tt ¡ d ƒD ]}|   |g¡}qW |  tt|¡ d S )Néd   )r   ÚrangeÚsysÚgetrecursionlimitÚassertRaisesÚRecursionErrorr   )r   r   Úir   r   r   Útest_repr_deep>   s    
zCommonTest.test_repr_deepc          	   C   s¦   |   tdƒ¡}| |¡ | tddƒ¡ | |¡ | d¡ zVttjdƒ}| t|ƒ¡ W d Q R X ttjdƒ}|  	| 
¡ t|ƒ¡ W d Q R X W d t tj¡ X d S )NéÈ   i  ÚwÚr)r   r$   r   ÚextendÚopenr   ÚTESTFNÚwriter   r   Úreadr   ÚosÚremove)r   ÚdÚfor   r   r   Ú
test_printD   s    


"zCommonTest.test_printc             C   sÊ   |   tdƒ¡}|  t|jtdddƒdddg¡ |  t|jtddƒd¡ |  t|jtdddƒddg¡ |  t|jdd¡ dddg|tdddƒ< |  ||   ddddddd	d
ddddddddddddg¡¡ d S )Né   r   é
   r   r   r   Úxr	   r   é   é	   é   é   é   é   é   é   é   é   é   )	r   r$   r'   Ú
ValueErrorÚ__setitem__Úslicer   Ú__getitem__r   )r   r   r   r   r   Útest_set_subscriptR   s     zCommonTest.test_set_subscriptc          	   C   sz   |   tdƒ¡}t|ƒ}|  t|ƒ|   tdddƒ¡¡ |  tt|¡ |  tt|   ¡ ƒƒ|   ¡ ¡ |  tt	tdddgƒ¡ d S )Nr8   rE   éÿÿÿÿr   r   r   )
r   r$   Úreversedr   Úlistr'   ÚStopIterationÚnextr   Úlen)r   r   r-   r   r   r   Útest_reversed]   s    
zCommonTest.test_reversedc          
   C   sÌ  |   ddg¡}d|d< d|d< |  ||   ddg¡¡ d|d< |  ||   ddg¡¡ d|d< |  ||   ddg¡¡ |  t|jdd¡ |  t|jdd¡ |   g ¡}|  t|jdd¡ |  t|jdd¡ |  t|j¡ |   dddd	d
g¡}d|d< d|d< d	|d< |  ||   ddd	d	d
g¡¡ d|d< d|d< d|d< |  ||   dddd	d
g¡¡ d|d< d|d< |  ||   dddddg¡¡ d|d< d|d< |  ||   dddddg¡¡ d}|  t|¡ d|d< W d Q R X d S )Nr   r   r#   r+   rK   éþÿÿÿéýÿÿÿr   r   r	   r
   r   r;   éX   éc   é   r<   z'list indices must be integers or slicesr   r   )r   r   r'   Ú
IndexErrorrG   r   r   )r   r   r   r   r   r   Útest_setitemg   s@    
zCommonTest.test_setitemc             C   sÂ   |   ddg¡}|d= |  |dg¡ |d= |  |g ¡ |   ddg¡}|d= |  |dg¡ |d= |  |g ¡ |   ddg¡}|  t|jd¡ |  t|jd¡ |   g ¡}|  t|jd¡ |  t|j¡ d S )Nr   r   rR   rK   rS   r   )r   r   r'   rW   Ú__delitem__r   )r   r   r   r   r   Útest_delitemŒ   s     
zCommonTest.test_delitemc             C   s‚  ddg}|   |¡}x
tddƒD ]ü}|d |… |d |…< |  ||¡ |d d … }|d |… |d |…< |  ||¡ ||d … ||d …< |  ||¡ |d d … }||d … ||d …< |  ||¡ x^tddƒD ]P}|||… |||…< |  ||¡ |d d … }|||… |||…< |  ||¡ qÈW q W |d d … }ddg|d d…< |  |ddddg¡ g |dd …< |  |g ¡ |   ddddd	g¡}||d d…< |  ||   ddddd	d	g¡¡ |   ddddd	g¡}||dd …< |  ||   dddddd	g¡¡ |   ddddd	g¡}||dd…< |  ||   dddddd	d	g¡¡ |   g ¡}ttd
ƒƒ|d d …< |  ||   td
ƒ¡¡ |  t|jtddd	ƒ¡ |  t|j¡ d S )Nr   r   rS   r	   rR   rK   r   r   r
   r9   )r   r$   r   Útupler'   r   rG   rH   )r   Úlr   r)   r!   ÚjZaa2r   r   r   Útest_setslice¢   sL    
 
zCommonTest.test_setslicec             C   s®  |   ddg¡}|dd…= |dd…= |  ||   g ¡¡ |   ddg¡}|dd…= |dd…= |  ||   g ¡¡ |   ddg¡}|dd…= |  ||   dg¡¡ |   ddg¡}|dd…= |  ||   dg¡¡ |   ddg¡}|dd …= |d d…= |  ||   g ¡¡ |   ddg¡}|dd …= |d d…= |  ||   g ¡¡ |   ddg¡}|dd …= |  ||   dg¡¡ |   ddg¡}|dd …= |  ||   dg¡¡ |   ddg¡}|d d …= |  ||   g ¡¡ d S )Nr   r   r   rR   rK   )r   r   )r   r   r   r   r   Útest_delsliceÐ   s>    












zCommonTest.test_delslicec             C   sR   |   g ¡}| d¡ | d¡ | d¡ |  ||   dddg¡¡ |  t|j¡ d S )Nr   r   r   )r   r   r   r'   r   )r   r   r   r   r   Útest_appendù   s    



zCommonTest.test_appendc             C   s
  |   dg¡}|   d¡}|d d … }| |¡ |  ||| ¡ | |   g ¡¡ |  ||| ¡ | |¡ |  ||   ddddddg¡¡ |   d¡}| d¡ |  |tdƒ¡ |  t|jd ¡ |  t|j¡ G dd„ dƒ}|   dd	d
dg¡}| |ƒ ¡ |  |dd	d
dg¡ d S )Nr   )r   r   r   ÚspamÚeggsÚspameggsc               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z*CommonTest.test_extend.<locals>.CustomIterc             S   s   | S )Nr   )r   r   r   r   Ú__iter__  s    z3CommonTest.test_extend.<locals>.CustomIter.__iter__c             S   s   t ‚d S )N)rN   )r   r   r   r   Ú__next__  s    z3CommonTest.test_extend.<locals>.CustomIter.__next__c             S   s   t jS )N)r%   Úmaxsize)r   r   r   r   Ú__length_hint__  s    z:CommonTest.test_extend.<locals>.CustomIter.__length_hint__N)Ú__name__Ú
__module__Ú__qualname__rd   re   rg   r   r   r   r   Ú
CustomIter  s   rk   r   r   r	   )r   r.   r   rM   r'   r   )r   Za1r!   r   rk   r   r   r   Útest_extend  s$    




zCommonTest.test_extendc             C   s²   |   dddg¡}| dd¡ | dd¡ | dd¡ |  |ddddddg¡ |d d … }| dd¡ | dd¡ | d	d
¡ |  ||   ddddddddd
g	¡¡ |  t|j¡ d S )Nr   r   r   rR   rK   Zfooi8ÿÿÿÚleftr+   Úright)r   Úinsertr   r'   r   )r   r   r   r   r   r   Útest_insert#  s    $zCommonTest.test_insertc             C   sž   |   dddg¡}| ¡  |  |ddg¡ | d¡ |  |dg¡ |  t|jd¡ | d¡ |  |g ¡ |  t|j¡ |  t|jdd¡ |   ddddd	g¡}d S )
NrK   r   r   r
   é*   r9   r8   é   é(   )r   Úpopr   r'   rW   r   )r   r   r   r   r   Útest_pop2  s    

zCommonTest.test_popc                sŠ  |   dddg¡}| d¡ |  |ddg¡ | d¡ |  |dg¡ | d¡ |  |g ¡ |  t|jd¡ |  t|j¡ G dd„ dtƒ‰ G ‡ fdd„dƒ}|   ddddg¡}|  ˆ |j|ƒ ¡ G ‡ fd	d
„d
ƒ}|   d¡}| d¡ |  ||   d¡¡ | d¡ |  ||   d¡¡ |  t|jd¡ |  ||   d¡¡ |   dd|ƒ dg¡}|   |¡}|  ˆ |jd¡ x$t||ƒD ]\}}|  ||¡ qlW d S )Nr   r   c               @   s   e Zd ZdS )z&CommonTest.test_remove.<locals>.BadExcN)rh   ri   rj   r   r   r   r   ÚBadExcL  s   rv   c                   s   e Zd Z‡ fdd„ZdS )z&CommonTest.test_remove.<locals>.BadCmpc                s   |dkrˆ ƒ ‚dS )Nr   Fr   )r   Úother)rv   r   r   Ú__eq__P  s    z-CommonTest.test_remove.<locals>.BadCmp.__eq__N)rh   ri   rj   rx   r   )rv   r   r   ÚBadCmpO  s   ry   r   r   c                   s   e Zd Z‡ fdd„ZdS )z'CommonTest.test_remove.<locals>.BadCmp2c                s
   ˆ ƒ ‚d S )Nr   )r   rw   )rv   r   r   rx   Y  s    z.CommonTest.test_remove.<locals>.BadCmp2.__eq__N)rh   ri   rj   rx   r   )rv   r   r   ÚBadCmp2X  s   rz   ZabcdefghcijÚcZ
abdefghcijZ	abdefghijr   r   )	r   r4   r   r'   rF   r   Ú	ExceptionÚzipÚassertIs)r   r   ry   rz   r5   Úer:   Úyr   )rv   r   Útest_remove?  s4    






zCommonTest.test_removec          
      s¤   t ƒ  ¡  |  ddddddg¡‰ˆ d¡ |  tˆjddd¡ |  ˆ|  dddddg¡¡ G dd„ dƒ‰ |  ¡ ‰‡ ‡fd	d
„tdƒD ƒˆd d …< |  tˆjd ¡ d S )NrR   rK   r   r   r   r	   c               @   s   e Zd Zdd„ Zdd„ ZdS )z&CommonTest.test_index.<locals>.EvilCmpc             S   s
   || _ d S )N)Úvictim)r   r‚   r   r   r   r   u  s    z/CommonTest.test_index.<locals>.EvilCmp.__init__c             S   s   | j d d …= dS )NF)r‚   )r   rw   r   r   r   rx   w  s    z-CommonTest.test_index.<locals>.EvilCmp.__eq__N)rh   ri   rj   r   rx   r   r   r   r   ÚEvilCmpt  s   rƒ   c                s   g | ]}ˆ ˆƒ‘qS r   r   )Ú.0Ú_)rƒ   r   r   r   ú
<listcomp>{  s    z)CommonTest.test_index.<locals>.<listcomp>r#   )	ÚsuperÚ
test_indexr   r4   r'   rF   Úindexr   r$   )r   )Ú	__class__)rƒ   r   r   rˆ   l  s    

 zCommonTest.test_indexc             C   sf   |   dddddg¡}|d d … }| ¡  |  |dddddg¡ | ¡  |  ||¡ |  t|jd¡ d S )NrR   rK   r   r   r   rq   )r   Úreverser   r'   r   )r   ÚuÚu2r   r   r   Útest_reverse  s    zCommonTest.test_reversec             C   sŠ   |   dddg¡}| ¡  |  |g ¡ |   g ¡}| ¡  |  |g ¡ |   g ¡}| d¡ | ¡  | d¡ |  |dg¡ |  t|jd ¡ d S )Nr   r   r	   r   )r   Úclearr   r   r'   r   )r   rŒ   r   r   r   Ú
test_clear‰  s    



zCommonTest.test_clearc             C   sÜ   |   dddg¡}| ¡ }|  |dddg¡ |   g ¡}| ¡ }|  |g ¡ |   ddg¡}| ¡ }| d¡ |  |ddg¡ |  ||dg ¡ |   ddddgdg¡}| ¡ }|  ||¡ |  |d |d ¡ |  t|jd ¡ d S )	Nr   r   r   r   r   r)   r	   r
   )r   Úcopyr   r   r~   r'   r   )r   rŒ   Úvr   r   r   Ú	test_copyš  s     

zCommonTest.test_copyc          
      s  |   ddg¡}| ¡  |  |ddg¡ |   dddddg¡}| ¡  |  ||   dddddg¡¡ |  t|jdd¡ dd„ }|jt|ƒd	 |  ||   dddddg¡¡ d
d„ }|   tdƒ¡‰ ˆ jt|ƒd	 |  tˆ jd¡ ‡ fdd„}| jtˆ jt|ƒd	 |  tˆ jdddd¡ d S )Nr   r   r   rK   rR   rq   c             S   s    | |krdS | |k rdS dS d S )Nr   r   rK   r   )r   r   r   r   r   Úrevcmp½  s
    z$CommonTest.test_sort.<locals>.revcmp)Úkeyc             S   s2   | d |d  }}||krdS ||k r*dS dS d S )Nr   r;   r   rK   r   r   )r:   r€   ZxmodZymodr   r   r   ÚmyComparisonÈ  s    z*CommonTest.test_sort.<locals>.myComparisonr>   c                s*   ˆ   d¡ | |krdS | |k r"dS dS d S )Nr   r   rK   )r   )r:   r€   )Úzr   r   ÚselfmodifyingComparisonÕ  s    
z5CommonTest.test_sort.<locals>.selfmodifyingComparison)r   Úsortr   r'   r   r   r$   rF   )r   rŒ   r”   r–   r˜   r   )r—   r   Ú	test_sort²  s$    
zCommonTest.test_sortc             C   s*   |   d¡}d|d d…< |  |tdƒ¡ d S )Nra   Úhr   Zham)r   r   rM   )r   rŒ   r   r   r   Ú
test_sliceâ  s    
zCommonTest.test_slicec                sl   t ƒ  ¡  |  ddg¡}|}|ddg7 }|  ||¡ |  d¡}|d7 }|  ||  d¡¡ |  t|jd ¡ d S )Nr   r   r   r   ra   rb   rc   )r‡   Ú	test_iaddr   r~   r   r'   r   Ú__iadd__)r   rŒ   r   )rŠ   r   r   r   ç  s    

zCommonTest.test_iaddc                s8   t ƒ  ¡  |  g ¡}t|ƒ}|d9 }|  t|ƒ|¡ d S )Nr9   )r‡   Ú	test_imulr   r   r   )r   ÚsZoldid)rŠ   r   r   rŸ   ô  s
    

zCommonTest.test_imulc             C   sŽ  |   dddddg¡}|d d d…= |  ||   ddg¡¡ |   tdƒ¡}|dd d…= |  ||   dddg¡¡ |   tdƒ¡}|dd d…= |  ||   ddddg¡¡ |   tdƒ¡}|d d d	…= |  ||   dddddd
dddg	¡¡ |   tdƒ¡}dgd |d d d…< |  ||   ddddddddddg
¡¡ |   tdƒ¡}dgd |d d d…< |  ||   ddddddd
dddg
¡¡ |   tdƒ¡}||d d d…< |  ||   ddddg¡¡ |   tdƒ¡}|d d … }|d d … }|   ddg¡|dd…< |   ddg¡|tddƒ< |   ddg¡|dd…< |  ||¡ |  ||¡ |   tdƒ¡}ttdƒƒ|d d d…< |  ||   ddddddddddg
¡¡ |   tdƒ¡}|dd dd> …= d S )Nr   r   r   r   r	   r
   rR   r9   iè  r   r;   rV   r<   rK   éüÿÿÿZtwoÚelementsiM  )r   r   r$   rH   r[   )r   r   r   r{   r   r   r   Útest_extendedslicingû  sD    $&&&zCommonTest.test_extendedslicingc             C   s$   G dd„ dt ƒ}|  tt|ƒ ¡ d S )Nc               @   s   e Zd Zdd„ ZdS )z9CommonTest.test_constructor_exception_handling.<locals>.Fc             S   s   t ‚d S )N)ÚKeyboardInterrupt)r   r   r   r   rd   '  s    zBCommonTest.test_constructor_exception_handling.<locals>.F.__iter__N)rh   ri   rj   rd   r   r   r   r   ÚF&  s   r¥   )Úobjectr'   r¤   rM   )r   r¥   r   r   r   Ú#test_constructor_exception_handling$  s    z.CommonTest.test_constructor_exception_handlingc          	   C   s€   |   dddg¡}t|ƒ}t|ƒ}x|D ]}t|ƒ q&W | d¡ |  t|ƒg ¡ |  t|ƒdg¡ |  ||   ddddg¡¡ d S )Nr   r   r   r<   )r   ÚiterrO   r   r   rM   )r   r   ZexhitZempitr:   r   r   r   Útest_exhausted_iterator+  s    

z"CommonTest.test_exhausted_iterator) rh   ri   rj   r   r   r   r"   r*   r7   rJ   rQ   rX   rZ   r^   r_   r`   rl   rp   ru   r   rˆ   rŽ   r   r“   rš   rœ   r   rŸ   r£   r§   r©   Ú__classcell__r   r   )rŠ   r   r      s8   
%.)	!-
0)r   )	Ú__doc__r%   r3   Ú	functoolsr   Útestr   r   r   r   r   r   r   Ú<module>   s
   