o
    oÃiŽC  ã                   @   sÌ  d dl Z d dlmZ d dlmZ d dlZd dlmZmZ d dlm	Z	 d dlm
Z
 d dlmZmZ d dlmZ d dlmZ G d	d
„ d
ƒZG dd„ dƒZG dd„ deeeƒZG dd„ deeeƒZG dd„ deƒZG dd„ deeƒZG dd„ deeƒZG dd„ deƒZG dd„ deeƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZG d!d"„ d"eƒZG d#d$„ d$eƒZ G d%d&„ d&e ƒZ!G d'd(„ d(e ƒZ"G d)d*„ d*e ƒZ#G d+d,„ d,e ƒZ$G d-d.„ d.eƒZ%[e&d/kräe '¡  dS dS )0é    N)ÚTestCase)Úget_hubÚLoopExit)Úutil©Úqueue)ÚEmptyÚFull©ÚAsyncResult)ÚAbstractGenericGetTestCasec                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚUsesOnlyOneItemMixinTc                    s®   g ‰ |   d¡}‡ fdd„}tƒ jj}||t t|j¡dƒ ||t t|j¡dƒ t 	d¡ |  
tˆ ƒd¡ | jrA|  ˆ d ˆ ¡ n
|  ˆ d tjˆ ¡ |  ˆ d tjˆ ¡ d S )Né   c                    ó   ˆ   | |Ž ¡ d S ©N©Úappend©ÚfuncÚargs©Úresult© úW/var/www/html/pca-backend/venv/lib/python3.10/site-packages/gevent/tests/test__queue.pyÚstore_result   ó   zAUsesOnlyOneItemMixin.test_put_nowait_simple.<locals>.store_resulté   é   r   )Ú_makeOner   ÚloopÚrun_callbackr   Úwrap_errorsr	   Ú
put_nowaitÚgeventÚsleepÚassertEqualÚlenÚ SUPPORTS_PUTTING_WITHOUT_GETTINGÚassertIsNoneÚassertIsInstancer   ©ÚselfÚqr   r    r   r   r   Útest_put_nowait_simple   s   


z+UsesOnlyOneItemMixin.test_put_nowait_simplec                    sì   g ‰ |   ¡ }t |j¡}‡ fdd„}|  | ¡ |¡ | jr!| j}n| j}|| ¡ |ƒ t 	d¡ |  | ¡ |¡ || ¡ |ƒ t
ƒ j ||jd¡ |  | ¡ |¡ t 	d¡ |  ˆ d g¡ |  | ¡ |¡ || ¡ |ƒ |  | ¡ |¡ d S )Nc                    r   r   r   r   r   r   r   r   .   r   zAUsesOnlyOneItemMixin.test_put_nowait_unlock.<locals>.store_resultçü©ñÒMbP?é
   )r   r#   ÚspawnÚgetÚ
assertTrueÚemptyr'   ÚassertFalseÚfullr$   r   r   r    r"   Úreadyr%   )r+   r,   Úpr   Ú
assertFullr   r   r   Útest_put_nowait_unlock)   s&   

z+UsesOnlyOneItemMixin.test_put_nowait_unlockc                    sV   ˆ   ¡ }‡ fdd„}t ||¡}t d¡ | d¡ t d¡ |jdddks)J ‚d S )Nc                    sJ   t  tjsdnd¡ ˆ  |  ¡ d¡ W d   ƒ dS 1 sw   Y  dS )Nçš™™™™™¹?g      à?Úhi2ÚOK)r#   ÚTimeoutÚ	greentestÚRUNNING_ON_APPVEYORr%   r1   ©r,   ©r+   r   r   ÚwaiterJ   s   
ÿþz3UsesOnlyOneItemMixin.test_send_last.<locals>.waiterç{®Gáz„?r;   r   ©Útimeoutr<   )r   r#   r0   r$   Úputr1   )r+   r,   rB   r7   r   rA   r   Útest_send_lastG   s   


