o
    HXh!                     @   sF  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re   dS dS )$    N)supportc                   @      e Zd Z	 dd Zdd ZdS )Gc                 C   s
   || _ d S Nseqnselfr    r
   =/opt/python-3.10.19/usr/lib/python3.10/test/test_enumerate.py__init__      
z
G.__init__c                 C   s
   | j | S r   r   r	   ir
   r
   r   __getitem__   r   zG.__getitem__N)__name__
__module____qualname__r   r   r
   r
   r
   r   r   	   s    r   c                   @   &   e Zd Z	 dd Zdd Zdd ZdS )Ic                 C      || _ d| _d S Nr   r   r   r   r
   r
   r   r         
z
I.__init__c                 C      | S r   r
   r	   r
   r
   r   __iter__      z
I.__iter__c                 C   2   | j t| jkr
t| j| j  }|  j d7  _ |S N   r   lenr   StopIterationr	   vr
   r
   r   __next__      z
I.__next__Nr   r   r   r   r   r&   r
   r
   r
   r   r      
    r   c                   @   r   )Igc                 C   r   r   r   r   r
   r
   r   r      r   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*          r*   c                   @   r   )Xc                 C   r   r   r   r   r
   r
   r   r   (   r   z
X.__init__c                 C   r   r   r!   r$   r
   r
   r   r&   +   r'   z
X.__next__N)r   r   r   r   r&   r
   r
   r
   r   r.   &   r-   r.   c                   @   r   )Ec                 C   r   r   r   r   r
   r
   r   r   3   r   z
E.__init__c                 C   r   r   r
   r   r
   r
   r   r   6   r   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   r)   r/   c                   @   r   )Nc                 C   r   r   r   r   r
   r
   r   r   =   r   z
N.__init__c                 C   r   r   r
   r   r
   r
   r   r   @   r   z
N.__iter__Nr,   r
   r
   r
   r   r1   ;   r-   r1   c                   @      e Zd Zdd ZdS )
PickleTestc              	   C   s   t tjd D ]T}t||}t|}| t|t| | t|| t|}zt| W n t	yC   | 
|dd   Y qw 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   rA   r
   r
   r
   r   r3   C       r3   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   )r9   r:   enumr=   iterr;   res__doc__r	   er
   r
   r   test_basicfunction[   s
   z$EnumerateTestCase.test_basicfunctionc                 C   s   |  | | j| j d S r   )rA   rI   r=   rK   r   r
   r
   r   test_pickleb      zEnumerateTestCase.test_picklec                 C   >   |  t| t| j| j | td}| tt| d S N )	r9   r;   rI   r   r=   rK   assertRaisesr#   r<   rM   r
   r
   r   test_getitemseqne      z"EnumerateTestCase.test_getitemseqnc                 C   rR   rS   )	r9   r;   rI   r   r=   rK   rU   r#   r<   rM   r
   r
   r   test_iteratorseqnj   rW   z#EnumerateTestCase.test_iteratorseqnc                 C   rR   rS   )	r9   r;   rI   r*   r=   rK   rU   r#   r<   rM   r
   r
   r   test_iteratorgeneratoro   rW   z(EnumerateTestCase.test_iteratorgeneratorc                 C      |  t| jt| j d S r   )rU   	TypeErrorrI   r.   r=   r   r
   r
   r   test_noniterablet   rQ   z"EnumerateTestCase.test_noniterablec                 C   rZ   r   )rU   r[   rI   r1   r=   r   r
   r
   r   test_illformediterablew   rQ   z(EnumerateTestCase.test_illformediterablec                 C   s   |  tt| t| j d S r   )rU   ZeroDivisionErrorr;   rI   r/   r=   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    rD   rE   rG   r0   )rU   r[   rI   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   )	r9   r"   setmapidr;   	enumerater=   minr   r
   r
   r   test_tuple_reuse   s   *0z"EnumerateTestCase.test_tuple_reusec                 C   s,   |  g g}t  | tt| d S r   )rI   gcZcollectZ
