U
    cc[                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlmZ G dd de	Z
dd Zdd	 ZG d
d dejZG dd dejZedkre  dS )    N)ABCMetaabstractmethod)greenletc                   @   s   e Zd ZdS )	SomeErrorN__name__
__module____qualname__ r
   r
   @/tmp/pip-unpacked-wheel-z1hn3a16/greenlet/tests/test_greenlet.pyr      s   r   c                 C   s<   zt  j  W n    | t d   Y nX td S Nr   )r   
getcurrentparentswitchappendsysexc_infor   )seenr
   r
   r   fmain   s    r   c                 C   s"   dd }t || d}|| d S )Nc                 S   s   | d S Nr
   )excr
   r
   r   crasher   s    zsend_exception.<locals>.crasherr   r   r   )gr   r   g1r
   r
   r   send_exception   s    r   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAS )BTestGreenletc                    s^   g   fdd}t |} d |   d |   d |  ttd d S )Nc                      s&     d t j    d d S )N      r   r   r   r   r   r
   lstr
   r   f'   s    
z#TestGreenlet.test_simple.<locals>.fr            )r   r   r   assertEquallistrange)selfr#   r   r
   r!   r   test_simple$   s    


zTestGreenlet.test_simplec                 C   s*   t d d}| | | |jt   d S )Nr   )r   assertIsNotNoneZassertIsr   r   r*   r   r
   r
   r   test_parent_equals_None3   s    

z$TestGreenlet.test_parent_equals_Nonec                 C   s$   t d d}| | | |j d S )N)run)r   r,   ZassertIsNoner/   r-   r
   r
   r   test_run_equals_None8   s    

z!TestGreenlet.test_run_equals_Nonec                    s   g   fdd}t |}t |}|  | t d |  | t d |  | t d | |jd |  | t d | |jd d S )Nc                      s*     d t j   ddg d S Nr   )r   r   r   r   r   extendr
   r!   r
   r   r#   @   s    
z)TestGreenlet.test_two_children.<locals>.fr   r$   r%   T   )r   r   r'   lendead)r*   r#   r   hr
   r!   r   test_two_children=   s    zTestGreenlet.test_two_childrenc                    sT   g fdd  fdd}t |}|  | td | t|d d S )Nc                      s     d t j  d S r1   r    r
   r!   r
   r   r#   T   s    
z3TestGreenlet.test_two_recursive_children.<locals>.fc                     s(    d t } |    d d S r1   )r   r   r   r   r#   r"   r
   r   r   X   s    
z3TestGreenlet.test_two_recursive_children.<locals>.gr   r$   )r   r   r'   r4   r   getrefcountr-   r
   r9   r   test_two_recursive_childrenQ   s    z(TestGreenlet.test_two_recursive_childrenc                    sd   g fdd  fddt dD }|D ]}|  q,|D ]}|  q>tt| d S )Nc                      s       d d S )NT)r+   r   r
   )r*   successr
   r   r#   e   s    z$TestGreenlet.test_threads.<locals>.fc                    s   g | ]}t j d qS )target)	threadingThread).0ir#   r
   r   
<listcomp>h   s     z-TestGreenlet.test_threads.<locals>.<listcomp>
   )r)   startjoinr'   r4   )r*   Zthsthr
   )r#   r*   r<   r   test_threadsb   s    

zTestGreenlet.test_threadsc                 C   sp   g }t t}t t}|| || ||_| |g  | t|j | |tg |  | |tg d S r   )r   r   r   r   r'   assertRaisesr   r*   r   r   g2r
   r
   r   test_exceptiono   s    

zTestGreenlet.test_exceptionc                 C   s8   g }t t}|| | tt|t | |tg d S r   )r   r   r   rJ   KeyErrorr   r'   )r*   r   r   r
   r
   r   test_send_exception|   s
    
z TestGreenlet.test_send_exceptionc                 C   sp   g }t t}t t}|| || | |g  ~t  | |t jg ~t  | |t jt jg d S r   )r   r   r   r'   gccollectGreenletExitrK   r
   r
   r   test_dealloc   s    

zTestGreenlet.test_deallocc                    s   g g t      t     fdd}t j|d}|     | g  | td d d = t  | g  	     | t
jg 	  |  d S )Nc                     sP   t t} |  |  ~ t       t        d S r   )r   r   r   r   rP   rQ   releaseacquire)r   locklock2r   Zsomerefr
   r   r#      s    

