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.timecCsd|dks J‚|j>||j7}|j|kr<|j|_|j ¡q||_Wdƒn1sV0YdSr)rrr Úwait©r Útr r r Úsleeps    z Timer.sleepcCsN|dks J‚|j(|j|7_|j ¡Wdƒn1s@0YdSr)rr Ú notify_allrr r r Úadvance!s z Timer.advanceN)Ú__name__Ú __module__Ú __qualname__rrrrr 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()r8r7r6r5r4©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)ééérErCrDéè)ÚqueueÚQueueÚputrr*r+rrr,rÚThreadr-Ústartrr.ÚgetÚTIMEOUTÚ assertTrueÚemptyrÚ join_thread)r Úqr0Útimerr+rrr1r 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(rEr=rCrDr8r9)r r0r+Úpriorityr1r 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..r8r()r8r7)r7r6)r6r5)r5r4)r4)r7r6r5)r*r+rrr:Úcancelr-r.) r r0r+Ú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<rE)rErC)rCrD)rDr=r>r?rArF)rGrHrIrr*r+rrr:rrJr-rKrr.rLrMrNrOrVrrP) r rQr0rRr+rWrXrYr[r\rZrr 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..r3r() r*r+rrrNrOr:Z 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..r4r(r8r7r5r6)r*r+rrr:r.rG) r r0r+rWZe5Ú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 r0«sz&TestCase.test_args_kwargs..funr()r(rE)ÚargumentrcZfoor=)rhÚkwargsr )rr*r+rr:r-ZassertCountEqual)r r0rWr+r rfr Ú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 r0r+rr rr Útest_run_non_blocking¼s  zTestCase.test_run_non_blockingN) rrrr2r;rSrUr]r^r_rbrjrqr r r r r(s    rÚ__main__) rGr*rrZunittestÚtestrZ SHORT_TIMEOUTrMrrrÚmainr r r r Ús