a
    vÜa   ã                   @   sJ   d dl Z d dlmZ G dd„ deƒZdd„ Zdd„ ZG d	d
„ d
e jƒZdS )é    N)Úgreenletc                   @   s0   e Zd Zdd„ Zdd„ Zdd„ Zdd„ ZeZd	S )
Úgenletc                 O   s   || _ || _d S ©N)ÚargsÚkwds)Úselfr   r   © r   ú<lib/python3.9/site-packages/greenlet/tests/test_generator.pyÚ__init__   s    zgenlet.__init__c                 C   s   | j \}|| ji | j¤Ž d S r   )Úfnr   r   )r   r   r   r   r	   Úrun   s    z
genlet.runc                 C   s   | S r   r   )r   r   r   r	   Ú__iter__   s    zgenlet.__iter__c                 C   s"   t  ¡ | _|  ¡ }| r|S t‚d S r   )r   Ú
getcurrentÚparentÚswitchÚStopIteration)r   Úresultr   r   r	   Ú__next__   s
    
zgenlet.__next__N)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   Únextr   r   r   r	   r      s
   	r   c                 C   s:   t  ¡ }t|tƒs*|d u r"tdƒ‚|j}q|j | ¡ d S )Nzyield outside a genlet)r   r   Ú
isinstancer   ÚRuntimeErrorr   r   )ÚvalueÚgr   r   r	   ÚYield   s    
r   c                    s   G ‡ fdd„dt ƒ}|S )Nc                       s   e Zd Z” fZdS )zgenerator.<locals>.generatorN)r   r   r   r   r   ©Úfuncr   r	   Ú	generator(   s   r   )r   )r   r   r   r   r	   r   '   s    r   c                   @   s   e Zd Zdd„ ZdS )ÚGeneratorTestsc                    sV   g ‰ ‡ fdd„}t |ƒ}tdƒD ]}|dƒD ]}ˆ  |¡ q,q |  ˆ dg d¢ ¡ d S )Nc                    s$   t | ƒD ]}ˆ  |¡ t|ƒ qd S r   )ÚrangeÚappendr   )ÚnÚi©Úseenr   r	   r   3   s    
z(GeneratorTests.test_generator.<locals>.gé   é   )
r   r   é   r)   é   r*   r'   r'   é   r+   )r   r!   r"   ZassertEqual)r   r   ÚkÚjr   r%   r	   Útest_generator0   s    zGeneratorTests.test_generatorN)r   r   r   r.   r   r   r   r	   r    /   s   r    )Zunittestr   r   r   r   ZTestCaser    r   r   r   r	   Ú<module>   s
   	