z1TestGreenlet.test_dealloc_other_thread.<locals>.fr=   r   )r?   LockrU   r@   rF   r'   r4   rP   rQ   rT   r   rR   rG   )r*   r#   tr
   rV   r   test_dealloc_other_thread   s(    
z&TestGreenlet.test_dealloc_other_threadc                    sf    fdd}t |}| } ||jk  | | } |  |d  |jd  d S )Nc                     s,   t d}  | jd  t j|  dS )Nr   meaning of life)r   	_getframer'   f_backr   r   r   r   rC   r*   r
   r   f1   s    
z#TestGreenlet.test_frame.<locals>.f1r\   )r   r   
assertTrueZgr_frameZassertFalser'   )r*   r`   r   frameZfrom_gr
   r_   r   
test_frame   s    

zTestGreenlet.test_framec                 C   sH   dd }t j|dd}t j|dd}|  |  |  |  d S )Nc                    s   t  fdd}|  d S )Nc                      s
   t  S r   )timesleepr
   xr
   r   <lambda>       z>TestGreenlet.test_thread_bug.<locals>.runner.<locals>.<lambda>r   )rg   r   r
   rf   r   runner   s    z,TestGreenlet.test_thread_bug.<locals>.runner)g?r>   args)g333333?)r?   r@   rF   rG   )r*   rj   t1t2r
   r
   r   test_thread_bug   s    zTestGreenlet.test_thread_bugc                    s.    fdd}t |jddd} |d d S )Nc                    s     | d   |d dS )Nr%   r$   *   )r'   abr_   r
   r   r/      s    z,TestGreenlet.test_switch_kwargs.<locals>.runr%   r$   rq   rp   )r   r   r'   )r*   r/   rg   r
   r_   r   test_switch_kwargs   s    zTestGreenlet.test_switch_kwargsc                 C   sR   dd }t |}| ddi|d | dddif|  | d|  d S )Nc                 S   s2   t  jj| d t  jjddd | | d fS )Nrf   r$   r   r   r   r   r   rf   r
   r
   r   r/      s    z6TestGreenlet.test_switch_kwargs_to_parent.<locals>.runrg   r   )r$   )r   	   r   r'   r   )r*   r/   r   r
   r
   r   test_switch_kwargs_to_parent   s
    z)TestGreenlet.test_switch_kwargs_to_parentc                    s   i d }t   t   fdd}t j|d}|     zd   W n" tjk
rv   t	 d }Y nX | 
|d   |  d S )Nc                      s$   t dd d<      d S )Nc                   S   s   d S r   r
   r
   r
   r
   r   rh      ri   zITestGreenlet.test_switch_to_another_thread.<locals>.run.<locals>.<lambda>r   r   setwaitr
   Zcreated_eventdata
done_eventr
   r   r/      s    z7TestGreenlet.test_switch_to_another_thread.<locals>.runr=   r   r   zgreenlet.error was not raised!)r?   Eventr@   rF   r{   r   r   errorr   r   r,   rz   rG   )r*   r   r/   threadr
   r|   r   test_switch_to_another_thread   s    z*TestGreenlet.test_switch_to_another_threadc                    s*    fdd}fdd t |  d S )Nc                     sB   zt dW n0   t } t   | t  Y nX d S )NZfun)
