B
    18\                 @   s<  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r8e   dS )$    N)supportc               @   s    e Zd ZdZdd Zdd ZdS )GzSequence using __getitem__c             C   s
   || _ d S )N)seqn)selfr    r   W/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_enumerate.py__init__
   s    z
G.__init__c             C   s
   | j | S )N)r   )r   ir   r   r   __getitem__   s    zG.__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 )	Iz Sequence using iterator protocolc             C   s   || _ d| _d S )Nr   )r   r	   )r   r   r   r   r   r      s    z
I.__init__c             C   s   | S )Nr   )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   r      s   r   c               @   s    e Zd ZdZdd Zdd ZdS )Igz9Sequence using iterator protocol defined with a generatorc             C   s   || _ d| _d S )Nr   )r   r	   )r   r   r   r   r   r      s    zIg.__init__c             c   s   x| j D ]
}|V  qW d S )N)r   )r   valr   r   r   r   !   s    zIg.__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 )Xz Missing __getitem__ and __iter__c             C   s   || _ d| _d S )Nr   )r   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 )Nr   )r	   r   r   r   )r   r   r   r   r   r   *   s
     z
X.__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d ZdS )	EzTest propagation of exceptionsc             C   s   || _ d| _d S )Nr   )r   r	   )r   r   r   r   r   r   2   s    z
E.__init__c             C   s   | S )Nr   )r   r   r   r   r   5   s    z
E.__iter__c             C   s   dd  d S )N   r   r   )r   r   r   r   r   7   s    z
E.__next__N)r   r   r   r   r   r   r   r   r   r   r   r   0   s   r   c               @   s    e Zd ZdZdd Zdd ZdS )NzIterator missing __next__()c             C   s   || _ d| _d S )Nr   )r   r	   )r   r   r   r   r   r   <   s    z
N.__init__c             C   s   | S )Nr   )r   r   r   r   r   ?   s    z
N.__iter__N)r   r   r   r   r   r   r   r   r   r   r   :   s   r   c               @   s   e Zd Zdd ZdS )
PickleTestc          	   C   s   xt tjd D ]}t||}t|}| t|t| | t|| t|}yt| W n( t	k
r   | 
|dd   wY nX t||}t|}| t||dd   qW d S )Nr   )rangepickleHIGHEST_PROTOCOLdumpsloadsassertEqualtypelistnextr   assertFalse)r   Zitorgseqprotoditr   r   r   check_pickleD   s    


zPickleTest.check_pickleN)r   r   r   r+   r   r   r   r   r   B   s   r   c               @   sv   e Zd ZeZddddg 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dS )EnumerateTestCaseabc)r   a)r   b)   cc             C   s\   |  t| | j| j | | j}|  t|| |  t| | j| j | jj d S )N)r"   r#   enumr'   iterr$   resr   )r   er   r   r   test_basicfunctionZ   s
    z$EnumerateTestCase.test_basicfunctionc             C   s   |  | | j| j d S )N)r+   r2   r'   r4   )r   r   r   r   test_picklea   s    zEnumerateTestCase.test_picklec             C   s>   |  t| t| j| j | td}| tt| d S )N )	r"   r$   r2   r   r'   r4   assertRaisesr   r%   )r   r5   r   r   r   test_getitemseqnd   s    z"EnumerateTestCase.test_getitemseqnc             C   s>   |  t| t| j| j | td}| tt| d S )Nr8   )	r"   r$   r2   r   r'   r4   r9   r   r%   )r   r5   r   r   r   test_iteratorseqni   s    z#EnumerateTestCase.test_iteratorseqnc             C   s>   |  t| t| j| j | td}| tt| d S )Nr8   )	r"   r$   r2   r   r'   r4   r9   r   r%   )r   r5   r   r   r   test_iteratorgeneratorn   s    z(EnumerateTestCase.test_iteratorgeneratorc             C   s   |  t| jt| j d S )N)r9   	TypeErrorr2   r   r'   )r   r   r   r   test_noniterables   s    z"EnumerateTestCase.test_noniterablec             C   s   |  t| jt| j d S )N)r9   r=   r2   r   r'   )r   r   r   r   test_illformediterablev   s    z(EnumerateTestCase.test_illformediterablec             C   s   |  tt| t| j d S )N)r9   ZeroDivisionErrorr$   r2   r   r'   )r   r   r   r   test_exception_propagationy   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   r-   r.   r0   r   )r9   r=   r2   )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 )Nr   )	r"   r   setmapidr$   	enumerater'   min)r   r   r   r   test_tuple_reuse   s    *z"EnumerateTestCase.test_tuple_reuseN)r   r   r   rF   r2   r'   r4   r6   r7   r:   r;   r<   r>   r?   rA   rB   r   cpython_onlyrH   r   r   r   r   r,   U   s   r,   c               @   s   e Zd ZdS )MyEnumN)r   r   r   r   r   r   r   rJ      s   rJ   c               @   s   e Zd ZeZdS )SubclassTestCaseN)r   r   r   rJ   r2   r   r   r   r   rK      s   rK   c               @   s   e Zd Zdg  ZZdS )	TestEmptyr8   N)r   r   r   r'   r4   r   r   r   r   rL      s   rL   c               @   s*   e Zd ZedddZeeedeZdS )TestBig
   i N  r0   N)r   r   r   r   r'   r$   zipr4   r   r   r   r   rM      s   rM   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   s   G dd d}xNdt dttd| t dddfD ]&}| t|d d d tt| q4W | tti  | 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   r
      s    z/TestReversed.test_simple.<locals>.A.__getitem__c             S   s   dS )NrQ   r   )r   r   r   r   __len__   s    z+TestReversed.test_simple.<locals>.A.__len__N)r   r   r   r
   rS   r   r   r   r   A   s   rT   r-   rQ   r      )r.   )r   tuplerF   r"   r$   reversedr9   r=   )r   rT   datar   r   r   test_simple   s
    *&zTestReversed.test_simplec             C   s(   t d}| tt|tt| d S )Nr   )r   r"   r#   rX   r3   )r   xr   r   r   test_range_optimization   s    z$TestReversed.test_range_optimizationc             C   s   x\dt dtdtdfD ]@}| tt|t| t|}t| | t|d qW G dd d}t| }| t	tj| d S )NZhellorQ   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 )NTrN   )calledr@   )r   r   r   r   rS      s    z6TestReversed.test_len.<locals>.SeqWithWeirdLen.__len__c             S   s   |S )Nr   )r   indexr   r   r   r
      s    z:TestReversed.test_len.<locals>.SeqWithWeirdLen.__getitem__N)r   r   r   r]   rS   r
   r   r   r   r   SeqWithWeirdLen   s   r_   )
