a 5êdg’ã@snddlZddlZddlZddlZddlZddlmZejZGdd„dƒZ Gdd„dej ƒZ e dkrje  ¡dS)éN)Úsupportc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTimercCst ¡|_d|_d|_dS)Nr)Ú threadingÚ ConditionÚ_condÚ_timeÚ_stop©Úself©r ú+/usr/local/lib/python3.9/test/test_sched.pyÚ__init__ s zTimer.__init__cCs0|j|jWdƒS1s"0YdS©N)rrr r r r Útimesz Timer.timecCsX|j>||j7}|j|kr0|j|_|j ¡q||_Wdƒn1sJ0YdSr)rrrÚwait©r Útr r r Úsleeps    z Timer.sleepcCsB|j(|j|7_|j ¡Wdƒn1s40YdSr)rrÚ notify_allrr r r Úadvance!sz Timer.advanceN)Ú__name__Ú __module__Ú __qualname__r rrrr r r r r s rc@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)ÚTestCasecsXg‰‡fdd„}t tjtj¡}dD]}| |d||f¡}q$| ¡| ˆgd¢¡dS)Ncs ˆ |¡Sr©Úappend©Úx©Úlr r Ú,óz%TestCase.test_enter..)çà?çš™™™™™Ù?ç333333Ó?çš™™™™™É?çš™™™™™¹?é)r&r%r$r#r"©ÚschedÚ schedulerrrÚenterÚrunÚ assertEqual©r Úfunr*rÚzr rr Ú test_enter*s zTestCase.test_entercsXg‰‡fdd„}t tjtj¡}dD]}| |d||f¡}q$| ¡| ˆgd¢¡dS)Ncs ˆ |¡Srrrrr r r 5r!z(TestCase.test_enterabs..©çš™™™™™©?ç{®Gáz¤?縅ëQ¸ž?ç{®Gáz”?ç{®Gáz„?r')r7r6r5r4r3©r)r*rrÚenterabsr,r-r.r rr Ú test_enterabs3s zTestCase.test_enterabscCstt ¡}|j}tƒ}t |j|j¡}| dd|d¡| dd|d¡t j |j d}|  ¡|  d¡| |jtdd¡| | ¡¡dD]}| |dd||f¡}qŠ|  d¡| |jtdd¡| |jtdd¡| | ¡¡|  d¡| |jtdd ¡| | ¡¡|  d¡| |jtdd ¡| | ¡¡|  d ¡t |¡| | ¡¡| | ¡d ¡dS) Nr'©r'é©r<©Útarget©Útimeout)ééérDrBrCéè)ÚqueueÚQueueÚputrr)r*rrr+rÚThreadr,Ústartrr-ÚgetÚTIMEOUTÚ assertTrueÚemptyrÚ join_thread)r Úqr/Útimerr*rrr0r r r Útest_enter_concurrent<s6      zTestCase.test_enter_concurrentcsXg‰‡fdd„}t tjtj¡}dD]}| d|||f¡}q$| ¡| ˆgd¢¡dS)Ncs ˆ |¡Srrrrr r r [r!z(TestCase.test_priority..)r'rDr<rBrCr7r8)r r/r*Úpriorityr0r rr Ú test_priorityYs zTestCase.test_priorityc s¼g‰‡fdd„}t tjtj¡}t ¡}| |dd|d¡}| |dd|d¡}| |dd|d ¡}| |d d|d ¡}| |d d|d ¡}| |¡| |¡| ¡| ˆgd¢¡dS)Ncs ˆ |¡Srrrrr r r dr!z&TestCase.test_cancel..r7r')r7r6)r6r5)r5r4)r4r3)r3)r6r5r4)r)r*rrr9Úcancelr,r-) r r/r*ÚnowÚevent1Úevent2Úevent3Úevent4Úevent5r rr Ú test_cancelbs   zTestCase.test_cancelc CsŒt ¡}|j}tƒ}t |j|j¡}| ¡}| |dd|d¡}| |dd|d¡}| |dd|d¡}| |dd|d¡} | |d d|d ¡} t j |j d } |   ¡|  d¡| |jtd d¡| | ¡¡| |¡| | ¡|  d¡| | ¡¡|  d¡| |jtd d ¡| | ¡¡|  d¡| |jtd d¡| | ¡¡|  d ¡t | ¡| | ¡¡| | ¡d¡dS)Nr'r;rD)rDrB)rBrC)rCr<r=r>r@rE)rFrGrHrr)r*rrr9rrIr,rJrr-rKrLrMrNrUrrO) r rPr/rQr*rVrWrXrZr[rYrr r r Útest_cancel_concurrentqs:        zTestCase.test_cancel_concurrentcsrg‰‡fdd„}t tjtj¡}| | ¡¡dD]}| |d||f¡}q2| | ¡¡| ¡| | ¡¡dS)Ncs ˆ |¡Srrrrr r r ’r!z%TestCase.test_empty..r2r') r)r*rrrMrNr9Z assertFalser,r.r rr Ú test_emptys zTestCase.test_emptyc sžg‰‡fdd„}t tjtj¡}t ¡}| |dd|¡}| |dd|¡}| |dd|¡}| |dd|¡}| |dd|¡}| |j|||||g¡dS) Ncs ˆ |¡Srrrrr r r r!z%TestCase.test_queue..r3r'r7r6r4r5)r)r*rrr9r-rF) r r/r*rVZe5Úe1Úe2Ze4Ze3r rr Ú test_queue›s zTestCase.test_queuec s¦g‰‡fdd„}t ¡}t tjtj¡}| |d|¡|j|d|dd|j|d|dd|j|d|dddid | ¡| ˆd ifdifdifdddifg¡dS) Ncsˆ ||f¡dSrr©ÚaÚb©Úseqr r r/«sz&TestCase.test_args_kwargs..funr')r'rD)ÚargumentrbZfoor<)rgÚkwargsr )rr)r*rr9r,ZassertCountEqual)r r/rVr*r rer Útest_args_kwargs©s  üzTestCase.test_args_kwargscsXg‰‡fdd„}t tjtj¡}dD]}| |d||f¡q$|jdd| ˆg¡dS)Ncs ˆ |¡Srrrrr r r ¾r!z0TestCase.test_run_non_blocking..)é é ééér'F)Úblockingr()r r/r*rr rr Útest_run_non_blocking¼s  zTestCase.test_run_non_blockingN) rrrr1r:rRrTr\r]r^rarirpr r r r r(s    rÚ__main__) rFr)rrZunittestÚtestrZ SHORT_TIMEOUTrLrrrÚmainr r r r Ús