U
    nv¨gØ  ã                   @   sL   d dl m Z  ddlmZ G dd„ de ƒZdd„ Zdd	„ ZG d
d„ deƒZdS )é    )Úgreenleté   )ÚTestCasec                   @   s4   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ ZeZdS )
ÚgenletNc                 O   s   || _ || _d S ©N)ÚargsÚkwds)Úselfr   r   © r
   úA/tmp/pip-unpacked-wheel-49pzfzc0/greenlet/tests/test_generator.pyÚ__init__   s    zgenlet.__init__c                 C   s   | j \}|| j| 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__)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   Únextr
   r
   r
   r   r      s   r   c                 C   s:   t  ¡ }t|tƒs*|d k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   Ú	generator'   s    r"   c                   @   s   e Zd Zdd„ ZdS )ÚGeneratorTestsc                    sf   g ‰ ‡ fdd„}t |ƒ}tdƒD ]}|dƒD ]}ˆ  |¡ q,q |  ˆ dddddddddddg
 ¡ 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%   ÚassertEqual)r	   r   Ú_Újr
   r(   r   Útest_generator0   s    zGeneratorTests.test_generatorN)r   r   r   r1   r
   r
   r
   r   r#   /   s   r#   N)r   Ú r   r   r   r"   r#   r
   r
   r
   r   Ú<module>   s
   	