aiBatteryLifeCycle / tests /data /test_loader.py
NeerajCodz's picture
Fix metrics loading and restructure pytest suite
536ba3d
from __future__ import annotations
import pandas as pd
import pytest
from src.data import loader
def test_parse_matlab_datevec():
dt = loader._parse_matlab_datevec("[2010. 7. 21. 15. 0. 35.093]")
assert dt.year == 2010 and dt.month == 7 and dt.day == 21
assert loader._parse_matlab_datevec("[]") is None
def test_load_cycle_csv_missing(monkeypatch, tmp_path):
monkeypatch.setattr(loader, "DATA_DIR", tmp_path)
with pytest.raises(FileNotFoundError):
loader.load_cycle_csv(1)
def test_load_discharge_capacities_and_battery_ids(monkeypatch):
fake_meta = pd.DataFrame(
{
"battery_id": ["B1", "B1", "B2", "B2"],
"type": ["discharge", "impedance", "discharge", "discharge"],
"Capacity": [2.0, 0.0, 1.9, -1.0],
"ambient_temperature": [24, 24, 43, 43],
"test_id": [1, 2, 1, 2],
"datetime": [None, None, None, None],
"Re": [0.05, 0.06, 0.07, 0.08],
"Rct": [0.08, 0.09, 0.1, 0.11],
}
)
monkeypatch.setattr(loader, "load_metadata", lambda **kwargs: fake_meta.copy())
dis = loader.load_discharge_capacities(drop_zero=True)
assert set(dis["battery_id"]) == {"B1", "B2"}
assert all(dis["Capacity"] > 0)
ids = loader.get_battery_ids()
assert ids == ["B1", "B2"]
def test_load_impedance_scalars(monkeypatch):
fake_meta = pd.DataFrame(
{
"battery_id": ["B1", "B1", "B2"],
"type": ["impedance", "impedance", "discharge"],
"Capacity": [2.0, 1.9, 1.8],
"ambient_temperature": [24, 24, 43],
"test_id": [1, 2, 1],
"datetime": [None, None, None],
"Re": [0.05, 0.06, 0.07],
"Rct": [0.08, 0.09, 0.1],
}
)
monkeypatch.setattr(loader, "load_metadata", lambda **kwargs: fake_meta.copy())
out = loader.load_impedance_scalars()
assert list(out["battery_id"].unique()) == ["B1"]
def test_get_eol_threshold_default():
assert loader.get_eol_threshold("B0005") in (loader.EOL_20PCT, loader.EOL_30PCT)
assert loader.get_eol_threshold("UNKNOWN") == loader.EOL_30PCT