a
    ze!                     @   sD  d dl Z d dlZd dlZd dlZd dlZd dlmZ G dd d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e jeZG dd deZG dd deZG dd deZG dd deZG dd de jeZG dd deZG dd  d eZG d!d" d"eZed#kr@e   dS )$    N)supportc                   @   s   e Zd Zdd Zdd ZdS )Gc                 C   s
   || _ d S Nseqnselfr    r	   )/usr/lib/python3.9/test/test_enumerate.py__init__   s    z
G.__init__c                 C   s
   | j | S r   r   r   ir	   r	   r
   __getitem__   s    zG.__getitem__N)__name__
__module____qualname__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S )Ic                 C   s   || _ d| _d S Nr   r   r   r   r	   r	   r
   r      s    z
I.__init__c                 C   s   | S r   r	   r   r	   r	   r
   __iter__   s    z
I.__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
I.__next__N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 )Igc                 C   s   || _ d| _d S r   r   r   r	   r	   r
   r      s    zIg.__init__c                 c   s   | j D ]
}|V  qd S r   r   )r   valr	   r	   r
   r   "   s    
zIg.__iter__N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 )Xc                 C   s   || _ d| _d S r   r   r   r	   r	   r
   r   (   s    z
X.__init__c                 C   s2   | j t| jkrt| j| j  }|  j d7  _ |S r   r   r   r	   r	   r
   r   +   s    z
X.__next__N)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d ZdS )Ec                 C   s   || _ d| _d S r   r   r   r	   r	   r
   r   3   s    z
E.__init__c                 C   s   | S r   r	   r   r	   r	   r
   r   6   s    z
E.__iter__c                 C   s   dd  d S )N   r   r	   r   r	   r	   r
   r   8   s    z
E.__next__Nr   r	   r	   r	   r
   r$   1   s   r$   c                   @   s   e Zd Zdd Zdd ZdS )Nc                 C   s   || _ d| _d S r   r   r   r	   r	   r
   r   =   s    z
N.__init__c                 C   s   | S r   r	   r   r	   r	   r
   r   @   s    z
N.__iter__Nr"   r	   r	   r	   r
   r&   ;   s   r&   c                   @   s   e Zd Zdd ZdS )
PickleTestc              	   C   s   t tjd D ]}t||}t|}| t|t| | t|| t|}zt| W n( t	y   | 
|dd   Y qY n0 t||}t|}| t||dd   qd S r   )rangepickleHIGHEST_PROTOCOLdumpsloadsassertEqualtypelistnextr   ZassertFalse)r   Zitorgseqprotoditr	   r	   r
   check_pickleE   s    



zPickleTest.check_pickleN)r   r   r   r5   r	   r	   r	   r
   r'   C   s   r'   c                   @   s   e Zd ZeZdg d Z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ejdd Zejdd ZdS )EnumerateTestCaseabc))r   a)r   b)   cc                 C   s\   |  t| | j| j | | j}|  t|| |  t| | j| j | jj d S r   )r-   r.   enumr1   iterr/   res__doc__r   er	   r	   r
   test_basicfunction[   s
    z$EnumerateTestCase.test_basicfunctionc                 C   s   |  | | j| j d S r   )r5   r<   r1   r>   r   r	   r	   r
   test_pickleb   s    zEnumerateTestCase.test_picklec                 C   s>   |  t| t| j| j | td}| tt| d S N )	r-   r/   r<   r   r1   r>   assertRaisesr   r0   r@   r	   r	   r
   test_getitemseqne   s    z"EnumerateTestCase.test_getitemseqnc                 C   s>   |  t| t| j| j | td}| tt| d S rD   )	r-   r/   r<   r   r1   r>   rF   r   r0   r@   r	   r	   r
   test_iteratorseqnj   s    z#EnumerateTestCase.test_iteratorseqnc                 C   s>   |  t| t| j| j | td}| tt| d S rD   )	r-   r/   r<   r    r1   r>   rF   r   r0   r@   r	   r	   r
   test_iteratorgeneratoro   s    z(EnumerateTestCase.test_iteratorgeneratorc                 C   s   |  t| jt| j d S r   )rF   	TypeErrorr<   r#   r1   r   r	   r	   r
   test_noniterablet   s    z"EnumerateTestCase.test_noniterablec                 C   s   |  t| jt| j d S r   )rF   rJ   r<   r&   r1   r   r	   r	   r
   test_illformediterablew   s    z(EnumerateTestCase.test_illformediterablec                 C   s   |  tt| t| j d S r   )rF   ZeroDivisionErrorr/   r<   r$   r1   r   r	   r	   r
   test_exception_propagationz   s    z,EnumerateTestCase.test_exception_propagationc                 C   sH   |  t| j |  t| jd |  t| jdd |  t| jddd d S )Nr   r7   r8   r:   r%   )rF   rJ   r<   r   r	   r	   r
   test_argumentcheck}   s    z$EnumerateTestCase.test_argumentcheckc              	   C   sZ   |  tttttt| jt| j |  ttttt| jtdt| j d S r   )	r-   r   setmapidr/   	enumerater1   minr   r	   r	   r
   test_tuple_reuse   s    *z"EnumerateTestCase.test_tuple_reusec                 C   s,   |  g g}t  | tt| d S r   )r<   gcZcollectZ