ValueErrorr   r   r   r   r'   )r   r6   r*   r
   r   r#      s    z&TestGreenlet.test_exc_state.<locals>.fc                      s     t d d S )N)NNN)r'   r   r   r
   r_   r
   r   r6      s    z&TestGreenlet.test_exc_state.<locals>.hr   )r*   r#   r
   r   r   test_exc_state   s    zTestGreenlet.test_exc_statec                 C   s   dd }dd }dd }t |}| |ji  |  | |jd | |jddi |j|_| |jddi | t|| | t||d d S )	Nc                   S   s   dt  _d S Nrp   )r   r   testr
   r
   r
   r   r#     s    z*TestGreenlet.test_instance_dict.<locals>.fc                 S   s   | ` d S r   __dict__r8   r
   r
   r   deldict  s    z0TestGreenlet.test_instance_dict.<locals>.deldictc                 S   s
   || _ d S r   r   r   valuer
   r
   r   setdict  s    z0TestGreenlet.test_instance_dict.<locals>.setdictrp   r   )r   r'   r   r   r   rJ   	TypeError)r*   r#   r   r   r   r
   r
   r   test_instance_dict  s    zTestGreenlet.test_instance_dictc                    s   i t   t   fdd}dd }dd }t j|d}|     t|}|  | t||d  	  |
  d S )	Nc                      s$   t dd d<      d S )Nc                   S   s   d S r   r
   r
   r
   r
   r   rh     ri   zBTestGreenlet.test_threaded_reparent.<locals>.run.<locals>.<lambda>r   ry   r
   r|   r
   r   r/     s    z0TestGreenlet.test_threaded_reparent.<locals>.runc                   S   s   t  j  d S r   ru   r
   r
   r
   r   blank  s    z2TestGreenlet.test_threaded_reparent.<locals>.blankc                 S   s
   || _ d S r   r   r   r
   r
   r   	setparent!  s    z6TestGreenlet.test_threaded_reparent.<locals>.setparentr=   r   )r?   r   r@   rF   r{   r   r   rJ   r   rz   rG   )r*   r/   r   r   r   r   r
   r|   r   test_threaded_reparent  s    z#TestGreenlet.test_threaded_reparentc                 C   s0   dd l }| t|j t  | t|jt  d S r   )copyrJ   r   r   deepcopy)r*   r   r
   r
   r   test_deepcopy-  s    zTestGreenlet.test_deepcopyc                    sn   t dd  t  g  fdd}t | d}|  ~|  | d  | d j  d S )Nc                   S   s   d S r   r
   r
   r
   r
   r   rh   3  ri   z;TestGreenlet.test_parent_restored_on_kill.<locals>.<lambda>c                      sN   z   W n< tjk
rH   t j t      Y nX d S r   )r   r   rR   r   r   r   r
   Zhubmainresultr
   r   worker6  s    z9TestGreenlet.test_parent_restored_on_kill.<locals>.workerr   r   r   )r   r   r   ra   r'   r   )r*   r   r   r
   r   r   test_parent_restored_on_kill2  s    	
z)TestGreenlet.test_parent_restored_on_killc                 C   s(   t  }t dd |d}| t|j d S )Nc                   S   s   d S r   r
   r
   r
   r
   r   rh   J  ri   z9TestGreenlet.test_parent_return_failure.<locals>.<lambda>r   )r   rJ   AttributeErrorr   )r*   r   rL   r
   r
   r   test_parent_return_failureF  s    z'TestGreenlet.test_parent_return_failurec                 C   s2   G dd dt }|dd }| t|jt  d S )Nc                   @   s   e Zd Zdd ZdS )z>TestGreenlet.test_throw_exception_not_lost.<locals>.mygreenletc                 S   s$   z
t  W n   Y nX t| |S r   )	Exceptionr   __getattribute__r*   namer
   r
   r   r   P  s
    
zOTestGreenlet.test_throw_exception_not_lost.<locals>.mygreenlet.__getattribute__Nr   r   r	   r   r
   r
   r
   r   
mygreenletO  s   r   c                   S   s   d S r   r
   r
   r
   r
   r   rh   V  ri   z<TestGreenlet.test_throw_exception_not_lost.<locals>.<lambda>)r   rJ   r   throw)r*   r   r   r
   r
   r   test_throw_exception_not_lostN  s    z*TestGreenlet.test_throw_exception_not_lostc                    sR   g  dd  fdd}t j|d}|  |  | tj d jt  d S )Nc                   S   s   t  j  d S r   ru   r
   r
   r
   r   r   [  s    z4TestGreenlet.test_throw_doesnt_crash.<locals>.workerc                     s   t } |    |  d S r   )r   r   r   r8   r   r   r
   r   creator]  s    z5TestGreenlet.test_throw_doesnt_crash.<locals>.creatorr=   r   )	r?   r@   rF   rG   rJ   r   r   r   r   )r*   r   rZ   r
   r   r   test_throw_doesnt_crashY  s    z$TestGreenlet.test_throw_doesnt_crashc                 C   s,   G dd dt }| }| |dd d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z7TestGreenlet.test_recursive_startup.<locals>.convolutedc                 S   s   t |  d| _d S r   )r   __init__countr_   r
   r
   r   r   h  s    
