
    daf                         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 d dlmZ ej                  Z
 G d d      Z G d dej                        Zedk(  r ej                          yy)	    N)support)threading_helperc                   $    e Zd Zd Zd Zd Zd Zy)Timerc                 R    t        j                         | _        d| _        d| _        y Nr   )	threading	Condition_cond_time_stopselfs    */root/Python-3.12.4/Lib/test/test_sched.py__init__zTimer.__init__   s     ((*


    c                 ^    | j                   5  | j                  cd d d        S # 1 sw Y   y xY wN)r   r   r   s    r   timez
Timer.time   s%    ZZ 	::	 	 	s   #,c                    |dk\  sJ | j                   5  || j                  z  }| j                  |k  r;| j                  | _        | j                   j                          | j                  |k  r;|| _        d d d        y # 1 sw Y   y xY wr   )r   r   r   waitr   ts     r   sleepzTimer.sleep   sp    AvvZZ 	OA**q.!ZZ


! **q. DJ	 	 	s   AA>.A>>Bc                     |dk\  sJ | j                   5  | xj                  |z  c_        | j                   j                          d d d        y # 1 sw Y   y xY wr   )r   r   
notify_allr   s     r   advancezTimer.advance"   sF    AvvZZ 	$JJ!OJJJ!!#	$ 	$ 	$s   0AAN)__name__
__module____qualname__r   r   r   r    r   r   r   r      s    

$r   r   c                       e Zd Zd Zd Z ej                         d        Zd Zd Z	 ej                         d        Z
d Zd Zd	 Zd
 Zd Zy)TestCasec                     g fd}t        j                  t        j                  t        j                        }dD ]  }|j	                  |d||f      } |j                          | j                  g d       y )Nc                 &    j                  |       S r   appendxls    r   <lambda>z%TestCase.test_enter.<locals>.<lambda>-        r   )      ?皙?333333?皙?皙?   )r1   r0   r/   r.   r-   sched	schedulerr   r   enterrunassertEqualr   funr5   r)   zr*   s        @r   
test_enterzTestCase.test_enter+   sd    #OODIItzz:	* 	1A1cA40A	156r   c                     g fd}t        j                  t        j                  t        j                        }dD ]  }|j	                  |d||f      } |j                          | j                  g d       y )Nc                 &    j                  |       S r   r&   r(   s    r   r+   z(TestCase.test_enterabs.<locals>.<lambda>6   r,   r   皙?{Gz?Q?{Gz?{Gz?r2   )rD   rC   rB   rA   r@   )r4   r5   r   r   enterabsr7   r8   r9   s        @r   test_enterabszTestCase.test_enterabs4   sf    #OODIItzz:	/ 	4A""1aqd3A	4:;r   c                 `   t        j                         }|j                  }t               }t	        j
                  |j                  |j                        }|j                  dd|d       |j                  dd|d       t        j                  |j                        }|j                          |j                  d       | j                  |j                  t               d       | j#                  |j%                                dD ]  }|j                  |dz
  d||f      } |j                  d       | j                  |j                  t               d       | j                  |j                  t               d       | j#                  |j%                                |j                  d       | j                  |j                  t               d	       | j#                  |j%                                |j                  d       | j                  |j                  t               d
       | j#                  |j%                                |j                  d       t'        j(                  |       | j#                  |j%                                | j                  |j                         d
       y )Nr2   r2      rI   targettimeout)         rQ   rO   rP     )queueQueueputr   r4   r5   r   r   r6   r	   Threadr7   startr   r8   getTIMEOUT
assertTrueemptyr   join_thread)r   qr:   timerr5   r   r)   r;   s           r   test_enter_concurrentzTestCase.test_enter_concurrent=   s   KKMeeOOEJJ<	1c4(1c4(IMM2		aw/3	" 	5AAq#t4A	5aw/3w/3	"aw/3	"aw/3	"d$$Q'	"q)r   c           	         g fd}t        j                  t        j                  t        j                        }g dg dfg dg dfg dg dfg dg dfg}|D ]  \  }}| j	                  ||      5  |D ]  }|j                  d|||f        |j                          | j                  |       | j                  |j                                j                          d d d         y # 1 sw Y   xY w)	Nc                 &    j                  |       S r   r&   r(   s    r   r+   z(TestCase.test_priority.<locals>.<lambda>]   r,   r   )r2   rQ   rI   rO   rP   )rP   rO   rI   rQ   r2   )rQ   rP   rI   r2   rO   )r2   rQ   rI   rQ   r2   )r2   r2   rQ   rQ   rI   )
prioritiesexpectedrD   )r4   r5   r   r   subTestrE   r7   r8   rZ   r[   clear)r   r:   r5   casesrb   rc   priorityr*   s          @r   test_priorityzTestCase.test_priority[   s    #OODIItzz:	 o.o.o.o.	
 %* 		 JhG  * IH&&tXsXKHI  H- 	 12	 		 s   4A.C--C6	c                   	 g 		fd}t        j                  t        j                  t        j                        }t        j                         }|j	                  |dz   d|d      }|j	                  |dz   d|d      }|j	                  |dz   d|d      }|j	                  |d	z   d|d
      }|j	                  |dz   d|d      }|j                  |       |j                  |       |j                          | j                  	g d       y )Nc                 &    j                  |       S r   r&   r(   s    r   r+   z&TestCase.test_cancel.<locals>.<lambda>s   r,   r   rD   r2   )rD   rC   )rC   rB   )rB   rA   )rA   r@   )r@   )rC   rB   rA   )r4   r5   r   r   rE   cancelr7   r8   )
