Add event_data_capture/tests/test_core.py

This commit is contained in:
Mika 2026-02-27 10:56:51 +00:00
parent eaf1de3ade
commit 32672aceb3

View file

@ -0,0 +1,70 @@
import json
import pytest
from pathlib import Path
import src.event_data_capture.core as core
@pytest.fixture
def sample_event_data():
return core.EventData(warn_rate=0.15, unknown_rate=0.05)
@pytest.fixture
def tmp_event_input(tmp_path):
data = {
"pinned": [
{"warn_rate": 0.1, "unknown_rate": 0.02},
{"warn_rate": 0.2, "unknown_rate": 0.04}
],
"unpinned": [
{"warn_rate": 0.05, "unknown_rate": 0.01}
]
}
file_path = tmp_path / "run6_events.json"
with open(file_path, "w", encoding="utf-8") as f:
json.dump(data, f)
return file_path
def test_eventdata_creation(sample_event_data):
assert isinstance(sample_event_data, core.EventData)
assert sample_event_data.warn_rate == pytest.approx(0.15)
assert sample_event_data.unknown_rate == pytest.approx(0.05)
def test_eventdata_type_validation():
with pytest.raises(TypeError):
core.EventData(warn_rate="bad", unknown_rate=0.1)
def test_capture_event_data_returns_list(tmp_event_input, monkeypatch):
# Patch data file location expected within core.capture_event_data
target_stratum = "pinned"
# Prepare output file path to simulate data loading from tmp_event_input
monkeypatch.chdir(tmp_event_input.parent)
data = core.capture_event_data(target_stratum)
assert isinstance(data, list)
assert all(isinstance(d, core.EventData) for d in data)
assert all(0 <= d.warn_rate <= 1 for d in data)
assert all(0 <= d.unknown_rate <= 1 for d in data)
def test_capture_event_data_wrong_stratum(tmp_event_input, monkeypatch):
monkeypatch.chdir(tmp_event_input.parent)
with pytest.raises(KeyError):
core.capture_event_data("invalid_stratum")
def test_event_data_repr_and_str(sample_event_data):
repr_str = repr(sample_event_data)
string = str(sample_event_data)
assert "warn_rate" in repr_str
assert "unknown_rate" in repr_str
assert isinstance(string, str)
def test_event_data_equality():
d1 = core.EventData(0.1, 0.2)
d2 = core.EventData(0.1, 0.2)
d3 = core.EventData(0.2, 0.3)
assert d1 == d2
assert d1 != d3