a
    äze5D  ã                   @   sR   d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	 G dd„ dej
ƒZ
dS )é    N)Ú
cmp_to_key)ÚsupportÚ	seq_tests)Ú	ALWAYS_EQÚNEVER_EQc                       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 ¡|  ¡ ¡ |  g d¢¡}| ¡  |   ||  g ¡¡ |  g d¢¡}| g d¢¡ |   ||  g d¢¡¡ |  |¡}|  t|ƒt|ƒ¡ |   ||¡ d S )N©é   é   é   )é   é   é   )ÚassertEqualÚ	type2testÚ__init__ZassertNotEqualÚid©ÚselfÚaÚb© r   ú%/usr/lib/python3.9/test/list_tests.pyÚ	test_init   s    
zCommonTest.test_initc                 C   s@   g }d}|   t|¡ |d  W d   ƒ n1 s20    Y  d S )Nú'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   ƒ n1 s20    Y  d S )Nr   Úpythonr   r   r   r   r   r   Útest_setitem_error(   s    zCommonTest.test_setitem_errorc                 C   s´   g }g d¢}|   |¡}|   |¡}|  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ |  t|ƒd¡ |  t|ƒd¡ | |¡ | d¡ |  t|ƒd¡ |  t|ƒd¡ d S )N©r   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   s>   |   g ¡}tt ¡ d ƒD ]}|   |g¡}q|  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¡ zŠttjdƒ}| t|ƒ¡ W d   ƒ n1 sn0    Y  ttjdƒ$}|  	| 
¡ t|ƒ¡ W d   ƒ n1 s®0    Y  W t tj¡ nt tj¡ 0 d S )NéÈ   i  ÚwÚr)r   r+   r&   ÚextendÚopenr   ZTESTFNÚwriter$   r   Úreadr%   ÚosÚremove)r   ÚdÚfor   r   r   Ú
test_printE   s    


,4zCommonTest.test_printc                 C   s¢   |   tdƒ¡}|  t|jtdddƒg d¢¡ |  t|jtddƒd¡ |  t|jtdddƒddg¡ |  t|jdd¡ g d¢|tdddƒ< |  ||   g d	¢¡¡ d S )
Né   r   é
   r   r	   r
   Úxr   )r   r	   r	   r   r   r
   r   é   r   é	   r?   é   é   é   é   é   é   é   é   é   )	r   r+   r.   Ú
ValueErrorÚ__setitem__Úslicer   Ú__getitem__r   ©r   r   r   r   r   Útest_set_subscriptS   s    zCommonTest.test_set_subscriptc              	   C   sx   |   tdƒ¡}t|ƒ}|  t|ƒ|   tdddƒ¡¡ |  tt|¡ |  tt|   ¡ ƒƒ|   ¡ ¡ |  tt	tg d¢ƒ¡ d S )Nr>   rK   éÿÿÿÿr   )
r   r+   Úreversedr   Úlistr.   ÚStopIterationÚnextr   Úlen)r   r   r4   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¡ |   g d	¢¡}d|d< d|d< d
|d< |  ||   g d¢¡¡ d|d< d|d< d|d< |  ||   g d¢¡¡ d|d< d|d< |  ||   g d¢¡¡ d|d< d|d< |  ||   g d¢¡¡ d}|  t|¡ d|d< W d   ƒ n1 s¶0    Y  d S )Nr   r	   r*   r2   rR   éþÿÿÿéýÿÿÿr
   ©r   r	   r
   r   r   r   )r	   r
   r   r   r   r   r   rA   )r   r   rA   r   r   éX   éc   )r   r   rA   r\   r]   é   rB   )r   r   rA   r^   rB   r   r!   r   )r   r   r.   Ú
IndexErrorrM   r   r   r   r   r   r   Útest_setitemh   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	   rY   rR   rZ   r
   )r   r   r.   r_   Ú__delitem__r   rP   r   r   r   Útest_delitem   s     
