def test_gibbs_chain_run_for_minute(line_posterior): expected_delta = datetime.timedelta(minutes=1) auto_tick_start = datetime.datetime.now() auto_tick = (datetime.datetime.now() - auto_tick_start).seconds start_time = datetime.datetime.now() chain = GibbsChain(posterior=line_posterior, start=[0.5, 0.1]) chain.run_for(**timedelta_to_days_hours_minutes(expected_delta)) end_time = datetime.datetime.now() # Extra 15s because two calls to `now()` in this function, plus initial # call to `time()` in `run_for` extra_delta = datetime.timedelta(seconds=4 * auto_tick) assert end_time - start_time == expected_delta + extra_delta
def test_gibbs_chain_run_for_day_hour_minute(line_posterior): expected_delta = datetime.timedelta(days=1, hours=2, minutes=3) auto_tick_start = datetime.datetime.now() auto_tick = (datetime.datetime.now() - auto_tick_start).seconds start_time = datetime.datetime.now() chain = GibbsChain(posterior=line_posterior, start=[0.5, 0.1]) chain.run_for(**timedelta_to_days_hours_minutes(expected_delta)) end_time = datetime.datetime.now() # Extra 15s because two calls to `now()` in this function, plus initial # call to `time()` in `run_for` extra_delta = datetime.timedelta(seconds=5 * auto_tick) assert end_time - start_time >= expected_delta assert end_time - start_time <= expected_delta + extra_delta # Probably get less due to multiple calls to `time()` per step assert chain.n <= expected_delta.total_seconds() // auto_tick