Spaces:
Sleeping
Sleeping
| 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 | |