
    z%i                         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    C/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/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                    | 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   se    ZZ 	OA**q.!ZZ


! **q. DJ	 	 	s   AA7'A77B c                     | 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"   s;    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?皙?皙?   )r0   r/   r.   r-   r,   sched	schedulerr   r   enterrunassertEqualr   funr4   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?r1   )rC   rB   rA   r@   r?   )r3   r4   r   r   enterabsr6   r7   r8   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 )Nr1   r1      rH   targettimeout)         rP   rN   rO     )queueQueueputr   r3   r4   r   r   r5   r   Threadr6   startr   r7   getTIMEOUT
assertTrueemptyr   join_thread)r   qr9   timerr4   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   )r1   rP   rH   rN   rO   )rO   rN   rH   rP   r1   )rP   rO   rH   r1   rN   )r1   rP   rH   rP   r1   )r1   r1   rP   rP   rH   )
prioritiesexpectedrC   )r3   r4   r   r   subTestrD   r6   r7   rY   rZ   clear)r   r9   r4   casesra   rb   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   rC   r1   )rC   rB   )rB   rA   )rA   r@   )r@   r?   )r?   )rB   rA   r@   )r3   r4   r   r   rD   cancelr6   r7   )
r   r9   r4   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 )Nr1   rG   rP   )rP   rN   )rN   rO   )rO   rH   rI   rJ   rL   rQ   )rR   rS   rT   r   r3   r4   r   r   rD   r   rU   r6   rV   r   r7   rW   rX   rY   rZ   rj   r   r[   )r   r\   r9   r]   r4   rk   rl   rm   ro   rp   rn   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 )Nr1   )a)b)cru   rw   )r3   r4   rD   r&   rj   r6   r7   )r   eventsr4   rv   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>   r1   )	r3   r4   r   r   rY   rZ   rD   assertFalser6   r8   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?   r1   rC   rB   r@   rA   )r3   r4   r   r   rD   r7   rR   )
r   r9   r4   rk   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%   )ru   rv   seqs     r   r9   z&TestCase.test_args_kwargs.<locals>.fun   s    JJ1vr   r1   )r1   rP   )argument)ru   rv   foorH   )r   kwargsr    )r   r3   r4   r   rD   r6   assertCountEqual)r   r9   rk   r4   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   )
   	            r1   F)blockingr2   )r   r9   r4   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;   rE   r   requires_working_threadingr^   rg   rq   rs   ry   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__)rR   r3   r   r   unittesttestr   test.supportr   SHORT_TIMEOUTrX   r   r"   r   mainr    r   r   <module>r      s`          ) 

$ $8u x   u p zHMMO r   