a
    [ŠÝg€  ã                   @   s<   d dl Z d dlmZ ddlmZ dd„ ZG dd„ deƒZdS )	é    N)Úgreenleté   )ÚTestCasec                  G   s   t  ¡ jj| Ž S )N)r   Ú
getcurrentÚparentÚswitch)Úargs© r	   úg/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/greenlet/tests/test_throw.pyr      s    r   c                   @   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S )Ú
ThrowTestsc                 C   s>   dd„ }t |ƒ}| ¡ }|  |d¡ | t¡}|  |d¡ d S )Nc                   S   s6   zt dƒ W n ty(   t dƒ Y d S 0 t dƒ d S ©NÚokÚfail)r   ÚRuntimeErrorr	   r	   r	   r
   Úf   s    z ThrowTests.test_class.<locals>.fr   ©r   r   ÚassertEqualÚthrowr   ©Úselfr   ÚgÚresr	   r	   r
   Ú
test_class   s    
zThrowTests.test_classc                 C   sv   dd„ }t |ƒ}| ¡ }|  |d¡ | tdƒ¡}|  |d¡ t |ƒ}| ¡ }|  |d¡ | td¡}|  |d¡ d S )Nc                  S   sR   zt dƒ W n8 tyD   t ¡ d } t| ƒdkr@t dƒ Y d S Y n0 t dƒ d S )Nr   r   Úciaor   )r   r   ÚsysÚexc_infoÚstr)Úvalr	   r	   r
   r      s    zThrowTests.test_val.<locals>.fr   r   r   r   r	   r	   r
   Útest_val   s    
zThrowTests.test_valc                 C   sh   dd„ }t |ƒ}| ¡ }|  |d¡ | ¡ }|  t|t jƒ¡ |  |j¡ | ¡ }|  t|t jƒ¡ d S )Nc                   S   s   t dƒ t dƒ d S r   ©r   r	   r	   r	   r
   r   2   s    zThrowTests.test_kill.<locals>.fr   )r   r   r   r   Ú
assertTrueÚ
isinstanceZGreenletExitÚdeadr   r	   r	   r
   Ú	test_kill1   s    zThrowTests.test_killc                    sD  t  ¡ ‰ ‡ fdd„}‡ fdd„}t |ƒ}t ||d}|  t¡ | t¡ W d   ƒ n1 s^0    Y  |  |j¡ |  |j¡ t |ƒ}t ||d}| ¡ }|  |d¡ | t¡}|  |d¡ |  |j¡ |  |j¡ t |ƒ}t ||d}| ¡ }|  |d¡ | ¡ }|  |d¡ | t¡}|  |d¡ |  |j¡ |  |j¡ d S )	Nc                      s(   zˆ   d¡ W n ty"   Y dS 0 dS )Núf1 ready to catchÚcaughtznormal exit)r   Ú
IndexErrorr	   ©Úmainr	   r
   Úf1A   s
    z9ThrowTests.test_throw_goes_to_original_parent.<locals>.f1c                      s   ˆ   d¡ d S )Núfrom f2r   r	   r'   r	   r
   Úf2H   s    z9ThrowTests.test_throw_goes_to_original_parent.<locals>.f2)r   r$   r%   r*   )	r   r   ÚassertRaisesr&   r   r    r"   r   r   )r   r)   r+   Úg1Úg2r   r	   r'   r
   Ú"test_throw_goes_to_original_parent>   s6    (

z-ThrowTests.test_throw_goes_to_original_parentc                 C   sT   |   t¡$}t ¡  ttƒ | ¡ W d   ƒ n1 s40    Y  |  t|jƒd¡ d S )Nz1throw() third argument must be a traceback object)	r,   Ú	TypeErrorr   r   r   Ú	Exceptionr   r   Ú	exception©r   Úexcr	   r	   r
   Útest_non_traceback_paramf   s    ý"ÿz#ThrowTests.test_non_traceback_paramc                 C   sT   |   t¡$}t ¡  tƒ tƒ ¡ W d   ƒ n1 s40    Y  |  t|j	ƒd¡ d S )Nz0instance exception may not have a separate value)
r,   r0   r   r   r   r1   ÚBaseExceptionr   r   r2   r3   r	   r	   r
   Útest_instance_of_wrong_typep   s    þ"ÿz&ThrowTests.test_instance_of_wrong_typec                 C   sN   |   t¡}t ¡  d¡ W d   ƒ n1 s.0    Y  |  t|jƒd¡ d S )NÚabcz1exceptions must be classes, or instances, not str)r,   r0   r   r   r   r   r   r2   r3   r	   r	   r
   Útest_not_throwablez   s    ÿ"ÿzThrowTests.test_not_throwableN)
Ú__name__Ú
__module__Ú__qualname__r   r   r#   r/   r5   r7   r9   r	   r	   r	   r
   r      s   (

r   )r   r   Ú r   r   r   r	   r	   r	   r
   Ú<module>   s   