
    Bi                         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                          yy)	    N   )_test_extension)TestCase)ignores_leakcheckc                   ^    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y)	CAPITestsc                 v    | j                  dt        j                  t        j                  d                    y )N2   c                       y)Nr
    r       m/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/greenlet/tests/test_extension_interface.py<lambda>z'CAPITests.test_switch.<locals>.<lambda>       r   )assertEqualr   test_switchgreenletselfs    r   r   zCAPITests.test_switch   s,    ++H,=,=j,IJ	Lr   c                    d }t        j                   |      }| j                  dt        j                  |dd             | j	                  t
        d      5  t        j                  d       d d d        y # 1 sw Y   y xY w)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   so    	e$O>>qAKL##I/LM 	A../?@	A 	A 	As   A66A?c                     d }t        j                   |      j                         }| j                  d t        j                  |             y )Nc                     d } t        j                   |       }|j                          t        j                         j                  j                  |       t        j                         j                  j	                  t        d             y )Nc                      t        j                         j                  j                          t        j                         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   sF    ##%,,335
 ##%,,335$%JKKr   zShould never reach this code)r   r)   r'   r(   throwr*   )r+   childs     r   fooz%CAPITests.test_setparent.<locals>.foo   sg    L %%c*ELLN!((//6!((..=>@r   )r   r)   r   r   test_setparent)r   r.   	foo_childs      r   r/   zCAPITests.test_setparent   s>    	@ %%c*113	==iHIr   c                 ,    t        j                          y r   )r   test_getcurrentr   s    r   r2   zCAPITests.test_getcurrent+   s    '')r   c                 P    | j                  dt        j                  d              y )Nc                       y)Nr4   r   r   r   r   r   z-CAPITests.test_new_greenlet.<locals>.<lambda>/   r   r   )r   r   test_new_greenletr   s    r   r6   zCAPITests.test_new_greenlet.   s    o??LMr   c                 `    | j                  t        j                  t        j                         y r   )assertRaisesr   GreenletExitr   test_raise_dead_greenletr   s    r   test_raise_greenlet_deadz"CAPITests.test_raise_greenlet_dead1   s"    !!?#K#K	Mr   c                 `    | j                  t        j                  t        j                         y r   )r8   r   errorr   test_raise_greenlet_errorr   s    r   r>   z#CAPITests.test_raise_greenlet_error5   s     NNOEE	Gr   c                 B   g fd}t        j                   |      }|j                          t        j                  |       | j	                  t              d       | j                  t        d   t              d       | j	                  t        d         dd       y )Nc                      	 t        j                         j                  j                          y # t        $ r)  j                  t        j                         d          Y y t         j                  $ r t        w xY w)Nr   )
r   r'   r(   r)   
ValueErrorappendsysexc_infor9   r*   )seens   r   r.   z!CAPITests.test_throw.<locals>.foo<   s]    %##%,,335 /CLLN1-.(( %$$%s   ,0 /A:!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
isinstancerA   str)r   r.   r#   rE   s      @r   rF   zCAPITests.test_throw9   s    	% c"	
""1%TA&tAw
+0	2 	QL#	%r   c                    | j                  t              5 }t        j                  t	        j
                         t        t               |        d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nz1throw() third argument must be a traceback object)
r8   r"   r   test_throw_exactr   r'   	Exceptionr   rJ   	exceptionr   excs     r   test_non_traceback_paramz"CAPITests.test_non_traceback_paramO   sk    y) 	S,,##%		 	S]]+L	N	 	s   7A;;Bc                    | j                  t              5 }t        j                  t	        j
                         t               t               d        d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nz0instance exception may not have a separate value)r8   r"   r   rL   r   r'   rM   BaseExceptionr   rJ   rN   rO   s     r   test_instance_of_wrong_typez%CAPITests.test_instance_of_wrong_typeZ   sm    y) 	S,,##%		 	S]]+K	M	 	s   ;A??Bc                     | j                  t              5 }t        j                  t	        j
                         dd d        d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nabcz1exceptions must be classes, or instances, not str)	r8   r"   r   rL   r   r'   r   rJ   rN   rO   s     r   test_not_throwablezCAPITests.test_not_throwablef   si    y) 	S,,##%		 	S]]+L	N	 	s   +A//A8c                 f   ddl m} d}|rdg|z  }ndg|z  }dd fdd fd	d
 ffD ]s  \  }}| j                  |      5  t        |      D cg c]	  } |        }}|D cg c]  }t	        j
                  |      dz
   }	}| j                  |	|       d d d        u y c c}w c c}w # 1 sw Y   xY w)Nr   )PY314d   r   r   c                  Z    t        j                  t        j                  t                    S r   )r   r   r   objectr   r   r   r   z&CAPITests.test_leaks.<locals>.<lambda>{   s    _001B1B61JK r   r    c                  Z    t        j                  t        j                  t                    S r   )r   r    r   r\   r   r   r   r   z&CAPITests.test_leaks.<locals>.<lambda>}   s    _778I8I&8QR r   r6   c                  4    t        j                  t              S r   )r   r6   r\   r   r   r   r   z&CAPITests.test_leaks.<locals>.<lambda>   s    _66v> r   ) rY   subTestrangerC   getrefcountr   )
r   rY   itersexpected_refsnamecaller_resultsirefss
             r   
test_leakszCAPITests.test_leaksq   s    C%KMC%KMKM!RT >@
 	6LD& d# 6-25\:68::  OOA&* 
   }56 6	6 ;6 6s)   B'BB'B">B'
B''B0	N)__name__
__module____qualname__r   r    r/   r2   r6   r;   r>   rF   rQ   rT   rW   r   rk   r   r   r   r   r   
   sV    LAJ&*NMG%,	N
M	N 6 6r   r   __main__)rC   r   r_   r   r   	leakcheckr   r   rl   unittestmainr   r   r   <module>rs      s@    
    (~6 ~6B zHMMO r   