a
    äzeÅ  ã                   @   sn   d dl Z d dlZd dlZd dlZd dlmZ eedƒs@e d¡‚dd„ ZG dd„ dej	ƒZ
ed	krje ¡  dS )
é    N)Úcpython_onlyÚdevpollz$test works only on Solaris OS familyc                 C   s(   g }| D ]\}}||@ r|  |¡ q|S )N)Úappend)ÚreadyÚflagÚmatchÚfdÚmode© r
   ú'/usr/lib/python3.9/test/test_devpoll.pyÚfind_ready_matching   s
    r   c                   @   s@   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zedd„ ƒZ	dS )ÚDevPollTestsc                 C   s†  t  ¡ }d}d}t|ƒ}g }g }i }i }t|ƒD ]Z}	t ¡ \}
}| |
¡ | |
t j¡ | |t j	¡ | 
|
¡ | 
|¡ |||
< |
||< q0g }|rp| ¡ }t|t j	ƒ}|s¸|  d¡ t |¡}t ||¡ | ¡ }t|t jƒ}|sð|  d¡ |  || g|¡ |d }
t |
|¡}|  t|ƒ|¡ | 
|¡ t ||
 ¡ t |
¡ | ||
 ¡ | |
¡ | ||
 ¡ q|  ||g| ¡ d S )Né   s    This is a test.zno pipes ready for writingzno pipes ready for readingr   )Úselectr   ÚlenÚrangeÚosÚpipeÚregisterÚmodifyÚPOLLINÚPOLLOUTr   Úpollr   ZfailÚrandomÚchoiceÚwriteÚassertEqualÚreadÚcloseÚ
unregisterÚremove)ÚselfÚpZ	NUM_PIPESZMSGZMSG_LENÚreadersZwritersZr2wZw2rÚiZrdÚwrZbufsr   Zready_writersZready_readersÚbufr
   r
   r   Útest_devpoll1   sN    








zDevPollTests.test_devpoll1c                 C   sª   t  ¡ }t ¡ \}}| |¡ | d¡ |  t|jd¡ |  t|jd¡ |  t|jd¡ | d¡ | d¡ | d¡ |  t|jd¡ |  t|jd	¡ |  t|jd
¡ d S )Néÿÿÿÿéþÿÿÿi   €lûÿÿÿ         r   é   i   @l        l            ì            )r   r   r   r   r   r   ÚassertRaisesÚOverflowError©r!   ÚpollsterÚwÚrr
   r
   r   Útest_timeout_overflowJ   s    




z"DevPollTests.test_timeout_overflowc                 C   s¶   t tdƒ}|  |j¡ | ¡ }t ¡ }|  | ¡ t¡ |  	|j
¡ | ¡  |  |j
¡ |  t|j¡ | ¡  |  t|j|tj¡ |  t|j¡ |  t|j|tj¡ |  t|j|¡ d S )NÚrb)ÚopenÚ__file__Ú
addCleanupr   Úfilenor   r   ZassertIsInstanceÚintZassertFalseÚclosedZ
assertTruer,   Ú
ValueErrorr   r   r   r   r   )r!   Z	open_filer   r   r
   r
   r   Ú
test_close[   s    
zDevPollTests.test_closec                 C   s.   t  ¡ }|  |j¡ |  t | ¡ ¡d¡ d S )NF)r   r   r6   r   r   r   Úget_inheritabler7   )r!   r   r
   r
   r   Útest_fd_non_inheritables   s    z$DevPollTests.test_fd_non_inheritablec                 C   sj   t  ¡ }t ¡ \}}| |¡ |  t|jdd¡ |  t|jdd¡ |  t|jdd¡ |  t|jdd¡ d S )Nr   r(   r+   r*   )	r   r   r   r   r   r,   r:   r-   r   r.   r
   r
   r   Útest_events_mask_overflowx   s    
z&DevPollTests.test_events_mask_overflowc                 C   sZ   ddl m} t ¡ }t ¡ \}}| |¡ |  t|jd|d ¡ |  t|j	d|d ¡ d S )Nr   )Ú	USHRT_MAXr*   )
Z	_testcapir?   r   r   r   r   r   r,   r-   r   )r!   r?   r/   r0   r1   r
   r
   r   Ú"test_events_mask_overflow_c_limits‚   s    
z/DevPollTests.test_events_mask_overflow_c_limitsN)
Ú__name__Ú
__module__Ú__qualname__r'   r2   r;   r=   r>   r   r@   r
   r
   r
   r   r      s   2
r   Ú__main__)r   r   r   ZunittestZtest.supportr   ÚhasattrZSkipTestr   ZTestCaser   rA   Úmainr
   r
   r
   r   Ú<module>   s   

w