B
    ÐH/\  ã               @   sæ   d dl mZ d dlZd dlZd dlZd dlmZmZ d dlZd dl m	Z
 d dlZd dlZG dd„ dej	jjƒZe
 d¡G dd„ dej	jjƒƒZe eed	ƒd
¡e
 d¡G dd„ dej	jjƒƒƒZG dd„ de
jƒZedkrâe
 ¡  dS )é    )ÚsixN)ÚselectÚsocketc               @   s   e Zd Zdd„ ZdS )Ú
TestSelectc             C   s   t   g g g |¡ d S )N)r   )ÚselfÚtimeout© r   ú8lib/python3.7/site-packages/gevent/tests/test__select.pyÚwait   s    zTestSelect.waitN)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r      s   r   zCant select on filesc               @   s0   e Zd Zdd„ Ze ej d¡d¡dd„ ƒZ	dS )ÚTestSelectReadc          	   C   s>   t  ¡ \}}zt |gg g |¡ W d t  |¡ t  |¡ X d S )N)ÚosÚpiper   Úclose)r   r   ÚrÚwr   r   r	   r
      s
    
zTestSelectRead.waitZfreebsdz*skip because of a FreeBSD bug: kern/155606c             C   s´   t tdƒ }| ¡ }| ¡  yt |gg g d¡ W nh tk
rd } z|  |jtj¡ W d d }~X Y nB tj	k
rš } z|  |j
d tj¡ W d d }~X Y nX |  d¡ W d Q R X d S )NÚrbr   zexception not raised)ÚopenÚ__file__Úfilenor   r   ÚOSErrorÚassertEqualÚerrnoZEBADFÚerrorÚargsZfail)r   ÚfpÚfdÚerrr   r   r	   Ú
test_errno   s     &zTestSelectRead.test_errnoN)
r   r   r   r
   ÚunittestÚskipIfÚsysÚplatformÚ
startswithr    r   r   r   r	   r      s   	r   Úpollz
Needs pollzCant poll on filesc               @   s8   e Zd Zdd„ Zdd„ Ze eej	dƒd¡dd„ ƒZ
d	S )
ÚTestPollReadc          	   C   sZ   t  ¡ \}}z(t ¡ }| |tj¡ | |d ¡ W d | |¡ t  |¡ t  |¡ X d S )Niè  )r   r   r   r&   ÚregisterÚPOLLINÚ
unregisterr   )r   r   r   r   r&   r   r   r	   r
   5   s    

zTestPollRead.waitc             C   s   t  ¡ }|  t|jd¡ d S )Né   )r   r&   ÚassertRaisesÚKeyErrorr*   )r   r&   r   r   r	   Ú test_unregister_never_registeredC   s    z-TestPollRead.test_unregister_never_registeredZlibuvz‹Depending on whether the fileno is reused or not this either crashes or does nothing.libuv won't open a watcher for a closed file on linux.c          	   C   s^   t tdƒJ}| ¡ }t ¡ }| |tj¡ | ¡  | d¡}|  ||tj	fg¡ W d Q R X d S )Nr   r   )
r   r   r   r   r&   r(   r)   r   r   ZPOLLNVAL)r   r   r   r&   Úresultr   r   r	   Útest_poll_invalidJ   s    
zTestPollRead.test_poll_invalidN)r   r   r   r
   r.   r!   r"   ÚhasattrÚgeventZcorer0   r   r   r   r	   r'   2   s   r'   c               @   s0   e Zd Zdd„ Zeejdƒr$dd„ Zdd„ ZdS )	ÚTestSelectTypesc             C   s6   t   ¡ }zt t| ¡ ƒgg g d¡ W d | ¡  X d S )Ngü©ñÒMbP?)r   r   Úintr   r   )r   Úsockr   r   r	   Útest_int\   s    zTestSelectTypes.test_intÚlongc             C   s:   t   ¡ }z"t tj | ¡ ¡gg g d¡ W d | ¡  X d S )Ngü©ñÒMbP?)r   r   r   Úbuiltinsr7   r   r   )r   r5   r   r   r	   Ú	test_longd   s
    zTestSelectTypes.test_longc             C   s"   d| _ |  ttjdgg g d¡ d S )NFZhellogü©ñÒMbP?)Zswitch_expectedr,   Ú	TypeErrorr   )r   r   r   r	   Útest_stringl   s    zTestSelectTypes.test_stringN)	r   r   r   r6   r1   r   r8   r9   r;   r   r   r   r	   r3   Z   s   r3   Ú__main__)Zgevent.testingr   r#   r   r   r2   r   r   Zgevent.coreZtestingZ	greentestZgevent.testing.timingr!   ZtimingZAbstractGenericWaitTestCaser   ZskipOnWindowsr   Z
skipUnlessr1   r'   ZTestCaser3   r   Úmainr   r   r   r	   Ú<module>   s"   &