z@TestGreenlet.test_recursive_startup.<locals>.convoluted.__init__c                 S   s.   |dkr"| j dkr"d| _ | d t| |S )Nr/   r   r   +   )r   r   r   r   r   r
   r
   r   r   k  s    
zHTestGreenlet.test_recursive_startup.<locals>.convoluted.__getattribute__c                 S   s   | j | q d S r   r   r   r*   r   r
   r
   r   r/   p  s    z;TestGreenlet.test_recursive_startup.<locals>.convoluted.runN)r   r   r	   r   r   r/   r
   r
   r
   r   
convolutedg  s   r   rp   r   rw   )r*   r   r   r
   r
   r   test_recursive_startupf  s    z#TestGreenlet.test_recursive_startupc                    s`   g   fdd}t j|d}|  |  G  fdddt}|dd }| tj|j d S )Nc                     s"   t dd }  |  |   d S )Nc                   S   s   d S r   r
   r
   r
   r
   r   rh   y  ri   zJTestGreenlet.test_unexpected_reparenting.<locals>.worker.<locals>.<lambda>)r   r   r   r8   Zanotherr
   r   r   x  s    
z8TestGreenlet.test_unexpected_reparenting.<locals>.workerr=   c                       s   e Zd Z fddZdS )z<TestGreenlet.test_unexpected_reparenting.<locals>.convolutedc                    s   |dkr d | _ t| |S )Nr/   r   )r   r   r   r   r   r
   r   r     s    
zMTestGreenlet.test_unexpected_reparenting.<locals>.convoluted.__getattribute__Nr   r
   r   r
   r   r     s   r   c                   S   s   d S r   r
   r
   r
   r
   r   rh     ri   z:TestGreenlet.test_unexpected_reparenting.<locals>.<lambda>)r?   r@   rF   rG   r   rJ   r   r   )r*   r   rZ   r   r   r
   r   r   test_unexpected_reparentingv  s    z(TestGreenlet.test_unexpected_reparentingc                    s   t    t    G fdddt}dd } fdd}t }t|g |  d _ d   t j|d}|	  
    | t | |  d S )	Nc                       s   e Zd Z fddZdS )z;TestGreenlet.test_threaded_updatecurrent.<locals>.finalizedc                    s         d S r   rT   rU   r_   lock1rX   r
   r   __del__  s    zCTestGreenlet.test_threaded_updatecurrent.<locals>.finalized.__del__Nr   r   r	   r   r
   r   r
   r   	finalized  s   r   c                   S   s   t  j  d S r   ru   r
   r
   r
   r   deallocator  s    z=TestGreenlet.test_threaded_updatecurrent.<locals>.deallocatorc                      s:      t   d=      t    d S r   rU   r   r   rT   r
   r   r   rX   r
   r   fthread  s    z9TestGreenlet.test_threaded_updatecurrent.<locals>.fthreadr   r=   )r?   rY   rU   objectr   r   Zbombr   r@   rF   rT   r'   rG   )r*   r   r   r   r   rZ   r
   r   r   test_threaded_updatecurrent  s"    

z(TestGreenlet.test_threaded_updatecurrentc                    sb   g  fdddd  t gd   t  d    }|  | |d d S )Nc               
      sJ   t  j } d= t  j _zt  j|  W 5 t   X d S r   )r   r   r   r   r   )r   	initiatorr   r   r
   r   r     s    z>TestGreenlet.test_dealloc_switch_args_not_lost.<locals>.workerc                   S   s   dS r   r
   r
   r
   r
   r   r     s    zATestGreenlet.test_dealloc_switch_args_not_lost.<locals>.initiatorr   rp   )r   r   ra   r'   r   r
   r   r   !test_dealloc_switch_args_not_lost  s    

