
    i                         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e          Zedk    rd dl	Z	 e	j
                     dS dS )	    N   )_test_extension)TestCase)ignores_leakcheckc                   f    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zed             ZdS )	CAPITestsc                 |    |                      dt          j        t          j        d                                d S )N2   c                      dS )Nr
    r       m/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/greenlet/tests/test_extension_interface.py<lambda>z'CAPITests.test_switch.<locals>.<lambda>   s    b r   )assertEqualr   test_switchgreenletselfs    r   r   zCAPITests.test_switch   sF    +H,=jj,I,IJJ	L 	L 	L 	L 	Lr   c                    d }t          j         |          }|                     dt          j        |dd                     |                     t
          d          5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nc                     | |z  S Nr   xys     r   adderz+CAPITests.test_switch_kwargs.<locals>.adder   s    q5Lr            r   zargument 1 must be greenletznot a greenlet)r   r   r   test_switch_kwargsassertRaisesRegex	TypeError)r   r   gs      r   r   zCAPITests.test_switch_kwargs   s    	 	 	e$$O>qAKKKLLL##I/LMM 	A 	A./?@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   B  BBc                     d }t          j         |                                          }|                     d t          j        |                     d S )Nc                  "   d } t          j         |           }|                                 t          j                    j                            |           t          j                    j                            t          d                     d S )Nc                      t          j                    j                                         t          j                    j                                         t	          d          )Nz#Should never have reached this code)r   
getcurrentparentswitchAssertionErrorr   r   r   barz2CAPITests.test_setparent.<locals>.foo.<locals>.bar   sO    #%%,33555
 #%%,33555$%JKKKr   zShould never reach this code)r   r(   r&   r'   throwr)   )r*   childs     r   fooz%CAPITests.test_setparent.<locals>.foo   s    L L L %c**ELLNNN!!(//666!!(..=>>@ @ @ @ @r   )r   r(   r   r   test_setparent)r   r-   	foo_childs      r   r.   zCAPITests.test_setparent   sY    	@ 	@ 	@ %c**1133	=iHHIIIIIr   c                 ,    t          j                     d S r   )r   test_getcurrentr   s    r   r1   zCAPITests.test_getcurrent+   s    ')))))r   c                 X    |                      dt          j        d                      d S )Nc                      dS )Nr3   r   r   r   r   r   z-CAPITests.test_new_greenlet.<locals>.<lambda>/   s     r   )r   r   test_new_greenletr   s    r   r5   zCAPITests.test_new_greenlet.   s+    o?LLMMMMMr   c                 Z    |                      t          j        t          j                   d S r   )assertRaisesr   GreenletExitr   test_raise_dead_greenletr   s    r   test_raise_greenlet_deadz"CAPITests.test_raise_greenlet_dead1   s4    !?#K	M 	M 	M 	M 	Mr   c                 Z    |                      t          j        t          j                   d S r   )r7   r   errorr   test_raise_greenlet_errorr   s    r   r=   z#CAPITests.test_raise_greenlet_error5   s3    NOE	G 	G 	G 	G 	Gr   c                    g fd}t          j         |          }|                                 t          j        |           |                     t                    d           |                     t          d         t                    d           |                     t          d                   dd           d S )Nc                     	 t          j                    j                                         d S # t          $ r0                      t          j                    d                    Y d S t           j        $ r t          w xY w)Nr   )
r   r&   r'   r(   
ValueErrorappendsysexc_infor8   r)   )seens   r   r-   z!CAPITests.test_throw.<locals>.foo<   s    %#%%,3355555 / / /CLNN1-......( % % %$$%s   */ 6A>(A>r   r   z"ValueError was not raised in foo()ztake that sucka!zmessage doesn't match)
r   r(   r   
test_throwr   len
assertTrue
isinstancer@   str)r   r-   r"   rD   s      @r   rE   zCAPITests.test_throw9   s    	% 	% 	% 	% 	% c""	


"1%%%TA&&&tAw
++0	2 	2 	2 	QLL#	% 	% 	% 	% 	%r   c                 ,   |                      t                    5 }t          j        t	          j                    t          t                      |            d d d            n# 1 swxY w Y   |                     t          |j	                  d           d S )Nz1throw() third argument must be a traceback object)
r7   r!   r   test_throw_exactr   r&   	Exceptionr   rI   	exceptionr   excs     r   test_non_traceback_paramz"CAPITests.test_non_traceback_paramO   s    y)) 	S,#%%	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S]++L	N 	N 	N 	N 	Ns   :A!!A%(A%c                 :   |                      t                    5 }t          j        t	          j                    t                      t                      d            d d d            n# 1 swxY w Y   |                     t          |j
                  d           d S )Nz0instance exception may not have a separate value)r7   r!   r   rK   r   r&   rL   BaseExceptionr   rI   rM   rN   s     r   test_instance_of_wrong_typez%CAPITests.test_instance_of_wrong_typeZ   s    y)) 	S,#%%	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S]++K	M 	M 	M 	M 	Ms   AA((A,/A,c                 
   |                      t                    5 }t          j        t	          j                    dd d            d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nabcz1exceptions must be classes, or instances, not str)	r7   r!   r   rK   r   r&   r   rI   rM   rN   s     r   test_not_throwablezCAPITests.test_not_throwablef   s    y)) 	S,#%%	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S]++L	N 	N 	N 	N 	Ns   )AAAc                 2   ddl m} d}|rdg|z  }ndg|z  }dd fdd fd	d
 ffD ]o\  }|                     |          5  fdt          |          D             }d |D             }|                     ||           d d d            n# 1 swxY w Y   pd S )Nr   )PY314d   r   r   c                  X    t          j        t          j        t                              S r   )r   r   r   objectr   r   r   r   z&CAPITests.test_leaks.<locals>.<lambda>{   s    _01B61J1JKK r   r   c                  X    t          j        t          j        t                              S r   )r   r   r   r[   r   r   r   r   z&CAPITests.test_leaks.<locals>.<lambda>}   s    _78I&8Q8QRR r   r5   c                  4    t          j        t                    S r   )r   r5   r[   r   r   r   r   z&CAPITests.test_leaks.<locals>.<lambda>   s    _6v>> r   c                 $    g | ]}             S r   r   ).0_callers     r   
<listcomp>z(CAPITests.test_leaks.<locals>.<listcomp>   s    :::6688:::r   c                 <    g | ]}t          j        |          d z
  S )r   )rB   getrefcount)r_   is     r   rb   z(CAPITests.test_leaks.<locals>.<listcomp>   s7        OA&&*  r   ) rX   subTestranger   )r   rX   itersexpected_refsnameresultsrefsra   s          @r   
test_leakszCAPITests.test_leaksq   sG    	(C%KMMC%KMKKM!RRT >>@
 	6 	6LD& d## 6 6::::U5\\:::    
   }5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6s   >BB	B	N)__name__
__module____qualname__r   r   r.   r1   r5   r:   r=   rE   rP   rS   rV   r   rn   r   r   r   r   r   
   s        L L LA A AJ J J&* * *N N NM M MG G G% % %,	N 	N 	N
M 
M 
M	N 	N 	N 6 6 6 6 6r   r   __main__)rB   r   rf   r   r   	leakcheckr   r   ro   unittestmainr   r   r   <module>rv      s    



              ( ( ( ( ( (~6 ~6 ~6 ~6 ~6 ~6 ~6 ~6B zOOOHMOOOOO r   