
    +h                         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e      Ze	d	k(  rd dl
Z
 e
j                          yy)
    )print_function)absolute_importN   )_test_extension)TestCasec                   N    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y)	CAPITestsc                 v    | j                  dt        j                  t        j                  d                    y )N2   c                       y)Nr    r       Z/var/www/html/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             y )Nc                     | |z  S Nr   xys     r   adderz+CAPITests.test_switch_kwargs.<locals>.adder   s    q5Lr            r   )r   r   r   test_switch_kwargs)r   r   gs      r   r!   zCAPITests.test_switch_kwargs   s6    	e$O>>qAKLr   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   r1   zCAPITests.test_getcurrent*   s    '')r   c                 P    | j                  dt        j                  d              y )Nc                       y)Nr3   r   r   r   r   r   z-CAPITests.test_new_greenlet.<locals>.<lambda>.   r   r   )r   r   test_new_greenletr   s    r   r5   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_dead0   s"    !!?#K#K	Mr   c                 `    | j                  t        j                  t        j                         y r   )r7   r   errorr   test_raise_greenlet_errorr   s    r   r=   z#CAPITests.test_raise_greenlet_error4   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_infor8   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
isinstancer@   str)r   r-   r"   rD   s      @r   rE   zCAPITests.test_throw8   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)
r7   	TypeErrorr   test_throw_exactr   r&   	Exceptionr   rI   	exceptionr   excs     r   test_non_traceback_paramz"CAPITests.test_non_traceback_paramN   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)r7   rK   r   rL   r   r&   rM   BaseExceptionr   rI   rN   rO   s     r   test_instance_of_wrong_typez%CAPITests.test_instance_of_wrong_typeY   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)	r7   rK   r   rL   r   r&   r   rI   rN   rO   s     r   test_not_throwablezCAPITests.test_not_throwablee   si    y) 	S,,##%		 	S]]+L	N	 	s   +A//A8N)__name__
__module____qualname__r   r!   r.   r1   r5   r:   r=   rE   rQ   rT   rW   r   r   r   r	   r	      sB    LMJ&*NMG%,	N
M	Nr   r	   __main__)
__future__r   r   rB   r    r   r   r	   rX   unittestmainr   r   r   <module>r`      sE    % & 
   bN bNJ zHMMO r   