z.TestGreenlet.test_dealloc_switch_args_not_lostc                    sh   t jd dkrdd  nt G dd dt}| tdd fd	d
}t|}| |  d S )Nr   r$   c                 S   s   | || d S r   r
   )funcrr   kr
   r
   r   _apply  s    z0TestGreenlet.test_tuple_subclass.<locals>._applyc                   @   s   e Zd Zdd ZdS )z1TestGreenlet.test_tuple_subclass.<locals>.mytuplec                 S   s   t    t| S r   )r   r   r   tuple__len__r_   r
   r
   r   r     s    z9TestGreenlet.test_tuple_subclass.<locals>.mytuple.__len__N)r   r   r	   r   r
   r
   r
   r   mytuple  s   r   rp   )rr   c                      s    t  jj d S r   ru   r
   r   rl   kwargsr
   r   switchapply  s    z5TestGreenlet.test_tuple_subclass.<locals>.switchapply)r   version_infoapplyr   dictr   r'   r   )r*   r   r   r   r
   r   r   test_tuple_subclass  s    

z TestGreenlet.test_tuple_subclassc                 C   sP   t dtfdtdd i}G dd d|}G dd d|}|  | t| d S )	NAbstractSubclassr/   c                 S   s   d S r   r
   r_   r
   r
   r   rh     ri   z7TestGreenlet.test_abstract_subclasses.<locals>.<lambda>c                   @   s   e Zd ZdS )z:TestGreenlet.test_abstract_subclasses.<locals>.BadSubclassNr   r
   r
   r
   r   BadSubclass  s   r   c                   @   s   e Zd Zdd ZdS )z;TestGreenlet.test_abstract_subclasses.<locals>.GoodSubclassc                 S   s   d S r   r
   r_   r
   r
   r   r/     s    z?TestGreenlet.test_abstract_subclasses.<locals>.GoodSubclass.runN)r   r   r	   r/   r
   r
   r
   r   GoodSubclass  s   r   )r   r   r   rJ   r   )r*   r   r   r   r
   r
   r   test_abstract_subclasses  s    z%TestGreenlet.test_abstract_subclassesc                    sN   t  sd S t  d   dk r$d S  fdd}tdD ]}| r: qJq:d S )Nr   2   c            	         s  t    t    dgfdd} t j| d}|  G fdddt G  fdddt}g }td	 }t }| }|D ]:}d }d
 r|	   dS t }d
 r q|
