o
    i                     @   sd   d dl Z d dlZddlmZ ddlmZ ddlmZ G dd deZedkr0d dl	Z	e	
  dS dS )	    N   )_test_extension)TestCase)ignores_leakcheckc                   @   sp   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edd ZdS )	CAPITestsc              	   C   s    |  dttdd  d S )N2   c                   S      dS )Nr    r	   r	   r	   g/var/www/html/arapca_proje/venv/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   sf   dd }t  |}| dtj|ddd | td td W d    d S 1 s,w   Y  d S )	Nc                 S   s   | | S Nr	   xyr	   r	   r
   adder   s   z+CAPITests.test_switch_kwargs.<locals>.adder         r   zargument 1 must be greenletznot a greenlet)r   r   r   test_switch_kwargsassertRaisesRegex	TypeError)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 )Nc                   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_dead1      z"CAPITests.test_raise_greenlet_deadc                 C   r+   r   )r,   r   errorr   test_raise_greenlet_errorr   r	   r	   r
   r2   5   r0   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
isinstancer3   str)r   r%   r   r	   r7   r
   r9   9   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,   r   r   test_throw_exactr   r   	Exceptionr   r=   	exceptionr   excr	   r	   r
   test_non_traceback_paramO   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_typeZ   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_throwablef   s   zCAPITests.test_not_throwablec              	      s   ddl m} d}|rdg| }ndg| }ddd fdd	d fd
dd ffD ]1\} | |   fddt|D }dd |D }| || W d    n1 sRw   Y  q&d S )Nr   )PY314d   r   r   c                   S      t ttS r   )r   r   r   objectr	   r	   r	   r
   r   {       z&CAPITests.test_leaks.<locals>.<lambda>r   c                   S   rJ   r   )r   r   r   rK   r	   r	   r	   r
   r   }   rL   r*   c                   S   s
   t tS r   )r   r*   rK   r	   r	   r	   r
   r      s   
 c                    s   g | ]}  qS r	   r	   ).0_callerr	   r
   
<listcomp>   s    z(CAPITests.test_leaks.<locals>.<listcomp>c                 S   s   g | ]	}t |d  qS )r   )r5   getrefcount)rM   ir	   r	   r
   rQ      s    ) rH   subTestranger   )r   rH   itersexpected_refsnameresultsrefsr	   rO   r
   
test_leaksq   s0   
zCAPITests.test_leaksN)__name__
__module____qualname__r   r   r&   r(   r*   r/   r2   r9   rC   rE   rG   r   r\   r	   r	   r	   r
   r   
   s    	r   __main__)r5   r   rT   r   r   	leakcheckr   r   r]   unittestmainr	   r	   r	   r
   <module>   s     