Add robustness_check/tests/test_core.py
This commit is contained in:
parent
bc2817ff6c
commit
497bdc3e0c
1 changed files with 52 additions and 0 deletions
52
robustness_check/tests/test_core.py
Normal file
52
robustness_check/tests/test_core.py
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import pytest
|
||||
from robustness_check import core
|
||||
|
||||
@pytest.fixture
|
||||
def stable_runs():
|
||||
# Alle Runs zeigen ähnliche p95_value, keine Flip-Flops erwartet
|
||||
return [
|
||||
{"run_id": 1, "p95_value": 0.95, "pinned": True},
|
||||
{"run_id": 2, "p95_value": 0.96, "pinned": False},
|
||||
{"run_id": 3, "p95_value": 0.94, "pinned": True},
|
||||
{"run_id": 4, "p95_value": 0.95, "pinned": False},
|
||||
{"run_id": 5, "p95_value": 0.95, "pinned": True},
|
||||
]
|
||||
|
||||
@pytest.fixture
|
||||
def flipflop_runs():
|
||||
# Stark variierende p95_value-Werte simulieren instabile Entscheidungen
|
||||
return [
|
||||
{"run_id": 1, "p95_value": 0.90, "pinned": True},
|
||||
{"run_id": 2, "p95_value": 0.99, "pinned": False},
|
||||
{"run_id": 3, "p95_value": 0.91, "pinned": True},
|
||||
{"run_id": 4, "p95_value": 0.98, "pinned": False},
|
||||
{"run_id": 5, "p95_value": 0.92, "pinned": True},
|
||||
]
|
||||
|
||||
def test_check_robustness_stable(stable_runs):
|
||||
result = core.check_robustness(stable_runs)
|
||||
assert isinstance(result, core.RobustnessResult)
|
||||
assert result.k_value in (3, 5)
|
||||
assert result.flip_flops == 0
|
||||
assert 0.0 <= result.average_decision <= 1.0
|
||||
|
||||
def test_check_robustness_flipflop(flipflop_runs):
|
||||
result = core.check_robustness(flipflop_runs)
|
||||
assert isinstance(result, core.RobustnessResult)
|
||||
assert result.flip_flops >= 1
|
||||
assert 0.0 <= result.average_decision <= 1.0
|
||||
|
||||
def test_robustness_result_structure():
|
||||
obj = core.RobustnessResult(k_value=3, flip_flops=2, average_decision=0.7)
|
||||
assert hasattr(obj, 'k_value')
|
||||
assert hasattr(obj, 'flip_flops')
|
||||
assert hasattr(obj, 'average_decision')
|
||||
assert isinstance(obj.k_value, int)
|
||||
assert isinstance(obj.flip_flops, int)
|
||||
assert isinstance(obj.average_decision, float)
|
||||
|
||||
def test_check_robustness_invalid_input():
|
||||
with pytest.raises((TypeError, ValueError)):
|
||||
core.check_robustness(None)
|
||||
with pytest.raises((TypeError, ValueError)):
|
||||
core.check_robustness([{"run_id": "x", "p95_value": "wrong", "pinned": "no"}])
|
||||
Loading…
Reference in a new issue