z#UsesOnlyOneItemMixin.test_send_lastc                 C   sp   | j s|  d¡ G dd„ d|  ¡ ƒ}|ƒ }| d¡ |  | ¡ d¡ |  |jd¡ |  |jd¡ |  |j	¡ d S )NzNeeds to be able to put and getc                       s@   e Zd ZdZdZdZ‡ fdd„Z‡ fdd„Z‡ fdd„Z‡  Z	S )	z@UsesOnlyOneItemMixin.test_init_and_bottleneck_methods.<locals>.XNr   c                    s   t ƒ  |¡ d| _d S ©NT)ÚsuperÚ_initÚinitted)r+   Úmaxsize©Ú	__class__r   r   rJ   `   s   
zFUsesOnlyOneItemMixin.test_init_and_bottleneck_methods.<locals>.X._initc                    s   |  j d7  _ tƒ  ¡ S ©Nr   )Ú	get_countrI   Ú_getrA   rM   r   r   rQ   d   s   
zEUsesOnlyOneItemMixin.test_init_and_bottleneck_methods.<locals>.X._getc                    s   |  j d7  _ tƒ  |¡S rO   )Ú	put_countrI   Ú_put)r+   ÚitemrM   r   r   rS   h   s   zEUsesOnlyOneItemMixin.test_init_and_bottleneck_methods.<locals>.X._put)
Ú__name__Ú
__module__Ú__qualname__rK   rP   rR   rJ   rQ   rS   Ú__classcell__r   r   rM   r   ÚX[   s    rY   Úhir   )
r'   ÚskipTestÚ_getFUTrF   r%   r1   rR   rP   r2   rK   )r+   rY   Úxr   r   r   Ú test_init_and_bottleneck_methodsV   s   

z5UsesOnlyOneItemMixin.test_init_and_bottleneck_methodsN)rU   rV   rW   r'   r-   r9   rG   r^   r   r   r   r   r      s    r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚSubscriptMixinc                 C   s   t ‚r   )ÚNotImplementedErrorrA   r   r   r   r\   u   s   zSubscriptMixin._getFUTc                 O   s   |   ¡ |i |¤ŽS r   )r\   )r+   r   Úkwargsr   r   r   r   x   r   zSubscriptMixin._makeOnec                 C   s†   dd l }|  ¡ }zt||jƒ}W n ty.   |jdksJ ‚dd l}|  |t |j¡ Y d S w |  	||¡ |  |t t
|t ƒ¡ d S )Nr   ÚChannel)r   r\   ÚgetattrrU   ÚAttributeErrorÚtypesr)   ÚintÚGenericAliasÚassertIsNotÚtype)r+   Ústdlib_queueÚkindÚstdlib_kindre   r   r   r   Útest_subscript{   s   ýzSubscriptMixin.test_subscriptN)rU   rV   rW   r\   r   rm   r   r   r   r   r_   t   s    r_   c                   @   st   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S )ÚTestSimpleQueuec                 C   ó   t jS r   )r   ÚSimpleQueuerA   r   r   r   r\   ‹   ó   zTestSimpleQueue._getFUTc                    s”   g ‰ |   d¡}| d¡ ‡ fdd„}tƒ jj}||t t|j¡ƒ ||t t|j¡ƒ t	 
d¡ |  tˆ ƒd¡ |  ˆ d d¡ |  ˆ d t¡ d S )Nr   é   c                    r   r   r   r   r   r   r   r   “   r   z<TestSimpleQueue.test_get_nowait_simple.<locals>.store_resultr   r   )r   rF   r   r   r    r   r!   r   Ú
get_nowaitr#   r$   r%   r&   r)   r*   r   r   r   Útest_get_nowait_simpleŽ   s   



