Add ir_gain_test/tests/test_core.py

This commit is contained in:
Mika 2026-05-10 02:07:42 +00:00
parent ee97971f2b
commit dfb78f528b

View file

@ -0,0 +1,55 @@
import pytest
import pandas as pd
from ir_gain_test import core
@pytest.fixture
def sample_intensity_data():
return [
{"timestamp": "2024-06-12T20:00:00", "gain_value": 1.0, "intensity": 200.0},
{"timestamp": "2024-06-12T20:00:01", "gain_value": 2.0, "intensity": 400.0},
{"timestamp": "2024-06-12T20:00:02", "gain_value": 3.0, "intensity": 380.0},
{"timestamp": "2024-06-12T20:00:03", "gain_value": 4.0, "intensity": 390.0}
]
def test_analyze_ir_gain_basic(sample_intensity_data):
gains = [1.0, 2.0, 3.0, 4.0]
report = core.analyze_ir_gain(gains, sample_intensity_data)
assert isinstance(report, dict)
assert set(report.keys()) == {"mean_intensity", "signal_to_noise_ratio", "optimal_gain"}
assert pytest.approx(report["mean_intensity"], rel=1e-3) == 342.5
assert report["signal_to_noise_ratio"] > 0
assert 1.0 <= report["optimal_gain"] <= 4.0
def test_analyze_ir_gain_missing_data():
gains = [1.0, 2.0]
data = [
{"timestamp": "2024-06-12T20:00:00", "gain_value": 1.0, "intensity": 150.0},
# Missing gain 2.0 intentionally
]
report = core.analyze_ir_gain(gains, data)
assert isinstance(report, dict)
assert report["mean_intensity"] == pytest.approx(150.0)
assert report["signal_to_noise_ratio"] >= 0
def test_analyze_ir_gain_edge_zero_intensity():
gains = [1.0, 2.0, 3.0]
data = [
{"timestamp": "2024-06-12T20:00:00", "gain_value": 1.0, "intensity": 0.0},
{"timestamp": "2024-06-12T20:00:01", "gain_value": 2.0, "intensity": 0.0},
{"timestamp": "2024-06-12T20:00:02", "gain_value": 3.0, "intensity": 0.0},
]
report = core.analyze_ir_gain(gains, data)
assert report["mean_intensity"] == 0.0
assert report["signal_to_noise_ratio"] == 0.0
assert report["optimal_gain"] == pytest.approx(1.0)
def test_analyze_ir_gain_invalid_input():
with pytest.raises((TypeError, ValueError)):
core.analyze_ir_gain([], [])