o
    ÕÜgõ  ã                   @   sp   d dl mZ d dl mZ d dlZd dlZddlmZ ddlmZ G dd„ deƒZe	d	kr6d dl
Z
e
 ¡  dS dS )
é    )Úprint_function)Úabsolute_importNé   )Ú_test_extension)ÚTestCasec                   @   sd   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d„ Zdd„ Zdd„ ZdS )Ú	CAPITestsc              	   C   s    |   dt t dd„ ¡¡¡ d S )Né2   c                   S   ó   dS )Nr   © r
   r
   r
   úa/var/www/html/api-tag/env/lib/python3.10/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   Úadder   s   z+CAPITests.test_switch_kwargs.<locals>.adderé   é   é   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ƒ‚)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   Úfoo   s   

ÿz%CAPITests.test_setparent.<locals>.foo)r   r   r   r   Útest_setparent)r   r$   Ú	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   r	   )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   ó   |   tjtj¡ d S r   )ÚassertRaisesr   ÚGreenletExitr   Útest_raise_dead_greenletr   r
   r
   r   Útest_raise_greenlet_dead0   ó   ÿz"CAPITests.test_raise_greenlet_deadc                 C   r*   r   )r+   r   Úerrorr   Útest_raise_greenlet_errorr   r
   r
   r   r1   4   r/   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                      sN   z
t  ¡ j ¡  W d S  ty   ˆ  t ¡ d ¡ Y d S  t jy&   t	‚w )Nr   )
r   r   r   r   Ú
ValueErrorÚappendÚsysÚexc_infor,   r    r
   ©Úseenr
   r   r$   ;   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   ÚlenÚ
assertTrueÚ
isinstancer2   Ústr)r   r$   r   r
   r6   r   r8   8   s   

þ
ýzCAPITests.test_throwc                 C   sV   |   t¡}t t ¡ ttƒ | ¡ W d   ƒ n1 sw   Y  |  t|j	ƒd¡ d S )Nz1throw() third argument must be a traceback object)
r+   Ú	TypeErrorr   Útest_throw_exactr   r   Ú	Exceptionr   r<   Ú	exception©r   Úexcr
   r
   r   Útest_non_traceback_paramN   s   üÿÿz"CAPITests.test_non_traceback_paramc                 C   sX   |   t¡}t t ¡ tƒ tƒ d ¡ W d   ƒ n1 sw   Y  |  t	|j
ƒd¡ d S )Nz0instance exception may not have a separate value)r+   r=   r   r>   r   r   r?   ÚBaseExceptionr   r<   r@   rA   r
   r
   r   Útest_instance_of_wrong_typeY   s   üÿÿz%CAPITests.test_instance_of_wrong_typec                 C   sT   |   t¡}t t ¡ dd d ¡ W d   ƒ n1 sw   Y  |  t|jƒd¡ d S )NÚabcz1exceptions must be classes, or instances, not str)	r+   r=   r   r>   r   r   r   r<   r@   rA   r
   r
   r   Útest_not_throwablee   s   üÿÿzCAPITests.test_not_throwableN)Ú__name__Ú
__module__Ú__qualname__r   r   r%   r'   r)   r.   r1   r8   rC   rE   rG   r
   r
   r
   r   r      s    r   Ú__main__)Ú
__future__r   r   r4   r   Ú r   r   r   rH   ÚunittestÚmainr
   r
   r
   r   Ú<module>   s    eþ