z&TestSimpleQueue.test_get_nowait_simplec                    sÂ   g ‰ |   d¡}t |jd¡}‡ fdd„}| ¡ sJ |ƒ‚t d¡ | ¡ s)J |ƒ‚tƒ j 	||j
¡ t d¡ | ¡ s?J |ƒ‚ˆ dgksHJ ˆ ƒ‚| ¡ sPJ |ƒ‚|jsWJ |ƒ‚| ¡ s_J |ƒ‚d S )Nr   é   c                    r   r   r   r   r   r   r   r   ¥   r   z<TestSimpleQueue.test_get_nowait_unlock.<locals>.store_resultr   )r   r#   r0   rF   r3   r$   r5   r   r   r    rs   r6   Údead©r+   r,   r7   r   r   r   r   Útest_get_nowait_unlock    s   


z&TestSimpleQueue.test_get_nowait_unlockc                 C   s<   d| _ |  ¡ }| d¡ |  | ¡ d¡ |  | ¡ d¡ d S )NFrZ   )Úswitch_expectedr   rF   r%   Úpeekr1   ©r+   r,   r   r   r   Útest_send_first³   s
   
zTestSimpleQueue.test_send_firstc                    sh   ˆ   ¡ }ˆ  t¡ | ¡  W d   ƒ n1 sw   Y  ‡ fdd„}t ||¡}t d¡ | ¡  d S )Nc                    s   ˆ j t| jdd d S )NrC   rD   )ÚassertRaisesr   rz   r@   rA   r   r   rB   À   s   z/TestSimpleQueue.test_peek_empty.<locals>.waiterr:   )r   r}   r   rz   r#   r0   r$   Újoin)r+   r,   rB   Úgr   rA   r   Útest_peek_emptyº   s   
ÿ
zTestSimpleQueue.test_peek_emptyc                 C   s\   |   ¡ }t |j¡}| ¡  t d¡ | d¡ | ¡  |  |j	d u ¡ |  
| ¡ d¡ d S )Nr   r   )r   r#   r0   rz   Ústartr$   rF   r~   r2   Ú	exceptionr%   )r+   r,   r   r   r   r   Útest_peek_multi_greenletÆ   s   

z(TestSimpleQueue.test_peek_multi_greenletc                    s¢   |   d¡}g ‰ ‡ fdd„}t ||¡}t d¡ |  ˆ ddg¡ |  | ¡ d¡ t d¡ |  ˆ g d¢¡ |  | ¡ d¡ |  | ¡ d¡ |jdd	d
ksOJ ‚d S )Nr   c                    s@   |   d¡ ˆ  d¡ |   d¡ ˆ  d¡ |   d¡ ˆ  d¡ dS )NÚaÚbÚcr<   )rF   r   r@   ©Úresultsr   r   ÚputterÔ   s   





z-TestSimpleQueue.test_max_size.<locals>.putterr   r„   r…   )r„   r…   r†   r†   rD   r<   )r   r#   r0   r$   r%   r1   )r+   r,   r‰   r7   r   r‡   r   Útest_max_sizeÐ   s   
	

zTestSimpleQueue.test_max_sizec                    sÎ   |   ¡ }dd„ }g d¢}dd„ |D ƒ‰ t|ƒD ]\}}t ||ˆ | ¡ qt d¡ tƒ ‰‡ ‡fdd„}| |d	 ¡ |  |ƒ d
¡ | |d
 ¡ |  |ƒ d¡ | |d ¡ | |d ¡ |  |ƒ d¡ d S )Nc                 S   ó   |  |  ¡ ¡ d S r   ©Úsetr1   ©r,   Úevtr   r   r   rB   ë   r   z5TestSimpleQueue.test_multiple_waiters.<locals>.waiter)Ú1Ú2Ú3Ú4c                 S   s   g | ]}t ƒ ‘qS r   r
   )Ú.0r]   r   r   r   Ú
