a
     Rîh’  ã                   @   sn   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 ejZG dd„ dƒZ	G dd„ dej
ƒZ
edkrje ¡  dS )é    N)Úsupportc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTimerc                 C   s   t  ¡ | _d| _d| _d S ©Nr   )Ú	threadingÚ	ConditionÚ_condÚ_timeÚ_stop©Úself© r   ú7/opt/python-3.9.24/usr/lib/python3.9/test/test_sched.pyÚ__init__   s    
zTimer.__init__c                 C   s0   | j  | jW  d   ƒ S 1 s"0    Y  d S ©N)r   r   r
   r   r   r   Útime   s    z
Timer.timec                 C   sd   |dksJ ‚| j > || j7 }| j|k r<| j| _| j  ¡  q|| _W d   ƒ n1 sV0    Y  d S r   )r   r   r	   Úwait©r   Útr   r   r   Úsleep   s    

zTimer.sleepc                 C   sN   |dksJ ‚| j ( |  j|7  _| j  ¡  W d   ƒ n1 s@0    Y  d S r   )r   r	   Ú
notify_allr   r   r   r   Úadvance!   s    zTimer.advanceN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r      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S )ÚTestCasec                    sX   g ‰ ‡ fdd„}t  tjtj¡}dD ]}| |d||f¡}q$| ¡  |  ˆ g d¢¡ d S )Nc                    s
   ˆ   | ¡S r   ©Úappend©Úx©Úlr   r   Ú<lambda>,   ó    z%TestCase.test_enter.<locals>.<lambda>)ç      à?çš™™™™™Ù?ç333333Ó?çš™™™™™É?çš™™™™™¹?é   )r'   r&   r%   r$   r#   ©ÚschedÚ	schedulerr   r   ÚenterÚrunÚassertEqual©r   Úfunr+   r   Úzr   r   r   Ú
test_enter*   s    zTestCase.test_enterc                    sX   g ‰ ‡ fdd„}t  tjtj¡}dD ]}| |d||f¡}q$| ¡  |  ˆ g d¢¡ d S )Nc                    s
   ˆ   | ¡S r   r   r   r   r   r   r!   5   r"   z(TestCase.test_enterabs.<locals>.<lambda>©çš™™™™™©?ç{®Gáz¤?ç¸…ëQ¸ž?ç{®Gáz”?ç{®Gáz„?r(   )r8   r7   r6   r5   r4   ©r*   r+   r   r   Úenterabsr-   r.   r/   r   r   r   Útest_enterabs3   s    zTestCase.test_enterabsc                 C   st  t  ¡ }|j}tƒ }t |j|j¡}| dd|d¡ | dd|d¡ t	j
|jd}| ¡  | d¡ |  |jtdd¡ |  | ¡ ¡ dD ]}| |d d||f¡}qŠ| d¡ |  |jtdd¡ |  |jtdd¡ |  | ¡ ¡ | d¡ |  |jtdd	¡ |  | ¡ ¡ | d¡ |  |jtdd
¡ |  | ¡ ¡ | d¡ t |¡ |  | ¡ ¡ |  | ¡ d
¡ d S )Nr(   ©r(   é   ©r=   ©Útarget©Útimeout)é   é   é   rE   rC   rD   éè  )ÚqueueÚQueueÚputr   r*   r+   r   r   r,   r   ÚThreadr-   Ústartr   r.   ÚgetÚTIMEOUTÚ
assertTrueÚemptyr   Újoin_thread)r   Úqr0   Útimerr+   r   r   r1   r   r   r   Útest_enter_concurrent<   s6    





zTestCase.test_enter_concurrentc                    sX   g ‰ ‡ fdd„}t  tjtj¡}dD ]}| d|||f¡}q$| ¡  |  ˆ g d¢¡ d S )Nc                    s
   ˆ   | ¡S r   r   r   r   r   r   r!   [   r"   z(TestCase.test_priority.<locals>.<lambda>)r(   rE   r=   rC   rD   r8   r9   )r   r0   r+   Úpriorityr1   r   r   r   Útest_priorityY   s    zTestCase.test_priorityc           	         s¼   g ‰ ‡ fdd„}t  tjtj¡}t ¡ }| |d d|d¡}| |d d|d¡}| |d d|d	¡}| |d
 d|d¡}| |d d|d¡}| |¡ | |¡ | ¡  |  ˆ g d¢¡ d S )Nc                    s
   ˆ   | ¡S r   r   r   r   r   r   r!   d   r"   z&TestCase.test_cancel.<locals>.<lambda>r8   r(   )r8   r7   )r7   r6   )r6   r5   )r5   r4   )r4   )r7   r6   r5   )r*   r+   r   r   r:   Úcancelr-   r.   )	r   r0   r+   ÚnowÚevent1Úevent2Úevent3Úevent4Úevent5r   r   r   Útest_cancelb   s    

