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