def test_TicTocTimer_tictoc(self): SLEEP = 0.1 RES = 0.01 # resolution (seconds): 1/10 the sleep abs_time = time.time() timer = TicTocTimer() time.sleep(SLEEP) with capture_output() as out: start_time = time.time() timer.tic(None) self.assertEqual(out.getvalue(), '') with capture_output() as out: start_time = time.time() timer.tic() self.assertRegex( out.getvalue(), r'\[ [.0-9]+\] Resetting the tic/toc delta timer' ) time.sleep(SLEEP) ref = time.time() with capture_output() as out: delta = timer.toc() self.assertAlmostEqual(ref - start_time, delta, delta=RES) self.assertAlmostEqual(0, timer.toc(None), delta=RES) self.assertRegex( out.getvalue(), r'\[\+ [.0-9]+\] .* in test_TicTocTimer_tictoc' ) ref = time.time() with capture_output() as out: total = timer.toc(delta=False) self.assertAlmostEqual(ref - abs_time, total, delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\] .* in test_TicTocTimer_tictoc' ) ref *= -1 time.sleep(SLEEP) ref += time.time() timer.stop() cumul_stop1 = timer.toc(None) self.assertAlmostEqual(ref, cumul_stop1, delta=RES) with self.assertRaisesRegex( RuntimeError, 'Stopping a TicTocTimer that was already stopped'): timer.stop() time.sleep(SLEEP) cumul_stop2 = timer.toc(None) self.assertEqual(cumul_stop1, cumul_stop2) ref -= time.time() timer.start() time.sleep(SLEEP) # Note: pypy and osx (py3.8) on GHA occasionally have timing # differences of >0.01s for the following tests if 'pypy_version_info' in dir(sys) or sys.platform == 'darwin': RES *= 2 with capture_output() as out: ref += time.time() timer.stop() delta = timer.toc() self.assertAlmostEqual(ref, delta, delta=RES) #self.assertAlmostEqual(0, timer.toc(None), delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\| 1\] .* in test_TicTocTimer_tictoc' ) with capture_output() as out: # Note that delta is ignored if the timer is a cumulative timer total = timer.toc(delta=False) self.assertAlmostEqual(delta, total, delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\| 1\] .* in test_TicTocTimer_tictoc' )
def test_TicTocTimer_tictoc(self): RES = 1e-2 # resolution (seconds) timer = TicTocTimer() abs_time = time.time() time.sleep(0.1) with capture_output() as out: start_time = time.time() timer.tic(None) self.assertEqual(out.getvalue(), '') with capture_output() as out: start_time = time.time() timer.tic() self.assertRegex( out.getvalue(), r'\[ [.0-9]+\] Resetting the tic/toc delta timer' ) time.sleep(0.1) with capture_output() as out: delta = timer.toc() self.assertAlmostEqual(time.time() - start_time, delta, delta=RES) self.assertAlmostEqual(0, timer.toc(None), delta=RES) self.assertRegex( out.getvalue(), r'\[\+ [.0-9]+\] .* in test_TicTocTimer_tictoc' ) with capture_output() as out: total = timer.toc(delta=False) self.assertAlmostEqual(time.time() - abs_time, total, delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\] .* in test_TicTocTimer_tictoc' ) ref = 0 ref -= time.time() time.sleep(0.1) timer.stop() ref += time.time() cumul_stop1 = timer.toc(None) with self.assertRaisesRegex( RuntimeError, 'Stopping a TicTocTimer that was already stopped'): timer.stop() time.sleep(0.1) cumul_stop2 = timer.toc(None) self.assertEqual(cumul_stop1, cumul_stop2) timer.start() ref -= time.time() time.sleep(0.1) # Note: pypy on GHA frequently has timing differences of >0.02s # for the following tests RES = 5e-2 with capture_output() as out: delta = timer.toc() timer.stop() ref += time.time() self.assertAlmostEqual(ref, delta, delta=RES) #self.assertAlmostEqual(0, timer.toc(None), delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\| 1\] .* in test_TicTocTimer_tictoc' ) with capture_output() as out: # Note that delta is ignored if the timer is a cumulative timer total = timer.toc(delta=False) self.assertAlmostEqual(delta, total, delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\| 1\] .* in test_TicTocTimer_tictoc' )
def test_TicTocTimer_tictoc(self): SLEEP = 0.1 RES = 0.02 # resolution (seconds): 1/5 the sleep # Note: pypy on GHA occasionally has timing # differences of >0.04s if 'pypy_version_info' in dir(sys): RES *= 2.5 # Note: previously, OSX on GHA also had significantly nosier tests # if sys.platform == 'darwin': # RES *= 2 abs_time = time.perf_counter() timer = TicTocTimer() time.sleep(SLEEP) with capture_output() as out: start_time = time.perf_counter() timer.tic(None) self.assertEqual(out.getvalue(), '') with capture_output() as out: start_time = time.perf_counter() timer.tic() self.assertRegex( out.getvalue(), r'\[ [.0-9]+\] Resetting the tic/toc delta timer' ) time.sleep(SLEEP) ref = time.perf_counter() with capture_output() as out: delta = timer.toc() self.assertAlmostEqual(ref - start_time, delta, delta=RES) self.assertAlmostEqual(0, timer.toc(None), delta=RES) self.assertRegex( out.getvalue(), r'\[\+ [.0-9]+\] .* in test_TicTocTimer_tictoc' ) ref = time.perf_counter() with capture_output() as out: total = timer.toc(delta=False) self.assertAlmostEqual(ref - abs_time, total, delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\] .* in test_TicTocTimer_tictoc' ) ref *= -1 time.sleep(SLEEP) ref += time.perf_counter() timer.stop() cumul_stop1 = timer.toc(None) self.assertAlmostEqual(ref, cumul_stop1, delta=RES) with self.assertRaisesRegex( RuntimeError, 'Stopping a TicTocTimer that was already stopped'): timer.stop() time.sleep(SLEEP) cumul_stop2 = timer.toc(None) self.assertEqual(cumul_stop1, cumul_stop2) ref -= time.perf_counter() timer.start() time.sleep(SLEEP) with capture_output() as out: ref += time.perf_counter() timer.stop() delta = timer.toc() self.assertAlmostEqual(ref, delta, delta=RES) #self.assertAlmostEqual(0, timer.toc(None), delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\| 1\] .* in test_TicTocTimer_tictoc' ) with capture_output() as out: # Note that delta is ignored if the timer is a cumulative timer total = timer.toc(delta=False) self.assertAlmostEqual(delta, total, delta=RES) self.assertRegex( out.getvalue(), r'\[ [.0-9]+\| 1\] .* in test_TicTocTimer_tictoc' )