Add retry_mechanism/tests/test_core.py

This commit is contained in:
Mika 2026-03-06 10:41:06 +00:00
parent 2e29fb9bed
commit a1f9fca6c5

View file

@ -0,0 +1,55 @@
import pytest
import time
from types import SimpleNamespace
from src.retry_mechanism import core
@pytest.fixture(autouse=True)
def patch_sleep(monkeypatch):
# Patch time.sleep to avoid delay
monkeypatch.setattr(time, 'sleep', lambda s: None)
def test_retry_if_negative_dt_no_retry():
dt = 0.5
result = core.retry_if_negative_dt(dt)
assert isinstance(result, float)
assert result == pytest.approx(0.5)
def test_retry_if_negative_dt_with_retry(monkeypatch):
calls = SimpleNamespace(count=0)
def fake_measure():
calls.count += 1
# First call negative, second call positive
return -1.0 if calls.count == 1 else 0.2
monkeypatch.setattr(core, '_measure_dt', fake_measure)
val = core.retry_if_negative_dt(-0.5)
assert isinstance(val, float)
assert val >= 0.0
assert calls.count == 2
def test_retry_if_negative_dt_second_negative(monkeypatch):
calls = SimpleNamespace(count=0)
def always_negative():
calls.count += 1
return -0.5
monkeypatch.setattr(core, '_measure_dt', always_negative)
val = core.retry_if_negative_dt(-1.0)
assert isinstance(val, float)
# even if still negative after retry, returns that value
assert val < 0
assert calls.count == 2
def test_input_type_validation():
with pytest.raises(TypeError):
_ = core.retry_if_negative_dt('invalid')