a ze2;@sddlZddlZddlZddlZddlmZddlmZddlmZdZ dZ GdddZ Gd d d ej Z ed kr|edS) N)dedent)captured_stdout)captured_stderri@Bc@s:eZdZdZdddZddZddZd d Zd d Zd S) FakeTimergE@?cCsd|_d|_||_|t_dS)Nr)count setup_callsseconds_per_incrementtimeit _fake_timer)selfr rD/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_timeit.py__init__szFakeTimer.__init__cCs|j|j|jSN) BASE_TIMErr r rrr__call__szFakeTimer.__call__cCs|jd7_dSN)rrrrrinc!sz FakeTimer.inccCs|jd7_dSr)r rrrrsetup$szFakeTimer.setupcCs ||_|Sr)Z saved_timer)r timerrrr wrap_timer'szFakeTimer.wrap_timerN)r) __name__ __module__ __qualname__rrrrrrrrrrrs  rc@seZdZddZddZddZddZd d Zd d Zd dZ dZ dZ ddZ ddZ diddZddZddZddZddZd d!Zd"d#Zd$d%Zdjd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+e,-e.j/j0dRkdSdTdUZ1dVdWZ2dXdYZ3dZd[Z4d\d]Z5d^d_Z6dldadbZ7dcddZ8dedfZ9dgdhZ:dS)m TestTimeitcCs zt`WntyYn0dSr)r r AttributeErrorrrrrtearDown.s zTestTimeit.tearDowncCs,|tddd|tddddS)Nr assertEqualr Zreindentrrrrtest_reindent_empty4szTestTimeit.test_reindent_emptycCs,|tddd|tddddS)Npassrr"r#rrrrtest_reindent_single8szTestTimeit.test_reindent_singlecCs,|tddd|tddddS)Nz rr"z r#rrrrtest_reindent_multi_empty<sz$TestTimeit.test_reindent_multi_emptycCs,|tddd|tddddS)Nzprint() pass breakrr"zprint() pass breakr#rrrrtest_reindent_multi@szTestTimeit.test_reindent_multicCs|jttjdd|jttjdd|jttjdd|jttjdd|jttjdd|jttjdd|jttjdddS)N)stmtreturnyield yield from ()breakcontinuefrom timeit import * assertRaises ValueErrorr Timer SyntaxErrorrrrrtest_timer_invalid_stmtHsz"TestTimeit.test_timer_invalid_stmtcCs|jttjdd|jttjdd|jttjdd|jttjdd|jttjdd|jttjdd|jttjdddS)N)rr+r,r-r.r/r0r1rrrrtest_timer_invalid_setupQsz#TestTimeit.test_timer_invalid_setupz(import timeit timeit._fake_timer.setup()z&import timeit timeit._fake_timer.inc()cCs|jdSr) fake_timerrrrrrfake_callable_setup]szTestTimeit.fake_callable_setupcCs|jdSr)r8rrrrrfake_callable_stmt`szTestTimeit.fake_callable_stmtNcCsvt|_tj|||j|d}i}|dur.t}n||d<|jfi|}||jjd||jj||||dS)N)r*rrglobalsnumberr)rr8r r4DEFAULT_NUMBERr$r r)r r*rr<r;tkwargs delta_timerrrr cs zTestTimeit.timeitcCs|j|j|jdddSNrr<r fake_stmt fake_setuprrrrtest_timeit_zero_itersusz!TestTimeit.test_timeit_zero_iterscCs|j|j|jdddSNrBrCrrrrtest_timeit_few_itersxsz TestTimeit.test_timeit_few_iterscCs|j|j|jdddSrG)r r:rErrrrtest_timeit_callable_stmt{sz$TestTimeit.test_timeit_callable_stmtcCs|j|j|jdddSrG)r rDr9rrrrtest_timeit_callable_setup~sz%TestTimeit.test_timeit_callable_setupcCs|j|j|jdddSrG)r r:r9rrrr#test_timeit_callable_stmt_and_setupsz.TestTimeit.test_timeit_callable_stmt_and_setupcCs(tj|j|jdtd}||ddS)Nrr<r)r rDrErr$)r r@rrrtest_timeit_function_zero_iterssz*TestTimeit.test_timeit_function_zero_iterscCsXtatjdtd}|jt|jddtjdttddt}tjd|tdddS)Nz_global_timer.inc())r*rrHrB)r*rr;r<zlocal_timer.inc())rZ _global_timerr r4r2 NameErrorr;locals)r r>Z local_timerrrrtest_timeit_globals_argssz#TestTimeit.test_timeit_globals_argscCst|_tj|||jd}i}|dur,t}n||d<|durBt}n||d<|jfi|}||jj|||jj |||||t |gdS)Nr*rrrepeatr<) rr8r r4DEFAULT_REPEATr=rSr$r rfloat)r r*rrSr<r>r? delta_timesrrrrSszTestTimeit.repeatcCs|j|j|jdddS)Nr)rSrSrDrErrrrtest_repeat_zero_repssz TestTimeit.test_repeat_zero_repscCs|j|j|jdddSrArWrrrrtest_repeat_zero_iterssz!TestTimeit.test_repeat_zero_iterscCs|j|j|jddddSNrHr)rSr<rWrrrrtest_repeat_few_reps_and_iterssz)TestTimeit.test_repeat_few_reps_and_iterscCs|j|j|jddddSrZ)rSr:rErrrrtest_repeat_callable_stmts z$TestTimeit.test_repeat_callable_stmtcCs|j|j|jddddSrZ)rSrDr9rrrrtest_repeat_callable_setups z%TestTimeit.test_repeat_callable_setupcCs|j|j|jddddSrZ)rSr:r9rrrr#test_repeat_callable_stmt_and_setups z.TestTimeit.test_repeat_callable_stmt_and_setupcCs(tj|j|jdtd}||gdS)Nr)rSr)r rSrDrErr$r rVrrrtest_repeat_function_zero_repssz)TestTimeit.test_repeat_function_zero_repscCs.tj|j|jdtd}||tdgdS)NrrMg)r rSrDrErr$rTr_rrrtest_repeat_function_zero_iterssz*TestTimeit.test_repeat_function_zero_iterscCsD|}|t|d||dd||d|dS)NrZ Traceback) splitlinesZ assertGreaterlenZ assertTrue startswith)r Z exc_stringZexpected_exc_nameZ exc_linesrrrassert_exc_stringszTestTimeit.assert_exc_stringcCsJt}td}z |Wn||Yn0||ddS)N1/0ZeroDivisionError)ioStringIOr r4 print_excrggetvalue)r sr>rrrtest_print_excs  zTestTimeit.test_print_excz"1 loop, best of 5: 1 sec per loop rcCs|durt|d}|dur g}n |dd}||jtjdd}t }tj||jdWdn1sr0Y|ddtjdd<| S)Nr )argsZ _wrap_timer) rappendrDsyspathrr mainrrm)r r switchesrrqZ orig_sys_pathrnrrrrun_mains   .zTestTimeit.run_maincCs"|jdgd}||tddS)Nz --bad-switchrvzk option --bad-switch not recognized use -h/--help for command line help rwr$rr rnrrrtest_main_bad_switchszTestTimeit.test_main_bad_switchcCs|jdd}||ddS)Ng@rpz$1 loop, best of 5: 5.5 sec per loop rwr$rzrrrtest_main_secondss zTestTimeit.test_main_secondscCs|jdd}||ddS)NgI +v?rpz'50 loops, best of 5: 5.5 msec per loop r|rzrrrtest_main_millisecondss z!TestTimeit.test_main_millisecondscCs |jddgd}||ddS)Ngh㈵>z-n100r rvz(100 loops, best of 5: 2.5 usec per loop r|rzrrrtest_main_microsecondssz!TestTimeit.test_main_microsecondscCs |jddgd}||ddS)N@-n35r$35 loops, best of 5: 2 sec per loop r|rzrrrtest_main_fixed_iterssz TestTimeit.test_main_fixed_iterscCs*|jdgdd}||dtddS)Nr)r-szprint("CustomSetup")r CustomSetup rrwr$rTrzrrrtest_main_setup s  zTestTimeit.test_main_setupcCs*|jdgdd}||dtddS)Nr)rrza = "CustomSetup"rzprint(a)rrrrrzrrrtest_main_multiple_setupss  z$TestTimeit.test_main_multiple_setupscCs |jddgd}||ddS)NN@z-r9rz#1 loop, best of 9: 60 sec per loop r|rzrrrtest_main_fixed_repsszTestTimeit.test_main_fixed_repscCs |jddgd}||ddS)Nrz-r-5rz#1 loop, best of 1: 60 sec per loop r|rzrrrtest_main_negative_repssz"TestTimeit.test_main_negative_repsrbz need __doc__cCs$|jdgd}||tjddS)Nz-hrx )rwr$r __doc__rzrrrtest_main_help szTestTimeit.test_main_helpcCs"|jdgd}||tddS)Nz-vrxz 1 loop -> 1 secs raw times: 1 sec, 1 sec, 1 sec, 1 sec, 1 sec 1 loop, best of 5: 1 sec per loop ryrzrrrtest_main_verbose'szTestTimeit.test_main_verbosecCs$|jddgd}||tddS)NgiUMu>z-vvra 1 loop -> 3e-05 secs 2 loops -> 6e-05 secs 5 loops -> 0.00015 secs 10 loops -> 0.0003 secs 20 loops -> 0.0006 secs 50 loops -> 0.0015 secs 100 loops -> 0.003 secs 200 loops -> 0.006 secs 500 loops -> 0.015 secs 1000 loops -> 0.03 secs 2000 loops -> 0.06 secs 5000 loops -> 0.15 secs 10000 loops -> 0.3 secs raw times: 300 msec, 300 msec, 300 msec, 300 msec, 300 msec 10000 loops, best of 5: 30 usec per loop ryrzrrrtest_main_very_verbose1sz!TestTimeit.test_main_very_verbosecCs|jdddgd}||d|jdddgd}||d|jdddgd}||d t"}|jddd gd}Wdn1s0Y||d dS) Ng~jth?z-uZsecrz)100 loops, best of 5: 0.003 sec per loop Zmsecz&100 loops, best of 5: 3 msec per loop Zusecz*100 loops, best of 5: 3e+03 usec per loop Zparsecz;Unrecognized unit. Please select nsec, usec, msec, or sec. )rwr$rrm)r Zunit_secZ unit_msecZ unit_usecerror_stringioinvalidrrrtest_main_with_time_unitGs2$ z#TestTimeit.test_main_with_time_unitcCsHt}|jdgd}Wdn1s*0Y||ddS)Nrhrxrirrwrgrmr rrnrrrtest_main_exception[s,zTestTimeit.test_main_exceptioncCsJt }|jddgd}Wdn1s,0Y||ddS)Nz-n1rhrxrirrrrrtest_main_exception_fixed_reps`s.z)TestTimeit.test_main_exception_fixed_repsP?cCs(t|d}tj|j|j|d}||S)NrprR)rr r4rDrE autorange)r r callbackrr>rrrres zTestTimeit.autorangecCs(|\}}||d||ddS)N@?rr$r num_loops time_takenrrrtest_autorangejs  zTestTimeit.test_autorangecCs,|jdd\}}||d||ddS)Nrrprrrrrrtest_autorange_secondos z TestTimeit.test_autorange_secondcCsndd}t }|j|d\}}Wdn1s40Y||d||dd}|||dS)NcSstd||dS)Nz {} {:.3f})printformat)abrrrrusz9TestTimeit.test_autorange_with_callback..callback)rrrzQ1 0.001 2 0.002 5 0.005 10 0.010 20 0.020 50 0.049 100 0.098 200 0.195 500 0.488 )rrr$rm)r rrnrrZexpectedrrrtest_autorange_with_callbackts.   z'TestTimeit.test_autorange_with_callback)NN)NN)rNN)rN);rrrr r%r'r(r)r6r7rErDr9r:r rFrIrJrKrLrNrQrSrXrYr[r\r]r^r`rargroZMAIN_DEFAULT_OUTPUTrwr{r}r~rrrrrrunittestZskipIfrsflagsoptimizerrrrrrrrrrrrrrr,sh           r__main__)r rrsrjtextwraprZ test.supportrrr=rTrZTestCaserrrurrrrs   ]