zTestCase.test_cancelc                 C   sŒ  t  ¡ }|j}tƒ }t |j|j¡}| ¡ }| |d d|d¡}| |d d|d¡}| |d d|d¡}| |d d|d¡}	| |d	 d|d
¡}
t	j
|jd}| ¡  | d¡ |  |jtdd¡ |  | ¡ ¡ | |¡ | |	¡ | d¡ |  | ¡ ¡ | d¡ |  |jtdd	¡ |  | ¡ ¡ | d¡ |  |jtdd¡ |  | ¡ ¡ | d¡ t |¡ |  | ¡ ¡ |  | ¡ d¡ d S )Nr(   r<   rE   )rE   rC   )rC   rD   )rD   r=   r>   r?   rA   rF   )rG   rH   rI   r   r*   r+   r   r   r:   r   rJ   r-   rK   r   r.   rL   rM   rN   rO   rV   r   rP   )r   rQ   r0   rR   r+   rW   rX   rY   r[   r\   rZ   r   r   r   r   Útest_cancel_concurrentq   s:    







zTestCase.test_cancel_concurrentc                    sr   g ‰ ‡ fdd„}t  tjtj¡}|  | ¡ ¡ dD ]}| |d||f¡}q2|  | ¡ ¡ | ¡  |  | ¡ ¡ d S )Nc                    s
   ˆ   | ¡S r   r   r   r   r   r   r!   ’   r"   z%TestCase.test_empty.<locals>.<lambda>r3   r(   )	r*   r+   r   r   rN   rO   r:   ZassertFalser-   r/   r   r   r   Ú
test_empty   s    zTestCase.test_emptyc           	         sž   g ‰ ‡ fdd„}t  tjtj¡}t ¡ }| |d d|¡}| |d d|¡}| |d d|¡}| |d d|¡}| |d d|¡}|  |j|||||g¡ d S )	Nc                    s
   ˆ   | ¡S r   r   r   r   r   r   r!      r"   z%TestCase.test_queue.<locals>.<lambda>r4   r(   r8   r7   r5   r6   )r*   r+   r   r   r:   r.   rG   )	r   r0   r+   rW   Ze5Úe1Úe2Ze4Ze3r   r   r   Ú
test_queue›   s    zTestCase.test_queuec              	      s¦   g ‰ ‡ fdd„}t   ¡ }t t j t j¡}| |d|¡ |j|d|dd |j|d|dd |j|d|dddid	 | ¡  |  ˆ d
i fdi fdi fdddifg¡ d S )Nc                     s   ˆ   | |f¡ d S r   r   ©ÚaÚb©Úseqr   r   r0   «   s    z&TestCase.test_args_kwargs.<locals>.funr(   )r(   rE   )Úargumentrc   Zfoor=   )rh   Úkwargsr   )r   r*   r+   r   r:   r-   ZassertCountEqual)r   r0   rW   r+   r   rf   r   Útest_args_kwargs©   s    
üzTestCase.test_args_kwargsc                    sX   g ‰ ‡ fdd„}t  tjtj¡}dD ]}| |d||f¡ q$|jdd |  ˆ g ¡ d S )Nc                    s
   ˆ   | ¡S r   r   r   r   r   r   r!   ¾   r"   z0TestCase.test_run_non_blocking.<locals>.<lambda>)é
   é	   é   é   é   r(   F)Úblockingr)   )r   r0   r+   r   r   r   r   Útest_run_non_blocking¼   s    zTestCase.test_run_non_blockingN)r   r   r   r2   r;   rS   rU   r]   r^   r_   rb   rj   rq   r   r   r   r   r   (   s   			r   Ú__main__)rG   r*   r   r   ZunittestÚtestr   ZSHORT_TIMEOUTrM   r   r   r   Úmainr   r   r   r   Ú<module>   s    