B
    ÐH/\Æ  ã               @   sh   d dl mZ d dlZd dlmZmZ dZG dd„ dejƒZdd„ Z	G dd	„ d	ejƒZ
ed
krde ¡  dS )é    N)ÚutilÚsocketgš™™™™™¹?c               @   sX   e Zd Ze d¡dd„ ƒZdd„ Zdd„ Zee	dƒrTd	d
„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestz4Timing causes the state to often be [start,finished]c                sX   g ‰ ‡ fdd„}t  |¡}t  td ¡ ˆ dgks:tˆ ƒ‚| ¡  |  ˆ dddg¡ d S )Nc                  sB   yˆ   d¡ t td ¡ W n   ˆ   d¡ Y nX ˆ   d¡ d S )NÚstartg      @ÚexceptÚfinished)ÚappendÚgeventÚsleepÚDELAY© )Ústater   ú5lib/python3.7/site-packages/gevent/tests/test__api.pyÚtest#   s    
z'Test.test_killing_dormant.<locals>.testé   r   r   r   )r	   Úspawnr
   r   ÚAssertionErrorÚkillÚassertEqual)Úselfr   Úgr   )r   r   Útest_killing_dormant   s    

zTest.test_killing_dormantc             C   s    dd„ }|   tjtjd|¡ d S )Nc               S   s   t jdt jdddS )Ngš™™™™™É?r   é   )Ztimeout_value)r	   Úwith_timeoutr
   r   r   r   r   Úfunc5   s    z+Test.test_nested_with_timeout.<locals>.funcgš™™™™™¹?)ZassertRaisesr	   ZTimeoutr   )r   r   r   r   r   Útest_nested_with_timeout4   s    zTest.test_nested_with_timeoutc             C   sp   t  t tt j¡d¡}t  d¡ t  |jd ¡}| ¡ }t|tƒsHt|ƒ‚dt	|ƒksdtt
t	|ƒƒƒ‚| ¡  d S )Nr   r   zInvalid switch)r	   r   r   Úwrap_errorsr   r
   ÚswitchÚgetÚ
isinstanceÚstrÚreprr   )r   ÚpZswitcherÚresultr   r   r   Útest_sleep_invalid_switch9   s    
zTest.test_sleep_invalid_switchÚ
socketpairc             C   sœ   t  ¡ \}}zxt t tt j¡| ¡ ¡}t 	¡ j
 t|¡ |d k	rLt |¡ | ¡ }t|tƒsft|ƒ‚dt|ƒks‚ttt|ƒƒƒ‚W d | ¡  | ¡  X d S )NzInvalid switch)r   r%   r	   r   r   r   r   Z	wait_readÚfilenoZget_hubZloopZrun_callbackÚswitch_Noner
   r   r   r    r!   Úclose)r   r
   Zsock1Zsock2r"   r#   r   r   r   Ú_test_wait_read_invalid_switchD   s    


 z#Test._test_wait_read_invalid_switchc             C   s   |   d ¡ d S )N)r)   )r   r   r   r   Útest_invalid_switch_NoneT   s    zTest.test_invalid_switch_Nonec             C   s   |   d¡ d S )Nr   )r)   )r   r   r   r   Útest_invalid_switch_0W   s    zTest.test_invalid_switch_0c             C   s   |   d¡ d S )Ngü©ñÒMbP?)r)   )r   r   r   r   Útest_invalid_switch_1Z   s    zTest.test_invalid_switch_1N)Ú__name__Ú
__module__Ú__qualname__Ú	greentestZskipOnAppVeyorr   r   r$   Úhasattrr   r)   r*   r+   r,   r   r   r   r   r      s   	
r   c             C   s   |   d ¡ d S )N)r   )r   r   r   r   r'   `   s    r'   c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestTimersc                sL   dg‰ ‡ fdd„}t  |¡ |  ˆ dg¡ t  ¡  t  d¡ |  ˆ g ¡ d S )Nr   c                  s   t  dˆ j¡ t  d¡ d S )Ng{®Gáz„?g{®Gáz”?)r	   Zspawn_laterÚpopr
   r   )Úlstr   r   r   i   s    z)TestTimers.test_timer_fired.<locals>.funcgš™™™™™¹?)r	   r   r   r
   )r   r   r   )r4   r   Útest_timer_firedf   s    

zTestTimers.test_timer_firedc                s6   dg‰ ‡ fdd„}t  |¡ t  d¡ |  ˆ g ¡ d S )Nr   c                  s   t  ˆ j¡ d S )N)r	   r   r3   r   )r4   r   r   r   {   s    z4TestTimers.test_spawn_is_not_cancelled.<locals>.funcgš™™™™™¹?)r	   r   r
   r   )r   r   r   )r4   r   Útest_spawn_is_not_cancelledx   s
    

z&TestTimers.test_spawn_is_not_cancelledN)r-   r.   r/   r5   r6   r   r   r   r   r2   d   s   r2   Ú__main__)Zgevent.testingZtestingr0   r	   r   r   r   ZTestCaser   r'   r2   r-   Úmainr   r   r   r   Ú<module>   s   C