From 32672aceb3f929e14fe5312c7bf6feaf7f4eadba Mon Sep 17 00:00:00 2001 From: Mika Date: Fri, 27 Feb 2026 10:56:51 +0000 Subject: [PATCH] Add event_data_capture/tests/test_core.py --- event_data_capture/tests/test_core.py | 70 +++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 event_data_capture/tests/test_core.py diff --git a/event_data_capture/tests/test_core.py b/event_data_capture/tests/test_core.py new file mode 100644 index 0000000..eb79a61 --- /dev/null +++ b/event_data_capture/tests/test_core.py @@ -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 \ No newline at end of file