assertTrueZ
is_trackedr0   )r   r4   r	   r	   r
   test_enumerate_result_gc   s    z*EnumerateTestCase.test_enumerate_result_gcN)r   r   r   rS   r<   r1   r>   rB   rC   rG   rH   rI   rK   rL   rN   rO   r   Zcpython_onlyrU   rW   r	   r	   r	   r
   r6   V   s   
r6   c                   @   s   e Zd ZdS )MyEnumN)r   r   r   r	   r	   r	   r
   rX      s   rX   c                   @   s   e Zd ZeZdS )SubclassTestCaseN)r   r   r   rX   r<   r	   r	   r	   r
   rY      s   rY   c                   @   s   e Zd Zdg  ZZdS )	TestEmptyrE   N)r   r   r   r1   r>   r	   r	   r	   r
   rZ      s   rZ   c                   @   s*   e Zd ZedddZeeedeZdS )TestBig
   i N  r:   N)r   r   r   r(   r1   r/   zipr>   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e	e
edddd Zdd Zdd ZdS )TestReversedc                 C   sx   G dd d}dt dttd| t dddtdfD ]&}| t|d d d tt| q:| jt	tg dd	 d S )
Nc                   @   s   e Zd Zdd Zdd ZdS )z#TestReversed.test_simple.<locals>.Ac                 S   s   |dk rt |S td S N   )strr   r   r	   r	   r
   r      s    z/TestReversed.test_simple.<locals>.A.__getitem__c                 S   s   dS r_   r	   r   r	   r	   r
   __len__   s    z+TestReversed.test_simple.<locals>.A.__len__N)r   r   r   r   rb   r	   r	   r	   r
   A   s   rc   r7   r`   r      Zabcde)r8   )
r(   tuplerS   dictfromkeysr-   r/   reversedrF   rJ   )r   rc   datar	   r	   r
   test_simple   s    $zTestReversed.test_simplec                 C   s(   t d}| tt|tt| d S r   )r(   r-   r.   ri   r=   )r   xr	   r	   r
   test_range_optimization   s    z$TestReversed.test_range_optimizationc                 C   s   dt dtdtdfD ]@}| tt|t| t|}t| | t|d qG dd d}t| }| t	tj| d S )NZhellor`   r   c                   @   s    e Zd ZdZdd Zdd ZdS )z.TestReversed.test_len.<locals>.SeqWithWeirdLenFc                 S   s   | j sd| _ dS td S )NTr\   )calledrM   r   r	   r	   r
   rb      s    z6TestReversed.test_len.<locals>.SeqWithWeirdLen.__len__c                 S   s   |S r   r	   r   indexr	   r	   r
   r      s    z:TestReversed.test_len.<locals>.SeqWithWeirdLen.__getitem__N)r   r   r   rn   rb   r   r	   r	   r	   r
   SeqWithWeirdLen   s   rq   )
rf   r/   r(   r-   operatorlength_hintri   r   rF   rM   )r   srrq   r	   r	   r
   test_len   s    	