assertTrueZ
is_trackedr<   )r	   r@   r
   r
   r   test_enumerate_result_gc   s   z*EnumerateTestCase.test_enumerate_result_gcN)r   r   r   rd   rI   r=   rK   rO   rP   rV   rX   rY   r\   r]   r_   r`   r   Zcpython_onlyrf   rh   r
   r
   r
   r   rC   V   s     
rC   c                   @   s   e Zd ZdS )MyEnumN)r   r   r   r
   r
   r
   r   ri      s    ri   c                   @   s   e Zd ZeZdS )SubclassTestCaseN)r   r   r   ri   rI   r
   r
   r
   r   rj      s    rj   c                   @   s   e Zd Zdg ZZdS )	TestEmptyrT   N)r   r   r   r=   rK   r
   r
   r
   r   rk      s    rk   c                   @   s*   e Zd ZedddZeeedeZdS )TestBig
   i N  rG   N)r   r   r   r4   r=   r;   ziprK   r
   r
   r
   r   rl      s    rl   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                   @      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N   )strr#   r   r
   r
   r   r      s   z/TestReversed.test_simple.<locals>.A.__getitem__c                 S      dS rq   r
   r   r
   r
   r   __len__   r   z+TestReversed.test_simple.<locals>.A.__len__N)r   r   r   r   ru   r
   r
   r
   r   A   s    rv   rD   rr   r       Zabcde)rE   )
r4   tuplerd   dictfromkeysr9   r;   reversedrU   r[   )r	   rv   datar
   r
   r   test_simple   s   $zTestReversed.test_simplec                 C   s(   t d}| tt|tt| d S r   )r4   r9   r:   r|   rJ   )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hellorr   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)NTrm   )calledr^   r   r
   r
   r   ru      s   z6TestReversed.test_len.<locals>.SeqWithWeirdLen.__len__c                 S      |S r   r
   r	   indexr
   r
   r   r      r   z:TestReversed.test_len.<locals>.SeqWithWeirdLen.__getitem__N)r   r   r   r   ru   r   r
   r
   r
   r   SeqWithWeirdLen   s    r   )
ry   r;   r4   r9   operatorlength_hintr|   r"   rU   r^   )r	   srr   r
   r
   r   test_len   s   
	zTestReversed.test_lenc                 C   s&   G dd d}| }t |}||_d S )Nc                   @   rp   )z!TestReversed.test_gc.<locals>.Seqc                 S   rt   )Nrm   r
   r   r
   r
   r   ru      r   z)TestReversed.test_gc.<locals>.Seq.__len__c                 S   r   r   r
   r   r
   r
   r   r      r   z-TestReversed.test_gc.<locals>.Seq.__getitem__N)r   r   r   ru   r   r
   r
   r
   r   Seq   s    r   )r|   r   )r	   r   r   r   r
   r
   r   test_gc   s   
zTestReversed.test_gcc                 C   s    |  tt |  ttg d d S )Nextra)rU   r[   r|   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y$   Y qw | d q| |t| d S )Nc                   S   s   d S r   r
   r
   r
   r
   r   f   r   z'TestReversed.test_bug1229429.<locals>.frm   z'non-callable __reversed__ didn't raise!)	object__reversed__sysr   r4   r|   r[   Zfailr9   )r	   r   r   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                   @   r2   )z+TestReversed.test_objmethods.<locals>.NoLenc                 S   rt   r   r
   r   r
   r
   r   r          z7TestReversed.test_objmethods.<locals>.NoLen.__getitem__N)r   r   r   r   r
   r
   r
   r   NoLen       r   c                   @   r2   )z/TestReversed.test_objmethods.<locals>.NoGetItemc                 S   rt   NrG   r
   r   r
   r
   r   ru      r   z7TestReversed.test_objmethods.<locals>.NoGetItem.__len__N)r   r   r   ru   r
   r
   r
   r   	NoGetItem   r   r   c                   @   s    e Zd Zdd Zdd ZdZdS )z-TestReversed.test_objmethods.<locals>.Blockedc                 S   rt   r   r
   r   r
   r
   r   r      r   z9TestReversed.test_objmethods.<locals>.Blocked.__getitem__c                 S   rt   r   r
   r   r
   r
   r   ru      r   z5TestReversed.test_objmethods.<locals>.Blocked.__len__N)r   r   r   r   ru   r   r
   r
   r
   r   Blocked   s    r   )r   rU   r[   r|   )r	   r   nlr   Zngir   rF   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 )NrD   rr   r    rw   rx   )r4   ry   rd   rA   r|   r;   )r	   r}   r
   r
   r   rP      s   $ zTestReversed.test_pickleN)r   r   r   r~   r   r   r   r   unittestZ
skipUnlesshasattrr   r   r   rP   r
   r
   r
   r   ro      s    

ro   c                   @   r2   )EnumerateStartTestCasec                 C   s:   |  | j}| t|| | t|  | j| j d S r   )rI   r=   r9   rJ   r;   rK   rM   r
   r
   r   rO     s   z)EnumerateStartTestCase.test_basicfunctionN)r   r   r   rO   r
   r
   r
   r   r     rB   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)rd   r   r
   r
   r   <lambda>  s    zTestStart.<lambda>rD   ))r   rE   )   rF   )   rH   N)r   r   r   rI   r=   rK   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   )rd   r   maxsizer   r
   r
   r   r     s    zTestLongStart.<lambda>rD   r    rE   rG   rF   r0   rH   N)r   r   r   rI   r   r   r=   rK   r
   r
   r
   r   r     s
    r   __main__)r   r   r   r5   rg   testr   r   r   r*   r.   r/   r1   r3   ZTestCaserC   rd   ri   rj   rk   rl   ro   r   r   r   r   mainr
   r
   r
   r   <module>   s2    	
@^