<listcomp>ï   s    z9TestSimpleQueue.test_multiple_waiters.<locals>.<listcomp>rC   c               	      sP   ˆ D ]!} t  dd¡ |  ¡ }ˆ |¡ W d   ƒ n1 sw   Y  qtˆƒS )Nr.   F)r#   r=   r1   Úaddr&   )Úer]   ©Úevtsrˆ   r   r   Úcollect_pending_results÷   s   þ€zFTestSimpleQueue.test_multiple_waiters.<locals>.collect_pending_resultsr   r   r   r   rr   )r   Ú	enumerater#   r0   r$   r   rF   r%   )r+   r,   rB   ÚsendingsÚiÚ_rš   r   r˜   r   Útest_multiple_waitersç   s    
z%TestSimpleQueue.test_multiple_waitersc                 C   sR   |   ¡ }dd„ }tƒ }t |||¡ |  | ¡ d¡ | d¡ |  | ¡ d¡ d S )Nc              	   S   óx   t  dtƒ ¡+ z|  ¡ }| |¡ W n ty!   | d¡ Y n	w W d   ƒ d S W d   ƒ d S 1 s5w   Y  d S ©Nr   ú	timed out©r#   r=   ÚRuntimeErrorr1   r   ©r,   r   r   r   r   r   Ú
do_receive	  ó   ÿÿý"ûz<TestSimpleQueue.test_waiters_that_cancel.<locals>.do_receiver¢   rZ   )r   r   r#   r0   r%   r1   rF   )r+   r,   r¦   r   r   r   r   Útest_waiters_that_cancel  s   
z(TestSimpleQueue.test_waiters_that_cancelc                 C   s0   |   ¡ }dd„ }t ||¡ |  | ¡ d¡ d S )Nc                 S   s   |   d¡ d S )NÚsent)rF   r@   r   r   r   Údo_send  s   z6TestSimpleQueue.test_senders_that_die.<locals>.do_sendr©   )r   r#   r0   r%   r1   )r+   r,   rª   r   r   r   Útest_senders_that_die  s   z%TestSimpleQueue.test_senders_that_diec                 C   sx   dd„ }dd„ }|   ¡ }tƒ }tƒ }t |||¡ t |||¡ t d¡ | d¡ |  | ¡ d¡ |  | ¡ d¡ d S )Nc                 S   r‹   r   rŒ   rŽ   r   r   r   rB   #  r   z9TestSimpleQueue.test_two_waiters_one_dies.<locals>.waiterc              	   S   r    r¡   r£   r¥   r   r   r   r¦   &  r§   z=TestSimpleQueue.test_two_waiters_one_dies.<locals>.do_receiver:   rZ   r¢   ©r   r   r#   r0   r$   rF   r%   r1   )r+   rB   r¦   r,   Ú	dying_evtÚwaiting_evtr   r   r   Útest_two_waiters_one_dies!  s   

z)TestSimpleQueue.test_two_waiters_one_diesc                 C   s€   dd„ }|   ¡ }tƒ }tƒ }t |||¡ t |||¡ t d¡ | d¡ |  | ¡ d¡ |  | ¡ d¡ |  | ¡ d¡ d S )Nc              	   S   r    r¡   r£   r¥   r   r   r   r¦   9  r§   z:TestSimpleQueue.test_two_bogus_waiters.<locals>.do_receiver:   r©   r¢   r¬   )r+   r¦   r,   Úe1Úe2r   r   r   Útest_two_bogus_waiters8  s   

z&TestSimpleQueue.test_two_bogus_waitersc                    sH   |   t|  ¡ dƒ¡ g ‰ G ‡ fdd„d|  ¡ ƒ}|ƒ }|  |jˆ ¡ d S )Nr   c                       s   e Zd Z‡ fdd„ZdS )z5TestSimpleQueue.test_subclass_assign_queue.<locals>.Qc                    s
   ˆ | _ d S r   r   )r+   Ú_maxsize©Úmy_queuer   r   rJ   S  ó   