| qt  d
 r|	  dS |j| |D ]}|j| q dS )NFc                      s       t    d S r   r   r
   r   r
   r   another_thread  s    zWTestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.another_threadr=   c                       s   e Zd Z fddZdS )zTTestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.gc_callbackc                    s         dd< d S )NTr   r   r_   r   rX   recycledr
   r   r     s    z\TestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.gc_callback.__del__Nr   r
   r   r
   r   gc_callback  s   r   c                       s   e Zd Z fddZdS )zPTestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.garbagec                    s   | | _   | _d S r   )cyclecallbackr_   r   r
   r   r     s    zYTestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.garbage.__init__N)r   r   r	   r   r
   r   r
   r   garbage
  s   r   r$   r   T)r?   rY   rU   r@   rF   r   r)   r   r   rG   r   rP   rQ   r'   r   )	r   rZ   r   lrg   currentr   _lastNr*   )r   r   rX   r   r   attempt  s>    z?TestGreenlet.test_implicit_parent_with_threads.<locals>.attemptr&   )rP   	isenabledZget_thresholdr)   )r*   r   r   r
   r   r   !test_implicit_parent_with_threads  s    -z.TestGreenlet.test_implicit_parent_with_threadsc                    s|   ddl m ddl m  G dd dt }t|}g _ fdd}tdD ]}||  qP`t|| d S )	Nr   r   )rR   c                   @   s   e Zd ZdS )zTTestGreenlet.test_issue_245_reference_counting_subclass_no_threads.<locals>.GreenletNr   r
   r
   r
   r   Greenlet3  s   r   c                      s8   z j   W n"  k
r2   j  Y nX d S r   )r   r   gletsr   r
   rR   r   r*   r
   r   greenlet_main<  s    zYTestGreenlet.test_issue_245_reference_counting_subclass_no_threads.<locals>.greenlet_mainrE   )	r   r   rR   r   r:   r   r)   r   r'   )r*   r   initial_refsr   r   r
   r   r   5test_issue_245_reference_counting_subclass_no_threads*  s    
zBTestGreenlet.test_issue_245_reference_counting_subclass_no_threadsc           
         s   ddl m} ddl m} ddlm G dd dt g | fdd fd	d
}t }g }t|d D ]*}| }|||fd}|| |	  qx|D ]}	|	
  qd d =   td | t | d S )Nr   )r@   )r   r   c                   @   s   e Zd ZdS )zSTestGreenlet.test_issue_245_reference_counting_subclass_threads.<locals>.MyGreenletNr   r
   r
   r
   r   
MyGreenletP  s   r   c                      s     j   d S r   r   r
   r   r
   r   r   V  s    zVTestGreenlet.test_issue_245_reference_counting_subclass_threads.<locals>.greenlet_mainc                    s6    } | |  ~|       d S r   )r   r   rz   r{   )Zgreenlet_running_eventZminer   r   r   r   Zref_clearedr
   r   thread_mainY  s    
zTTestGreenlet.test_issue_245_reference_counting_subclass_threads.<locals>.thread_main-   rk   r   )r?   r@   r   r   r   r   r:   r)   r   rF   r{   rz   rd   re   r'   )
r*   r@   r   r   r   Zthread_ready_eventsr   eventr   r~   r
   r   r   2test_issue_245_reference_counting_subclass_threadsI  s.    





z?TestGreenlet.test_issue_245_reference_counting_subclass_threadsN)#r   r   r	   r+   r.   r0   r7   r;   rI   rM   rO   rS   r[   rc   ro   rt   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r
   r   r   #   s@   "
/7r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestReprc                 C   s   |  ||||f d S r   )ra   endswith)r*   gotsuffixr
   r
   r   assertEndsWith  s    zTestRepr.assertEndsWithc                 C   s   t t }| |d d S )N current active started main>)reprr   r   r   r*   rr
   r
   r   test_main_while_running  s    z TestRepr.test_main_while_runningc                    s4   t    fdd}t |}| }| |d d S )Nc                      s   t  S r   )r   r
   r   r
   r   r/     s    z-TestRepr.test_main_in_background.<locals>.run suspended active started main>)r   r   r   r   )r*   r/   r   r   r
   r   r   test_main_in_background  s
    z TestRepr.test_main_in_backgroundc                 C   s   t t }| |d d S )Nz	 pending>)r   r   r   r   r
   r
   r   test_initial  s    
zTestRepr.test_initialc                    sx   t   G  fdddtj}| }|  |d | |jd | |jd t	|j
}|j
jrht| |d d S )Nc                       s$   e Zd Zd ZZdZ fddZdS )z/TestRepr.test_main_from_other_thread.<locals>.TNc                    s$   t  | _t | _t | j| _d S r   )r   original_mainr   r   	main_gletr   r_   r   r
   r   r/     s    

z3TestRepr.test_main_from_other_thread.<locals>.T.run)r   r   r	   r   r   r   r/   r
   r   r
   r   T  s   r   rE   r   r   )r   r   r?   r@   rF   rG   r   r   r   r   r   r5   AssertionError)r*   r   rZ   r   r
   r   r   test_main_from_other_thread  s    

z$TestRepr.test_main_from_other_threadc                 C   sX   t dd }|  | t|d | dt| | dt| | dt| d S )Nc                   S   s   d S r   r
   r
   r
   r
   r   rh     ri   z$TestRepr.test_dead.<locals>.<lambda>z dead>Z	suspendedstartedactive)r   r   r   r   ZassertNotInr-   r
   r
   r   	test_dead  s    zTestRepr.test_deadc                 C   sX   t dd }t dd }t  }|||fD ](}| d|f t | d|f t q*d S )Nc                   S   s   d S r   r
   r
   r
   r
   r   rh     ri   z>TestRepr.test_formatting_produces_native_str.<locals>.<lambda>c                   S   s   d S r   r
   r
   r
   r
   r   rh     ri   z%sz%r)r   r   ZassertIsInstancestr)r*   Zg_deadZg_not_startedZg_curr   r
   r
   r   #test_formatting_produces_native_str  s    z,TestRepr.test_formatting_produces_native_strN)
r   r   r	   r   r   r   r   r  r  r  r
   r
   r
   r   r     s   	r   __main__)rP   r   rd   r?   Zunittestabcr   r   r   r   r   r   r   ZTestCaser   r   r   r   r
   r
   r
   r   <module>   s"   		    nJ