Add ir_gain_test/tests/test_core.py
This commit is contained in:
parent
ee97971f2b
commit
dfb78f528b
1 changed files with 55 additions and 0 deletions
55
ir_gain_test/tests/test_core.py
Normal file
55
ir_gain_test/tests/test_core.py
Normal 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([], [])
|
||||
Loading…
Reference in a new issue