zCommonTest.test_delitemc                 C   sH  ddg}|   |¡}tddƒD ]ø}|d |… |d |…< |  ||¡ |d d … }|d |… |d |…< |  ||¡ ||d … ||d …< |  ||¡ |d d … }||d … ||d …< |  ||¡ tddƒD ]P}|||… |||…< |  ||¡ |d d … }|||… |||…< |  ||¡ qÂq|d d … }ddg|d d…< |  |g d¢¡ g |dd …< |  |g ¡ |   g d¢¡}||d d…< |  ||   g d	¢¡¡ |   g d¢¡}||dd …< |  ||   g d
¢¡¡ |   g d¢¡}||dd…< |  ||   g d¢¡¡ |   g ¡}ttdƒƒ|d d …< |  ||   tdƒ¡¡ |  t|jtdddƒ¡ |  t|j¡ d S )Nr   r	   rZ   r   rY   rR   )rY   rR   r   r	   )r	   r
   r   r   r   )r	   r
   r   r   r   r   )r	   r	   r
   r   r   r   )r	   r	   r
   r   r   r   r   r?   r   )r   r+   r   Útupler.   r   rM   rN   )r   Úlr   r0   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
   rY   rR   )r   r   rP   r   r   r   Útest_delsliceÑ   s>    












zCommonTest.test_delslicec                 C   sP   |   g ¡}| d¡ | d¡ | d¡ |  ||   g d¢¡¡ |  t|j¡ d S )Nr   r	   r
   r#   )r   r&   r   r.   r   rP   r   r   r   Útest_appendú   s    



zCommonTest.test_appendc                 C   sú   |   dg¡}|   d¡}|d d … }| |¡ |  ||| ¡ | |   g ¡¡ |  ||| ¡ | |¡ |  ||   g d¢¡¡ |   d¡}| d¡ |  |tdƒ¡ |  t|jd ¡ |  t|j¡ G dd„ dƒ}|   g d	¢¡}| |ƒ ¡ |  |g d	¢¡ d S )
Nr   )r   r	   )r   r   r	   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 rl   )rU   rm   r   r   r   Ú__next__  s    z3CommonTest.test_extend.<locals>.CustomIter.__next__c                 S   s   t jS rl   )r,   Úmaxsizerm   r   r   r   Ú__length_hint__  s    z:CommonTest.test_extend.<locals>.CustomIter.__length_hint__N)Ú__name__Ú
__module__Ú__qualname__rn   ro   rq   r   r   r   r   Ú
CustomIter  s   ru   )r	   r
   r   r   )r   r5   r   rT   r.   r   )r   Za1r(   r   ru   r   r   r   Útest_extend  s$    




zCommonTest.test_extendc                 C   sš   |   g d¢¡}| dd¡ | dd¡ | dd¡ |  |g d¢¡ |d d … }| dd¡ | d	d
¡ | dd¡ |  ||   g d¢¡¡ |  t|j¡ d S )Nr#   r   rY   r	   rR   r
   ©rY   rR   r   r   r	   r
   Úfooi8ÿÿÿÚleftr2   Úright)	ry   rY   rR   r   r   rx   r	   r
   rz   )r   Úinsertr   r.   r   r   r   r   r   Útest_insert$  s    zCommonTest.test_insertc                 C   s–   |   g d¢¡}| ¡  |  |ddg¡ | d¡ |  |dg¡ |  t|jd¡ | d¡ |  |g ¡ |  t|j¡ |  t|jdd¡ |   g d¢¡}d S )N)rR   r   r	   rR   r   r   é*   )r   r?   r>   é   é(   )r   Úpopr   r.   r_   r   rP   r   r   r   Útest_pop3  s    

