Ñò
ã$§Kc        	   @   s‘   d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d e f d „  ƒ  YZ d „  Z d „  Z	 d e i
 f d „  ƒ  YZ d S(	   iÿÿÿÿN(   t   greenlett	   SomeErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyR   	   s   c         C   sE   y t  i ƒ  i i ƒ  Wn! |  i t i ƒ  d ƒ ‚  n Xt ‚ d  S(   Ni    (   R    t
   getcurrentt   parentt   switcht   appendt   syst   exc_infoR   (   t   seen(    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   fmain   s    c         C   s,   d „  } t  | d |  ƒ} | i | ƒ d  S(   Nc         S   s
   |  ‚ d  S(   N(    (   t   exc(    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   crasher   s    R   (   R    R   (   t   gR   R   t   g1(    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   send_exception   s    	t   GreenletTestsc           B   sk   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   c            s|   g  ‰  ‡  f d †  } t  | ƒ } ˆ  i d ƒ | i ƒ  ˆ  i d ƒ | i ƒ  ˆ  i d ƒ |  i ˆ  t t d ƒ ƒ ƒ d  S(   Nc              s1   ˆ  i  d ƒ t i ƒ  i i ƒ  ˆ  i  d ƒ d  S(   Ni   i   (   R   R    R   R   R   (    (   t   lst(    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   f   s    i    i   i   i   (   R    R   R   t   assertEqualst   listt   range(   t   selfR   R   (    (   R   s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_simple   s    

c            s¡   g  ‰  ‡ ‡  f d †  } g  } t  d ƒ D] } | t i d | ƒ q) ~ } x | D] } | i ƒ  qR Wx | D] } | i ƒ  qm Wˆ i t ˆ  ƒ t | ƒ ƒ d  S(   Nc              s   ˆ  i  ƒ  ˆ i t ƒ d  S(   N(   R   R   t   True(    (   R   t   success(    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyR   -   s    
i
   t   target(   R   t	   threadingt   Threadt   startt   joinR   t   len(   R   R   t   _[1]t   it   thst   th(    (   R   R   s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_threads+   s    3  c         C   s˜   g  } t  t ƒ } t  t ƒ } | i | ƒ | i | ƒ | | _ |  i | g  ƒ |  i t | i ƒ |  i | t g ƒ | i ƒ  |  i | t g ƒ d  S(   N(   R    R   R   R   R   t   assertRaisesR   (   R   R
   R   t   g2(    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_exception7   s    	
c         C   sL   g  } t  t ƒ } | i | ƒ |  i t t | t ƒ |  i | t g ƒ d  S(   N(   R    R   R   R&   t   KeyErrorR   R   (   R   R
   R   (    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_send_exceptionD   s
    c         C   s˜   g  } t  t ƒ } t  t ƒ } | i | ƒ | i | ƒ |  i | g  ƒ ~ t i ƒ  |  i | t  i g ƒ ~ t i ƒ  |  i | t  i t  i g ƒ d  S(   N(   R    R   R   R   t   gct   collectt   GreenletExit(   R   R
   R   R'   (    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_deallocK   s    

c            sü   g  ‰ g  ‰ t  i ƒ  ‰ ˆ i ƒ  t  i ƒ  ‰  ˆ  i ƒ  ‡  ‡ ‡ ‡ f d †  } t  i d | ƒ } | i ƒ  ˆ i ƒ  |  i ˆ g  ƒ |  i t ˆ ƒ d ƒ ˆ 2t i ƒ  |  i ˆ g  ƒ ˆ  i	 ƒ  ˆ i ƒ  |  i ˆ t
 i g ƒ ˆ  i	 ƒ  | i ƒ  d  S(   Nc             sf   t  t ƒ }  |  i ˆ ƒ ˆ i |  ƒ ~  t i ƒ  ˆ i ƒ  ˆ  i ƒ  t  ƒ  ˆ i ƒ  ˆ  i ƒ  d  S(   N(   R    R   R   R   R+   R,   t   releaset   acquire(   R   (   t   lock2t   lockt   somerefR
   (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyR   `   s    



R   i   (   R   t   LockR0   R   R   R   R    R+   R,   R/   R    R-   R   (   R   R   t   t(    (   R1   R2   R3   R
   s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_dealloc_other_threadY   s(    







c            sŠ   ‡  f d †  } t  | ƒ } | i ƒ  } ˆ  i | | i j ƒ ˆ  i | ƒ | i ƒ  } ˆ  i | ƒ ˆ  i | d ƒ ˆ  i | i d  ƒ d  S(   Nc             s<   t  i d ƒ }  ˆ  i |  i d  ƒ t i ƒ  i i |  ƒ d S(   Ni    s   meaning of life(	   R   t	   _getframeR   t   f_backt   NoneR    R   R   R   (   R   (   R   (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   f1{   s    s   meaning of life(   R    R   t
   assertTruet   gr_framet   assertFalseR   R9   (   R   R:   R   t   framet   next(    (   R   s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt
   test_framez   s    c         C   se   d „  } t  i d | d d ƒ } t  i d | d d ƒ } | i ƒ  | i ƒ  | i ƒ  | i ƒ  d  S(   Nc            s#   t  ‡  f d †  ƒ } | i ƒ  d  S(   Nc              s   t  i ˆ  ƒ S(    (   t   timet   sleep(    (   t   x(    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   <lambda>‹   s    (   R    R   (   RC   R   (    (   RC   s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   runnerŠ   s    R   t   argsgš™™™™™É?g333333Ó?(   gš™™™™™É?(   g333333Ó?(   R   R   R   R   (   R   RE   t   t1t   t2(    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_thread_bug‰   s    	


c            s/   ‡  f d †  } t  | ƒ i d d d d ƒ d  S(   Nc            s$   ˆ  i  |  d ƒ ˆ  i  | d ƒ d  S(   Ni   i   (   R   (   t   at   b(   R   (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   foo•   s    RJ   i   RK   i   (   R    R   (   R   RL   (    (   R   s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_switch_kwargs”   s    c         C   sr   d „  } t  | ƒ } |  i h d d 6| i d ƒ ƒ |  i d h d d 6f | i ƒ  ƒ |  i d | i ƒ  ƒ d  S(   Nc         S   sC   t  i ƒ  i i d |  ƒ t  i ƒ  i i d d d ƒ|  |  d f S(   NRC   i   i   (   R    R   R   R   (   RC   (    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyRL   ›   s    i   RC   i   i	   (   i   (   i   i	   (   R    R   R   (   R   RL   R   (    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_switch_kwargs_to_parentš   s
    	 #c            sÈ   h  ‰ d  } t i ƒ  ‰  t i ƒ  ‰ ‡  ‡ ‡ f d †  } t i d | ƒ } | i ƒ  ˆ  i ƒ  y ˆ d i ƒ  Wn& t i j
 o t	 i
 ƒ  d } n X|  i | d  j d ƒ ˆ i ƒ  | i ƒ  d  S(   Nc              s+   t  d „  ƒ ˆ d <ˆ  i ƒ  ˆ i ƒ  d  S(   Nc           S   s   d  S(   N(   R9   (    (    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyRD   ª   s    R   (   R    t   sett   wait(    (   t   created_eventt
   done_eventt   data(    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyRL   ©   s    
R   R   i   s   greenlet.error was not raised!(   R9   R   t   EventR   R   RP   R   R    t   errorR   R	   R;   RO   R   (   R   RU   RL   t   thread(    (   RQ   RR   RS   s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   test_switch_to_another_thread¤   s    


(   R   R   R   R%   R(   R*   R.   R6   R@   RI   RM   RN   RW   (    (    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyR      s   						!				
(   R+   R   RA   R   t   unittestR    t	   ExceptionR   R   R   t   TestCaseR   (    (    (    s;   /home/ambroff/code/greenlet/greenlet/tests/test_greenlet.pyt   <module>   s   		