a
    vÜaÙ	  ã                   @   sb   d dl mZ d dl mZ d dlZd dlZd dlZddlmZ G dd„ dejƒZ	e
dkr^e ¡  dS )	é    )Úprint_function)Úabsolute_importNé   )Ú_test_extensionc                   @   sL   e Z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
dS )Ú	CAPITestsc              	   C   s    |   dt t dd„ ¡¡¡ d S )Né2   c                   S   s   dS )Nr   © r   r   r   úFlib/python3.9/site-packages/greenlet/tests/test_extension_interface.pyÚ<lambda>   ó    z'CAPITests.test_switch.<locals>.<lambda>)ÚassertEqualr   Útest_switchÚgreenlet©Úselfr   r   r	   r      s    ÿzCAPITests.test_switchc                 C   s.   dd„ }t   |¡}|  dtj|ddd¡ d S )Nc                 S   s   | | S ©Nr   ©ÚxÚyr   r   r	   Úfoo   s    z)CAPITests.test_switch_kwargs.<locals>.fooé   é   é   r   )r   r   r   Útest_switch_kwargs©r   r   Úgr   r   r	   r      s    
zCAPITests.test_switch_kwargsc                 C   s,   dd„ }t   |¡ ¡ }|  d t |¡¡ d S )Nc                  S   sB   dd„ } t   | ¡}| ¡  t  ¡ j |¡ t  ¡ j tdƒ¡ d S )Nc                   S   s(   t  ¡ j ¡  t  ¡ j ¡  tdƒ‚d S )Nz#Should never have reached this code)r   Ú
getcurrentÚparentÚswitchÚAssertionErrorr   r   r   r	   Úbar   s    z2CAPITests.test_setparent.<locals>.foo.<locals>.barzShould never reach this code)r   r   r   r   Úthrowr   )r    Úchildr   r   r	   r      s    

ÿz%CAPITests.test_setparent.<locals>.foo)r   r   r   r   Útest_setparent)r   r   Z	foo_childr   r   r	   r#      s    zCAPITests.test_setparentc                 C   s   t  ¡  d S r   )r   Útest_getcurrentr   r   r   r	   r$   (   s    zCAPITests.test_getcurrentc                 C   s   |   dt dd„ ¡¡ d S )Néñÿÿÿc                   S   s   dS )Nr%   r   r   r   r   r	   r
   ,   r   z-CAPITests.test_new_greenlet.<locals>.<lambda>)r   r   Útest_new_greenletr   r   r   r	   r&   +   s    zCAPITests.test_new_greenletc                 C   s   |   tjtj¡ d S r   )ÚassertRaisesr   ÚGreenletExitr   Ztest_raise_dead_greenletr   r   r   r	   Útest_raise_greenlet_dead.   s    ÿz"CAPITests.test_raise_greenlet_deadc                 C   s   |   tjtj¡ d S r   )r'   r   Úerrorr   Útest_raise_greenlet_errorr   r   r   r	   r+   2   s    ÿz#CAPITests.test_raise_greenlet_errorc                    sl   g ‰ ‡ fdd„}t   |¡}| ¡  t |¡ |  tˆ ƒd¡ |  tˆ d tƒd¡ |  t	ˆ d ƒdd¡ d S )Nc                      sR   zt  ¡ j ¡  W n: ty6   ˆ  t ¡ d ¡ Y n t jyL   t	‚Y n0 d S )Nr   )
r   r   r   r   Ú
ValueErrorÚappendÚsysÚexc_infor(   r   r   ©Úseenr   r	   r   9   s    z!CAPITests.test_throw.<locals>.foor   r   z"ValueError was not raised in foo()ztake that sucka!zmessage doesn't match)
r   r   r   Ú
test_throwr   ÚlenZ
assertTrueÚ
isinstancer,   Ústrr   r   r0   r	   r2   6   s    

þ
ýzCAPITests.test_throwN)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r$   r&   r)   r+   r2   r   r   r   r	   r      s   r   Ú__main__)Z
__future__r   r   r.   Zunittestr   Ú r   ZTestCaser   r6   Úmainr   r   r   r	   Ú<module>   s   A