Add retry_mechanism/tests/test_core.py
This commit is contained in:
parent
2e29fb9bed
commit
a1f9fca6c5
1 changed files with 55 additions and 0 deletions
55
retry_mechanism/tests/test_core.py
Normal file
55
retry_mechanism/tests/test_core.py
Normal 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')
|
||||||
Loading…
Reference in a new issue