Add artifact.1/tests/test_core.py
This commit is contained in:
parent
fb7d47250d
commit
4afdbc276f
1 changed files with 78 additions and 0 deletions
78
artifact.1/tests/test_core.py
Normal file
78
artifact.1/tests/test_core.py
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
import pytest
|
||||
import pandas as pd
|
||||
from scipy.stats import mannwhitneyu
|
||||
|
||||
from src.artifact_1 import core
|
||||
|
||||
@pytest.fixture
|
||||
def sample_run_data_valid():
|
||||
return {
|
||||
"timestamp": "2024-06-10T10:00:00Z",
|
||||
"pinned_flag": True,
|
||||
"runtime": 120.5,
|
||||
"seqcount_retry_count": 2,
|
||||
"mischfenster_dauer": 3.4
|
||||
}
|
||||
|
||||
@pytest.fixture
|
||||
def sample_run_data_unpinned():
|
||||
return {
|
||||
"timestamp": "2024-06-10T10:02:00Z",
|
||||
"pinned_flag": False,
|
||||
"runtime": 122.0,
|
||||
"seqcount_retry_count": 5,
|
||||
"mischfenster_dauer": 7.2
|
||||
}
|
||||
|
||||
def test_calculate_metrics_basic(sample_run_data_valid):
|
||||
result = core.calculate_metrics(sample_run_data_valid)
|
||||
assert isinstance(result, dict)
|
||||
assert "retry_free_rate" in result
|
||||
assert "mischfenster_stats" in result
|
||||
assert "correlations" in result
|
||||
# retry free rate sanity
|
||||
assert 0.0 <= result["retry_free_rate"] <= 1.0
|
||||
# mischfenster_stats contains expected keys
|
||||
stats = result["mischfenster_stats"]
|
||||
for key in ("p50", "p95", "max"):
|
||||
assert key in stats
|
||||
# correlations sanity check
|
||||
assert isinstance(result["correlations"], dict)
|
||||
|
||||
def test_calculate_metrics_invalid_input():
|
||||
invalid_data = {
|
||||
"timestamp": "2024-06-10T10:00:00Z",
|
||||
# missing required fields
|
||||
}
|
||||
with pytest.raises((KeyError, ValueError, TypeError)):
|
||||
core.calculate_metrics(invalid_data)
|
||||
|
||||
def test_run_mann_whitney_test_basic():
|
||||
data1 = [1.2, 1.4, 1.6, 1.8, 2.0]
|
||||
data2 = [2.1, 2.3, 2.5, 2.7, 2.9]
|
||||
p_value = core.run_mann_whitney_test(data1, data2)
|
||||
assert isinstance(p_value, float)
|
||||
assert 0.0 <= p_value <= 1.0
|
||||
|
||||
def test_run_mann_whitney_test_identical_data():
|
||||
data = [1.0, 1.1, 1.2, 1.3]
|
||||
p_value = core.run_mann_whitney_test(data, data.copy())
|
||||
assert pytest.approx(p_value, rel=1e-6) == 1.0
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"data1,data2",
|
||||
[
|
||||
([1, 2, 3], [4, 5, 6]),
|
||||
([10.0, 10.5, 10.8], [9.7, 9.8, 9.9]),
|
||||
]
|
||||
)
|
||||
def test_run_mann_whitney_test_symmetry(data1, data2):
|
||||
p1 = core.run_mann_whitney_test(data1, data2)
|
||||
p2 = core.run_mann_whitney_test(data2, data1)
|
||||
assert pytest.approx(p1, rel=1e-6) == p2
|
||||
|
||||
def test_run_mann_whitney_test_invalid_input():
|
||||
with pytest.raises((ValueError, TypeError)):
|
||||
core.run_mann_whitney_test([], [1, 2, 3])
|
||||
with pytest.raises((ValueError, TypeError)):
|
||||
core.run_mann_whitney_test([1, 2, 3], [None, 5])
|
||||
Loading…
Reference in a new issue