Ñò
ş§Kc           @   sN   d  d k  Z  d  d k Z d  d k l Z d   Z d e i f d     YZ d S(   i˙˙˙˙N(   t   greenletc          G   s   t  i   i i |    S(   N(   R    t
   getcurrentt   parentt   switch(   t   args(    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyR      s    t
   ThrowTestsc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   sT   d   } t  |  } | i   } |  i | d  | i t  } |  i | d  d  S(   Nc           S   s=   y t  d  Wn t j
 o t  d  d  SXt  d  d  S(   Nt   okt   fail(   R   t   RuntimeError(    (    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyt   f   s    
R   (   R    R   t   assertEqualst   throwR   (   t   selfR	   t   gt   res(    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyt
   test_class
   s    	c         C   s¤   d   } t  |  } | i   } |  i | d  | i t d   } |  i | d  t  |  } | i   } |  i | d  | i t d  } |  i | d  d  S(   Nc          S   sd   y t  d  WnE t j
 o9 t i   d }  t |   d j o t  d  d  Sn Xt  d  d  S(   NR   i   t   ciaoR   (   R   R   t   syst   exc_infot   str(   t   val(    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyR	      s    

R   R   (   R    R   R
   R   R   (   R   R	   R   R   (    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyt   test_val   s    	
c         C   s   d   } t  |  } | i   } |  i | d  | i   } |  i t | t  i   |  i | i  | i   } |  i t | t  i   d  S(   Nc           S   s   t  d  t  d  d  S(   NR   R   (   R   (    (    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyR	   0   s    
R   (   R    R   R
   R   t
   assertTruet
   isinstancet   GreenletExitt   dead(   R   R	   R   R   (    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyt	   test_kill/   s    	c            s  t  i       f d   }   f d   } t  |  } t  | d | } |  i t | i t  |  i | i  |  i | i  t  |  } t  | d | } | i   } |  i | d  | i t  } |  i | d  |  i | i  |  i | i  t  |  } t  | d | } | i   } |  i | d  | i   } |  i | d  | i t  } |  i | d  |  i | i  |  i | i  d  S(   Nc              s0   y   i  d  Wn t j
 o d SXd Sd  S(   Ns   f1 ready to catcht   caughts   normal exit(   R   t
   IndexError(    (   t   main(    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyt   f1>   s
    c              s     i  d  d  S(   Ns   from f2(   R   (    (   R   (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyt   f2E   s    R   s   f1 ready to catchR   s   from f2(	   R    R   t   assertRaisesR   R   R   R   R   R
   (   R   R   R   t   g1t   g2R   (    (   R   s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyt"   test_throw_goes_to_original_parent<   s4    (   t   __name__t
   __module__R   R   R   R#   (    (    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyR   	   s   			(   R   t   unittestR    R   t   TestCaseR   (    (    (    s8   /home/ambroff/code/greenlet/greenlet/tests/test_throw.pyt   <module>   s   	