z;TestSimpleQueue.test_subclass_assign_queue.<locals>.Q._initN)rU   rV   rW   rJ   r   r´   r   r   ÚQR  s    r·   )r2   Úhasattrr   r\   ÚassertIsr   )r+   r·   r,   r   r´   r   Útest_subclass_assign_queueL  s
   z*TestSimpleQueue.test_subclass_assign_queueN)rU   rV   rW   r\   rt   rx   r|   r€   rƒ   rŠ   rŸ   r¨   r«   r¯   r²   rº   r   r   r   r   rn   ‰   s    
	rn   c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚTestChannelFc                 C   ro   r   )r   rb   rA   r   r   r   r\   ]  rq   zTestChannel._getFUTc                    sÚ   g ‰ |   ¡ }t |jd¡}‡ fdd„}|  | ¡ ¡ |  | ¡ ¡ t d¡ |  | ¡ ¡ |  | ¡ ¡ tƒ j	 
||j¡ t d¡ |  | ¡ ¡ |  | ¡ ¡ |  ˆ dg¡ |  | ¡ ¡ |  |j¡ |  | ¡ ¡ d S )Nru   c                    r   r   r   r   r   r   r   r   g  r   z@TestChannel.test_get_nowait_unlock_channel.<locals>.store_resultr.   )r   r#   r0   rF   r2   r3   r5   r$   r   r   r    rs   r%   r6   rv   rw   r   r   r   Útest_get_nowait_unlock_channel`  s"   

z*TestChannel.test_get_nowait_unlock_channelc                 C   s¸   |   ¡ }dd„ }dd„ }tƒ }tƒ }t |||¡}t d¡ |  | ¡  ¡ t |||¡}|  | ¡ d¡ |  | ¡ d¡ t 	d¡ t 
||g¡ W d   ƒ d S 1 sUw   Y  d S )	Nc                 S   s   |  d¡ |  d¡ d S )NrZ   Údone)rF   r   )r   r,   r   r   r   Úsender}  s   
z.TestChannel.test_zero_max_size.<locals>.senderc                 S   s   |  ¡ }|  |¡ d S r   )r1   r   )r   r,   r]   r   r   r   Úreceiver  s   z0TestChannel.test_zero_max_size.<locals>.receiverr.   rZ   r½   r   )r   r   r#   r0   r$   r2   r6   r%   r1   r=   Újoinall)r+   r,   r¾   r¿   r°   r±   Úp1Úp2r   r   r   Útest_zero_max_sizez  s   
"ÿzTestChannel.test_zero_max_sizec                    sr   |   ¡ ‰ g ‰‡ ‡fdd„}t |¡}ˆ d¡ ˆ  d¡ ˆ d¡ ˆ  d¡ ˆ d¡ |  g d¢ˆ¡ | ¡  d S )	Nc                      s    ˆ  ˆ  ¡ ¡ ˆ  ˆ  ¡ ¡ d S r   )r   r1   r   ©ÚchannelÚeventsr   r   Úanother_greenlet–  s   z/TestChannel.test_send.<locals>.another_greenletÚsendingÚhelloú
sent helloÚworldú
sent world)rÈ   rÉ   rÊ   rË   rÌ   )r   r#   r0   r   rF   r%   r1   ©r+   rÇ   r   r   rÄ   r   Ú	test_send‘  s   





zTestChannel.test_sendc                    s€   |   ¡ ‰ g ‰‡ ‡fdd„}t |¡}ˆ d¡ ˆ ˆ  ¡ ¡ ˆ ˆ  ¡ ¡ |  g d¢ˆ¡ t d¡ |  g d¢ˆ¡ | ¡  d S )Nc                      s6   ˆ  d¡ ˆ  d¡ ˆ  d¡ ˆ  d¡ ˆ  d¡ d S )Núsending hellorÉ   úsending worldrË   rÌ   )r   rF   r   rÄ   r   r   rÇ   ©  s
   



z/TestChannel.test_wait.<locals>.another_greenletÚwaiting)rÑ   rÏ   rÉ   rÐ   rË   r   )rÑ   rÏ   rÉ   rÐ   rË   rÌ   )r   r#   r0   r   r1   r%   r$   rÍ   r   rÄ   r   Ú	test_wait¥  s   


