
    <e                         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                     dS dS )	    N)support)threading_helperc                   &    e Zd Zd Zd Zd Zd ZdS )Timerc                 R    t          j                    | _        d| _        d| _        d S )Nr   )	threading	Condition_cond_time_stopselfs    &/usr/lib/python3.11/test/test_sched.py__init__zTimer.__init__   s$    (**




    c                 R    | j         5  | j        cd d d            S # 1 swxY w Y   d S N)r
   r   r   s    r   timez
Timer.time   ss    Z 	 	:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s     c                     | j         5  || j        z  }| j        |k     r0| j        | _        | j                                          | j        |k     0|| _        d d d            d S # 1 swxY w Y   d S r   )r
   r   r   waitr   ts     r   sleepzTimer.sleep   s    Z 	 	OA*q..!Z

!!! *q.. DJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA""A&)A&c                     | j         5  | xj        |z  c_        | j                                          d d d            d S # 1 swxY w Y   d S r   )r
   r   
notify_allr   s     r   advancezTimer.advance"   s    Z 	$ 	$JJ!OJJJ!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   *?AAN)__name__
__module____qualname__r   r   r   r    r   r   r   r      sP          
  
  $ $ $ $ $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dS )TestCasec                     g fd}t          j        t          j        t          j                  }dD ]}|                    |d||f          }|                                 |                     g d           d S )Nc                 .                         |           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+   s    ####ODItz::	* 	1 	1A1cA400AA55566666r   c                     g fd}t          j        t          j        t          j                  }dD ]}|                    |d||f          }|                                 |                     g d           d S )Nc                 .                         |           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   s    ####ODItz::	/ 	4 	4A""1aqd33AA:::;;;;;r   c                 8   t          j                    }|j        }t                      }t	          j        |j        |j                  }|                    dd|d           |                    dd|d           t          j
        |j                  }|                                 |                    d           |                     |                    t                     d           |                     |                                           dD ]}|                    |dz
  d||f          }|                    d           |                     |                    t                     d           |                     |                    t                     d           |                     |                                           |                    d           |                     |                    t                     d	           |                     |                                           |                    d           |                     |                    t                     d
           |                     |                                           |                    d           t'          j        |           |                     |                                           |                     |                                d
           d S )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=   sw   KMMeOEJ<<	1c4(((1c4(((IM222				aw//333		""" 	5 	5AAq#t44AAaw//333w//333		"""aw//333		"""aw//33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 ]\  }}|                     ||          5  |D ]}|                    d|||f           |                                 |                     |           |                     |	                                           
                                 d d d            n# 1 swxY w Y   d S )	Nc                 .                         |           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~   ####ODItz::	 __ooo.__ooo.__ooo.__ooo.	
 %* 		 		 JhGG   * I IH&&tXsXKHHHH  H--- 	 1 1222			              		 		s   .BC>>D	D	c                 H  	 g 		fd}t          j        t          j        t          j                  }t          j                    }|                    |dz   d|d          }|                    |dz   d|d          }|                    |dz   d|d          }|                    |d	z   d|d
          }|                    |dz   d|d          }|                    |           |                    |           |                                 |                     	g d           d S )Nc                 .                         |           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   ####ODItz::	ikk##C$J3@@##C$J3@@##C$J3@@##C$J3@@##C$J3@@      .../////r   c                 d   t          j                    }|j        }t                      }t	          j        |j        |j                  }|                                }|                    |dz   d|d          }|                    |dz   d|d          }|                    |dz   d|d          }|                    |dz   d|d          }	|                    |d	z   d|d
          }
t          j
        |j                  }|                                 |                    d           |                     |                    t                     d           |                     |                                           |                    |           |                    |	           |                    d           |                     |                                           |                    d           |                     |                    t                     d	           |                     |                                           |                    d           |                     |                    t                     d           |                     |                                           |                    d           t)          j        |           |                     |                                           |                     |                                d           d S )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   KMMeOEJ<<	jjll##C!GQT::##C!GQT::##C!GQT::##C!GQT::##C!GQT::IM222				aw//333		"""      a		"""aw//333		"""aw//333		"""d$Q'''		"""q)))))r   c                 `   g }t          j                    }|                    dd|j        d           |                    dd|j        d          }|                    dd|j        d           |                    |           |                                 |                     |ddg           d S )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    O%%	1a777q!V]F;;1a777#s,,,,,r   c                    g fd}t          j        t          j        t          j                  }|                     |                                           dD ]}|                    |d||f          }|                     |                                           |                                 |                     |                                           d S )Nc                 .                         |           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    ####ODItz::		))***/ 	4 	4A""1aqd33AA**+++	))*****r   c                   	 g 		fd}t          j        t          j        t          j                  }t          j                    }|                    |dz   d|          }|                    |dz   d|          }|                    |dz   d|          }|                    |dz   d|          }|                    |dz   d|          }|                     |j        |||||g           d S )Nc                 .                         |           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    ####ODItz::	ikkd
As33d
As33d
As33d
As33d
As33 	2r2r2*>?????r   c           	         g fd}t          j                     }t          j        t           j         t           j                  }|                    |d|           |                    |d|d           |                    |d|d           |                    |d|dddi           |                                 |                     d	i fdi fdi fdddifg           d S )
Nc                  6                         | |f           d S 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   	 	 	 	 	 ikkODItz::	33'''3388833<<<33
KKKcHRLeQZ 	$
 	 	 	 	 	r   c                     g fd}t          j        t          j        t          j                  }dD ]}|                    |d||f           |                    d           |                     g            d S )Nc                 .                         |           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   s    ####ODItz::	! 	- 	-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"   )   s        7 7 7< < < 1022* * 32*:  ,0 0 0 1022* * 32*>	- 	- 	-	+ 	+ 	+@ @ @  &         r   r"   __main__)rR   r3   r   r   unittesttestr   test.supportr   SHORT_TIMEOUTrX   r   r"   r   mainr    r   r   <module>r      s                  ) ) ) ) ) ) 
$ $ $ $ $ $ $ $8u  u  u  u  u x  u  u  u p zHMOOOOO r   