r   r:   r5   nowevent1event2event3event4event5r*   s
            @r   test_cancelzTestCase.test_cancelq   s    #OODIItzz:	iik##C$J3@##C$J3@##C$J3@##C$J3@##C$J3@  ./r   c                    t        j                         }|j                  }t               }t	        j
                  |j                  |j                        }|j                         }|j                  |dz   d|d      }|j                  |dz   d|d      }|j                  |dz   d|d      }|j                  |dz   d|d      }	|j                  |d	z   d|d
      }
t        j                  |j                        }|j                          |j                  d       | j                  |j                  t               d       | j#                  |j%                                |j'                  |       |j'                  |	       |j                  d       | j#                  |j%                                |j                  d       | j                  |j                  t               d	       | j#                  |j%                                |j                  d       | j                  |j                  t               d       | j#                  |j%                                |j                  d       t)        j*                  |       | j#                  |j%                                | j                  |j                         d       y )Nr2   rH   rQ   )rQ   rO   )rO   rP   )rP   rI   rJ   rK   rM   rR   )rS   rT   rU   r   r4   r5   r   r   rE   r	   rV   r7   rW   r   r8   rX   rY   rZ   r[   rk   r   r\   )r   r]   r:   r^   r5   rl   rm   rn   rp   rq   ro   r   s               r   test_cancel_concurrentzTestCase.test_cancel_concurrent   s   KKMeeOOEJJ<	jjl##C!GQT:##C!GQT:##C!GQT:##C!GQT:##C!GQT:IMM2		aw/3	"  a	"aw/3	"aw/3	"d$$Q'	"q)r   c                 N   g }t        j                         }|j                  dd|j                  d       |j                  dd|j                  d      }|j                  dd|j                  d       |j	                  |       |j                          | j                  |ddg       y )Nr2   )a)b)crv   rx   )r4   r5   rE   r'   rk   r7   r8   )r   eventsr5   rw   s       r   test_cancel_correct_eventz"TestCase.test_cancel_correct_event   s    OO%	1a7q!V]]F;1a7#s,r   c                    g fd}t        j                  t        j                  t        j                        }| j	                  |j                                dD ]  }|j                  |d||f      } | j                  |j                                |j                          | j	                  |j                                y )Nc                 &    j                  |       S r   r&   r(   s    r   r+   z%TestCase.test_empty.<locals>.<lambda>   r,   r   r?   r2   )	r4   r5   r   r   rZ   r[   rE   assertFalser7   r9   s        @r   
test_emptyzTestCase.test_empty   s    #OODIItzz:		)*/ 	4A""1aqd3A	4*+	)*r   c                   	 g 		fd}t        j                  t        j                  t        j                        }t        j                         }|j	                  |dz   d|      }|j	                  |dz   d|      }|j	                  |dz   d|      }|j	                  |dz   d|      }|j	                  |dz   d|      }| j                  |j                  |||||g       y )Nc                 &    j                  |       S r   r&   r(   s    r   r+   z%TestCase.test_queue.<locals>.<lambda>   r,   r   r@   r2   rD   rC   rA   rB   )r4   r5   r   r   rE   r8   rS   )
r   r:   r5   rl   e5e1e2e4e3r*   s
            @r   
test_queuezTestCase.test_queue   s    #OODIItzz:	iikd
As3d
As3d
As3d
As3d
As3 	2r2r2*>?r   c           	         g fd}t        j                          }t        j                  t         j                   t         j                        }|j	                  |d|       |j	                  |d|d       |j	                  |d|d       |j	                  |d|dddi       |j                          | j                  d	i fdi fdi fdddifg       y )
Nc                  ,    j                  | |f       y r   r&   )rv   rw   seqs     r   r:   z&TestCase.test_args_kwargs.<locals>.fun   s    JJ1vr   r2   )r2   rQ   )argument)rv   rw   foorI   )r   kwargsr!   )r   r4   r5   r   rE   r7   assertCountEqual)r   r:   rl   r5   r   s       @r   test_args_kwargszTestCase.test_args_kwargs   s    	 iikOODIItzz:	33'33833<33
KcHRLeQZ 	$
 	r   c                     g fd}t        j                  t        j                  t        j                        }dD ]  }|j	                  |d||f        |j                  d       | j                  g        y )Nc                 &    j                  |       S r   r&   r(   s    r   r+   z0TestCase.test_run_non_blocking.<locals>.<lambda>   r,   r   )
   	            r2   F)blockingr3   )r   r:   r5   r)   r*   s       @r   test_run_non_blockingzTestCase.test_run_non_blocking   sf    #OODIItzz:	! 	-AOOAq#t,	-u%Br   N)r   r   r    r<   rF   r   requires_working_threadingr_   rh   rr   rt   rz   r~   r   r   r   r!   r   r   r#   r#   )   sp    7< 1002* 3*:,0 1002* 3*>	-	+@& r   r#   __main__)rS   r4   r	   r   unittesttestr   test.supportr   SHORT_TIMEOUTrY   r   r#   r   mainr!   r   r   <module>r      s`          ) 

$ $8u x   u p zHMMO r   