zTestChannel.test_waitc                 C   s.   |   ¡ }t |jt¡ t|ƒ}|  |g ¡ d S r   )r   r#   r0   rF   ÚStopIterationÚlistr%   )r+   rÅ   Úrr   r   r   Útest_iterable»  s   zTestChannel.test_iterableN)
rU   rV   rW   r'   r\   r¼   rÃ   rÎ   rÒ   rÖ   r   r   r   r   r»   Z  s    r»   c                   @   s@   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )Ú	TestQueuec                 C   ro   r   )r   ÚQueuerA   r   r   r   r\   Å  rq   zTestQueue._getFUTc                 C   sX   |   ¡ }tƒ }t |j|¡ | ¡ }|  ||¡ |  d|j¡ | 	¡  |  d|j¡ d S )Nr   r   )
r   Úobjectr#   r0   rF   r1   r¹   r%   Úunfinished_tasksÚ	task_done)r+   rÅ   rY   r   r   r   r   Útest_task_doneÈ  s   zTestQueue.test_task_donec                 C   s*  |   ¡ }| d¡ | d¡ | |¡ |  | jj¡ | d¡ W d   ƒ n1 s*w   Y  |  | jj¡ | d¡ W d   ƒ n1 sFw   Y  |r¢|  | jj¡ | ¡  W d   ƒ n1 scw   Y  |  | jj¡ | ¡  W d   ƒ n1 s~w   Y  |  t	¡ | 
¡  W d   ƒ n1 s—w   Y  | ¡  d S |  | ¡ d¡ | 
¡  |  | ¡ d¡ | 
¡  | ¡  |  | jj¡ | ¡  W d   ƒ n1 sÔw   Y  |  | jj¡ | ¡  W d   ƒ n1 sïw   Y  |  | jj¡ | dd¡ W d   ƒ d S 1 sw   Y  d S )NÚLÚOÚEÚWÚLOTg      ð?)r   rF   r"   Úshutdownr}   r   ÚShutDownr1   rs   Ú
ValueErrorrÛ   r~   ÚassertIn)r+   Ú	immediater,   r   r   r   Ú#_shutdown_all_methods_in_one_threadÓ  sF   


ÿÿ
ÿ
ÿ
ÿ
ÿ
ÿ$ÿz-TestQueue._shutdown_all_methods_in_one_threadc                 C   ó
   |   d¡S )NF©rç   rA   r   r   r   Ú'test_shutdown_all_methods_in_one_threadô  r¶   z1TestQueue.test_shutdown_all_methods_in_one_threadc                 C   rè   rH   ré   rA   r   r   r   Ú1test_shutdown_immediate_all_methods_in_one_thread÷  r¶   z;TestQueue.test_shutdown_immediate_all_methods_in_one_threadc                 C   s   d| _ |  ¡ }| ¡  dS )zFTest that join() exits immediately if not jobs were put into the queueFN)ry   r   r~   r{   r   r   r   Útest_issue_45û  s   zTestQueue.test_issue_45N)