zTestReversed.test_lenc                 C   s&   G dd d}| }t |}||_d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z!TestReversed.test_gc.<locals>.Seqc                 S   s   dS )Nr\   r	   r   r	   r	   r
   rb      s    z)TestReversed.test_gc.<locals>.Seq.__len__c                 S   s   |S r   r	   ro   r	   r	   r
   r      s    z-TestReversed.test_gc.<locals>.Seq.__getitem__N)r   r   r   rb   r   r	   r	   r	   r
   Seq   s   rw   )ri   ru   )r   rw   rt   ru   r	   r	   r
   test_gc   s    zTestReversed.test_gcc                 C   s    |  tt |  ttg d d S )Nextra)rF   rJ   ri   r   r	   r	   r
   	test_args   s    zTestReversed.test_argsgetrefcountztest needs sys.getrefcount()c              	   C   sl   dd }t   }|_t|}tdD ].}zt| W n tyH   Y q&0 | d q&| |t| d S )Nc                   S   s   d S r   r	   r	   r	   r	   r
   f   s    z'TestReversed.test_bug1229429.<locals>.fr\   z'non-callable __reversed__ didn't raise!)	object__reversed__sysr{   r(   ri   rJ   Zfailr-   )r   r|   ru   rcr   r	   r	   r
   test_bug1229429   s    
zTestReversed.test_bug1229429c                 C   sp   G dd dt }| }| tt| G dd dt }| }| tt| G dd dt }| }| tt| d S )Nc                   @   s   e Zd Zdd ZdS )z+TestReversed.test_objmethods.<locals>.NoLenc                 S   s   dS r   r	   r   r	   r	   r
   r          z7TestReversed.test_objmethods.<locals>.NoLen.__getitem__N)r   r   r   r   r	   r	   r	   r
   NoLen   s   r   c                   @   s   e Zd Zdd ZdS )z/TestReversed.test_objmethods.<locals>.NoGetItemc                 S   s   dS Nr:   r	   r   r	   r	   r
   rb      r   z7TestReversed.test_objmethods.<locals>.NoGetItem.__len__N)r   r   r   rb   r	   r	   r	   r
   	NoGetItem   s   r   c                   @   s    e Zd Zdd Zdd ZdZdS )z-TestReversed.test_objmethods.<locals>.Blockedc                 S   s   dS r   r	   r   r	   r	   r
   r      r   z9TestReversed.test_objmethods.<locals>.Blocked.__getitem__c                 S   s   dS r   r	   r   r	   r	   r
   rb      r   z5TestReversed.test_objmethods.<locals>.Blocked.__len__N)r   r   r   r   rb   r~   r	   r	   r	   r
   Blocked   s   r   )r}   rF   rJ   ri   )r   r   nlr   Zngir   r9   r	   r	   r
   test_objmethods   s    zTestReversed.test_objmethodsc                 C   sH   dt dttdt dddfD ]"}| t|t|d d d  q d S )Nr7   r`   r   rd   re   )r(   rf   rS   r5   ri   r/   )r   rj   r	   r	   r
   rC      s    $zTestReversed.test_pickleN)r   r   r   rk   rm   rv   rx   rz   unittestZ
skipUnlesshasattrr   r   r   rC   r	   r	   r	   r
   r^      s   

r^   c                   @   s   e Zd Zdd ZdS )EnumerateStartTestCasec                 C   s:   |  | j}| t|| | t|  | j| j d S r   )r<   r1   r-   r=   r/   r>   r@   r	   r	   r
   rB     s    z)EnumerateStartTestCase.test_basicfunctionN)r   r   r   rB   r	   r	   r	   r
   r     s   r   c                   @   s"   e Zd Zdd Zdg d ZZdS )	TestStartc                 C   s   t |ddS )N   start)rS   r   r	   r	   r
   <lambda>  r   zTestStart.<lambda>r7   ))r   r8   )   r9   )   r;   N)r   r   r   r<   r1   r>   r	   r	   r	   r
   r     s   r   c                   @   sB   e Zd Zdd Zdejd dfejd dfejd d	fg ZZd
S )TestLongStartc                 C   s   t |tjd dS )Nr   r   )rS   r   maxsizer   r	   r	   r
   r     r   zTestLongStart.<lambda>r7   r   r8   r:   r9   r%   r;   N)r   r   r   r<   r   r   r1   r>   r	   r	   r	   r
   r     s   r   __main__)r   rr   r   r)   rV   testr   r   r   r    r#   r$   r&   r'   ZTestCaser6   rS   rX   rY   rZ   r[   r^   r   r   r   r   mainr	   r	   r	   r
   <module>   s.   	
@^