zCommonTest.test_popc                    s&  |   g d¢¡}| d¡ |  |ddg¡ | d¡ |  |dg¡ | d¡ |  |g ¡ |  t|jd¡ |  t|j¡ |   ddg¡}|  t|jt¡ |  |ddg¡ | t¡ |  |dg¡ |   tg¡}| d¡ |  |g ¡ |   tg¡}| t¡ |  |g ¡ |   tg¡}|  t|jt¡ G dd„ dtƒ‰ G ‡ fdd„dƒ}|   g d	¢¡}|  ˆ |j|ƒ ¡ G ‡ fd
d„dƒ}|   d¡}| d¡ |  ||   d¡¡ | d¡ |  ||   d¡¡ |  t|jd¡ |  ||   d¡¡ |   dd|ƒ dg¡}|   |¡}|  ˆ |jd¡ t	||ƒD ]\}}|  
||¡ q
d S )N)r   r   r	   r	   r   r
   c                   @   s   e Zd ZdS )z&CommonTest.test_remove.<locals>.BadExcN)rr   rs   rt   r   r   r   r   ÚBadExc[  s   r‚   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©r‚   r   r   Ú__eq___  s    z-CommonTest.test_remove.<locals>.BadCmp.__eq__N©rr   rs   rt   r†   r   r…   r   r   ÚBadCmp^  s   rˆ   )r   r	   r
   r   c                       s   e Zd Z‡ fdd„ZdS )z'CommonTest.test_remove.<locals>.BadCmp2c                    s
   ˆ ƒ ‚d S rl   r   rƒ   r…   r   r   r†   h  s    z.CommonTest.test_remove.<locals>.BadCmp2.__eq__Nr‡   r   r…   r   r   ÚBadCmp2g  s   r‰   ZabcdefghcijÚcZ
abdefghcijZ	abdefghijr   r   )r   r:   r   r.   rL   r   r   r   Ú	ExceptionÚzipÚassertIs)r   r   rˆ   r‰   r;   Úer@   Úyr   r…   r   Útest_remove@  sN    









zCommonTest.test_removec                    s–   t ƒ  ¡  |  g d¢¡‰ˆ d¡ |  tˆjddd¡ |  ˆ|  g d¢¡¡ G dd„ dƒ‰ |  ¡ ‰‡ ‡fdd	„td
ƒD ƒˆd d …< |  tˆjd ¡ d S )Nrw   r   r
   r   ©rY   rR   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 rl   ©Úvictim)r   r“   r   r   r   r   „  s    z/CommonTest.test_index.<locals>.EvilCmp.__init__c                 S   s   | j d d …= dS )NFr’   rƒ   r   r   r   r†   †  s    z-CommonTest.test_index.<locals>.EvilCmp.__eq__N)rr   rs   rt   r   r†   r   r   r   r   ÚEvilCmpƒ  s   r”   c                    s   g | ]}ˆ ˆƒ‘qS r   r   )Ú.0Ú_©r”   r   r   r   Ú
<listcomp>Š  ó    z)CommonTest.test_index.<locals>.<listcomp>r*   )	ÚsuperÚ
test_indexr   r:   r.   rL   Úindexr   r+   rm   ©Ú	__class__r—   r   r›   {  s    

 zCommonTest.test_indexc                 C   sZ   |   g d¢¡}|d d … }| ¡  |  |g d¢¡ | ¡  |  ||¡ |  t|jd¡ d S )Nr‘   ©r
   r	   r   rR   rY   r}   )r   Úreverser   r.   r   ©r   ÚuÚu2r   r   r   Útest_reverseŽ  s    zCommonTest.test_reversec                 C   sˆ   |   g d¢¡}| ¡  |  |g ¡ |   g ¡}| ¡  |  |g ¡ |   g ¡}| d¡ | ¡  | d¡ |  |dg¡ |  t|jd ¡ d S )N)r
   r   r   r	   r
   )r   Úclearr   r&   r.   r   ©r   r¢   r   r   r   Ú
test_clear˜  s    