rU   rV   rW   r   r\   rÜ   rç   rê   rë   rì   r   r   r   r   r×   Â  s    !r×   c                   @   ó   e Zd Zdd„ ZdS )ÚTestLifoQueuec                 C   ro   r   )r   Ú	LifoQueuerA   r   r   r   r\     rq   zTestLifoQueue._getFUTN©rU   rV   rW   r\   r   r   r   r   rî     ó    rî   c                   @   rí   )ÚTestPriorityQueuec                 C   ro   r   )r   ÚPriorityQueuerA   r   r   r   r\     rq   zTestPriorityQueue._getFUTNrð   r   r   r   r   rò     rñ   rò   c                   @   rí   )ÚAbstractTestWeakRefMixinc                 C   s,   dd l }|  ¡ }| |¡}|  ||ƒ ¡ d S )Nr   )Úweakrefr   Úrefr¹   )r+   rõ   Úonerö   r   r   r   Útest_weak_reference  s   
z,AbstractTestWeakRefMixin.test_weak_referenceN)rU   rV   rW   rø   r   r   r   r   rô     s    rô   c                   @   s&   e Zd ZeZejZdd„ Zdd„ Z	dS )ÚTestGetInterruptc                 C   s   |   ¡ j|dS )NrD   )r   r1   ©r+   rE   r   r   r   Úwait  s   zTestGetInterrupt.waitc                 C   ó   |   ¡ S r   ©rk   rA   r   r   r   r     ó   zTestGetInterrupt._makeOneN)
rU   rV   rW   r   r=   r   rp   rk   rû   r   r   r   r   r   rù     s
    rù   c                   @   ó   e Zd ZejZdS )ÚTestGetInterruptJoinableQueueN©rU   rV   rW   r   rØ   rk   r   r   r   r   r   !  ó    
r   c                   @   rÿ   )ÚTestGetInterruptLifoQueueN©rU   rV   rW   r   rï   rk   r   r   r   r   r  $  r  r  c                   @   rÿ   )ÚTestGetInterruptPriorityQueueN©rU   rV   rW   r   ró   rk   r   r   r   r   r  '  r  r  c                   @   rÿ   )ÚTestGetInterruptChannelN)rU   rV   rW   r   rb   rk   r   r   r   r   r  *  r  r  c                       s6   e Zd ZejZeZ‡ fdd„Zdd„ Z	dd„ Z
‡  ZS )ÚTestPutInterruptc                    s   t t| ƒ ¡  |  ¡ | _d S r   )rI   r  ÚsetUpr   r   rA   rM   r   r   r	  2  s   zTestPutInterrupt.setUpc                 C   s0   | j  ¡ s| j  d¡ | j  ¡ r| j jd|dS )Nr   r   rD   )r   r5   rF   rú   r   r   r   rû   6  s   

ÿzTestPutInterrupt.waitc                 C   rè   rO   rý   rA   r   r   r   r   ;  r¶   zTestPutInterrupt._makeOne)rU   rV   rW   r   rp   rk   r	   r=   r	  rû   r   rX   r   r   rM   r   r  .  s    r  c                   @   rÿ   )ÚTestPutInterruptJoinableQueueNr  r   r   r   r   r
  ?  r  r
  c                   @   rÿ   )ÚTestPutInterruptLifoQueueNr  r   r   r   r   r  B  r  r  c                   @   rÿ   )ÚTestPutInterruptPriorityQueueNr  r   r   r   r   r  E  r  r  c                   @   s   e Zd ZejZdd„ ZdS )ÚTestPutInterruptChannelc                 C   rü   r   rý   rA   r   r   r   r   K  rþ   z TestPutInterruptChannel._makeOneN)rU   rV   rW   r   rb   rk   r   r   r   r   r   r  H  s    r  c                   @   s"   e Zd ZejZdd„ ZeZeZdS )ÚTestGetInterruptSimpleQueuec                 C   s
   t  d¡‚)NzNot supported)ÚunittestÚSkipTestrA   r   r   r   Útest_raises_timeout_TimeoutT  r¶   z7TestGetInterruptSimpleQueue.test_raises_timeout_TimeoutN)	rU   rV   rW   r   rp   rk   r  Ú*test_raises_timeout_Timeout_exc_customizedÚtest_outer_timeout_is_not_lostr   r   r   r   r  Q  s
    r  Ú__main__)(r  Úgevent.testingÚtestingr>   r   r#   Ú
gevent.hubr   r   r   r   Úgevent.queuer   r	   Úgevent.eventr   Úgevent.testing.timingr   r   r_   rn   r»   r×   rî   rò   rÙ   rô   rù   r   r  r  r  r  r
  r  r  r  r  rU   Úmainr   r   r   r   Ú<module>   sD    f Rh@		
ÿ