Spaces:
Sleeping
Sleeping
import time | |
from unittest.mock import Mock | |
import pytest | |
from ding.utils.autolog import TickTime, NaturalTime, TimeProxy | |
class TestNaturalTime: | |
def test_natural_time(self): | |
_time = NaturalTime() | |
assert abs(_time.time() - time.time()) < 0.2 | |
def test_natural_time_for_100k_times(self): | |
for i in range(0, 100000): | |
_time = NaturalTime() | |
assert abs(_time.time() - time.time()) < 0.2 | |
def test_natural_time_with_mad_system(self): | |
_time_func, time.time = time.time, Mock(side_effect=[1.5, 1.8, 2.0, 2.0, 1.75, 1.9, 2.2]) | |
try: | |
_time = NaturalTime() | |
assert _time.time() == 1.5 | |
assert _time.time() == 1.8 | |
assert _time.time() == 2.0 | |
assert _time.time() == 2.0 | |
assert _time.time() == 2.0 | |
assert _time.time() == 2.0 | |
assert _time.time() == 2.2 | |
finally: | |
time.time = _time_func | |
class TestTickTime: | |
def test_tick_bare(self): | |
_time = TickTime() | |
assert _time.time() == 0 | |
assert _time.step() == 1 | |
assert _time.time() == 1 | |
assert _time.step(2) == 3 | |
assert _time.time() == 3 | |
with pytest.raises(TypeError): | |
_time.step(0.9) | |
with pytest.raises(ValueError): | |
_time.step(0) | |
def test_tick_init(self): | |
_time = TickTime(3) | |
assert _time.time() == 3 | |
assert _time.step() == 4 | |
assert _time.time() == 4 | |
assert _time.step(2) == 6 | |
assert _time.time() == 6 | |
with pytest.raises(TypeError): | |
_time.step(0.9) | |
with pytest.raises(ValueError): | |
_time.step(0) | |
class TestTimeProxy: | |
def test_time_proxy_for_tick_time(self): | |
_time = TickTime() | |
_proxy = TimeProxy(_time) | |
assert _proxy.time() == 0 | |
assert _proxy.current_time() == 0 | |
assert not _proxy.is_frozen | |
_time.step() | |
assert _proxy.time() == 1 | |
assert _proxy.current_time() == 1 | |
assert not _proxy.is_frozen | |
_proxy.freeze() | |
_time.step(2) | |
assert _proxy.time() == 1 | |
assert _proxy.current_time() == 3 | |
assert _proxy.is_frozen | |
_time.step() | |
assert _proxy.time() == 1 | |
assert _proxy.current_time() == 4 | |
assert _proxy.is_frozen | |
_proxy.unfreeze() | |
assert _proxy.time() == 4 | |
assert _proxy.current_time() == 4 | |
assert not _proxy.is_frozen | |
def test_time_proxy_frozen_for_tick_time(self): | |
_time = TickTime() | |
_proxy = TimeProxy(_time, frozen=True) | |
assert _proxy.time() == 0 | |
assert _proxy.current_time() == 0 | |
assert _proxy.is_frozen | |
_time.step() | |
assert _proxy.time() == 0 | |
assert _proxy.current_time() == 1 | |
assert _proxy.is_frozen | |
_time.step(2) | |
assert _proxy.time() == 0 | |
assert _proxy.current_time() == 3 | |
assert _proxy.is_frozen | |
_time.step() | |
assert _proxy.time() == 0 | |
assert _proxy.current_time() == 4 | |
assert _proxy.is_frozen | |
_proxy.unfreeze() | |
assert _proxy.time() == 4 | |
assert _proxy.current_time() == 4 | |
assert not _proxy.is_frozen | |