rW   r$   r   r"   operatorlength_hintrX   r   r9   r@   )r   srr_   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 )NrN   r   )r   r   r   r   rS      s    z)TestReversed.test_gc.<locals>.Seq.__len__c             S   s   |S )Nr   )r   r^   r   r   r   r
      s    z-TestReversed.test_gc.<locals>.Seq.__getitem__N)r   r   r   rS   r
   r   r   r   r   Seq   s   re   )rX   rc   )r   re   rb   rc   r   r   r   test_gc   s    zTestReversed.test_gcc             C   s    |  tt |  ttg d d S )Nextra)r9   r=   rX   )r   r   r   r   	test_args   s    zTestReversed.test_argsgetrefcountztest needs sys.getrefcount()c          	   C   sr   dd }t   }|_t|}x<tdD ]0}yt| W n tk
rL   Y q(X | d q(W | |t| d S )Nc               S   s   d S )Nr   r   r   r   r   f   s    z'TestReversed.test_bug1229429.<locals>.frN   z'non-callable __reversed__ didn't raise!)	object__reversed__sysri   r   rX   r=   failr"   )r   rj   rc   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 )Nr   r   )r   r	   r   r   r   r
          z7TestReversed.test_objmethods.<locals>.NoLen.__getitem__N)r   r   r   r
   r   r   r   r   NoLen   s   rr   c               @   s   e Zd Zdd ZdS )z/TestReversed.test_objmethods.<locals>.NoGetItemc             S   s   dS )Nr0   r   )r   r   r   r   rS      rq   z7TestReversed.test_objmethods.<locals>.NoGetItem.__len__N)r   r   r   rS   r   r   r   r   	NoGetItem   s   rs   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 )Nr   r   )r   r	   r   r   r   r
      rq   z9TestReversed.test_objmethods.<locals>.Blocked.__getitem__c             S   s   dS )Nr0   r   )r   r   r   r   rS      rq   z5TestReversed.test_objmethods.<locals>.Blocked.__len__N)r   r   r   r
   rS   rl   r   r   r   r   Blocked   s   rt   )rk   r9   r=   rX   )r   rr   nlrs   Zngirt   r/   r   r   r   test_objmethods   s    zTestReversed.test_objmethodsc             C   sL   xFdt dttdt dddfD ]"}| t|t|d d d  q"W d S )Nr-   rQ   r   rU   rV   )r   rW   rF   r+   rX   r$   )r   rY   r   r   r   r7      s    &zTestReversed.test_pickleN)r   r   r   rZ   r\   rd   rf   rh   unittest
skipUnlesshasattrrm   rp   rv   r7   r   r   r   r   rP      s   
rP   c               @   s   e Zd Zdd ZdS )EnumerateStartTestCasec             C   s:   |  | j}| t|| | t|  | j| j d S )N)r2   r'   r"   r3   r$   r4   )r   r5   r   r   r   r6      s    z)EnumerateStartTestCase.test_basicfunctionN)r   r   r   r6   r   r   r   r   rz      s   rz   c               @   s$   e Zd Zdd Zddddg ZZdS )	TestStartc             C   s   t |ddS )N   )start)rF   )r   r	   r   r   r   <lambda>  rq   zTestStart.<lambda>r-   )r|   r.   )   r/   )   r1   N)r   r   r   r2   r'   r4   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}   )rF   rm   maxsize)r   r	   r   r   r   r~     rq   zTestLongStart.<lambda>r-   r   r.   r0   r/   r   r1   N)r   r   r   r2   rm   r   r'   r4   r   r   r   r   r     s   r   __main__)rw   r`   rm   r   testr   r   r   r   r   r   r   r   TestCaser,   rF   rJ   rK   rL   rM   rP   rz   r{   r   r   mainr   r   r   r   <module>   s,   	
4^