zCommonTest.test_clearc                 C   sØ   |   g d¢¡}| ¡ }|  |g d¢¡ |   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   r0   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¡ |   g d¢¡}| ¡  |  ||   g d¢¡¡ |  t|jdd¡ dd„ }|jt|ƒd |  ||   g d¢¡¡ 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Ÿ   r‘   r}   c                 S   s    | |krdS | |k rdS dS d S )Nr   r	   rR   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   rA   r   rR   r	   r   )r@   r   ZxmodZymodr   r   r   ÚmyComparison×  s    z*CommonTest.test_sort.<locals>.myComparisonrD   r
   c                    s*   ˆ   d¡ | |krdS | |k r"dS dS d S )Nr	   r   rR   )r&   )r@   r   ©Úzr   r   ÚselfmodifyingComparisonä  s    
z5CommonTest.test_sort.<locals>.selfmodifyingComparison)r   Úsortr   r.   r   r   r+   rL   )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 )Nri   Úhr
   Zham)r   r   rT   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   ri   rj   rk   )rš   Ú	test_iaddr   r   r   r.   r   Ú__iadd__r¡   r   r   r   rµ   ö  s    

zCommonTest.test_iaddc                    s8   t ƒ  ¡  |  g ¡}t|ƒ}|d9 }|  t|ƒ|¡ d S )Nr?   )rš   Ú	test_imulr   r   r   )r   ÚsZoldidr   r   r   r·     s
    

zCommonTest.test_imulc                 C   s@  |   g d¢¡}|d d d…= |  ||   ddg¡¡ |   tdƒ¡}|dd d…= |  ||   g d¢¡¡ |   tdƒ¡}|dd d…= |  ||   g d¢¡¡ |   td	ƒ¡}|d d d
…= |  ||   g d¢¡¡ |   td	ƒ¡}dgd |d d d…< |  ||   g d¢¡¡ |   td	ƒ¡}d	gd |d d d…< |  ||   g d¢¡¡ |   tdƒ¡}||d d d…< |  ||   g d¢¡¡ |   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…< |  ||   g d¢¡¡ |   td	ƒ¡}|dd dd> …= d S )Nr[   r
   r	   r   r   )r   r
   r   rY   )r   r
   r   r   r?   iè  )	r	   r
   r   r   r   r   rA   r^   rB   rR   )
rR   r	   rR   r   rR   r   rR   rA   rR   rB   éüÿÿÿ)
r   r?   r
   r   r   r?   r   rA   r^   r?   r   )r   r
   r	   r   ZtwoÚelements)
r   r	   r	   r   r
   r   r   rA   r   rB   rB   iM  )r   r   r+   rN   rc   )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 rl   )ÚKeyboardInterruptrm   r   r   r   rn   6  s    zBCommonTest.test_constructor_exception_handling.<locals>.F.__iter__N)rr   rs   rt   rn   r   r   r   r   ÚF5  s   r½   )Úobjectr.   r¼   rT   )r   r½   r   r   r   Ú#test_constructor_exception_handling3  s    z.CommonTest.test_constructor_exception_handlingc                 C   sv   |   g d¢¡}t|ƒ}t|ƒ}|D ]}t|ƒ q"| d¡ |  t|ƒg ¡ |  t|ƒdg¡ |  ||   g d¢¡¡ d S )Nr   rB   )r	   r
   r   rB   )r   ÚiterrV   r&   r   rT   )r   r   ZexhitZempitr@   r   r   r   Útest_exhausted_iterator:  s    

z"CommonTest.test_exhausted_iterator) rr   rs   rt   r   r    r"   r)   r1   r=   rQ   rX   r`   rb   rf   rg   rh   rv   r|   r   r   r›   r¤   r§   rª   r²   r´   rµ   r·   r»   r¿   rÁ   Ú__classcell__r   r   r   r   r      s8   
%.)	!;
0)r   )r,   r9   Ú	functoolsr   Útestr   r   Ztest.supportr   r   r   r   r   r   r   Ú<module>   s
   