40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
"""Verifiche sui CSV generati da gen_data (dati/gen_<seed>.csv, config d'esempio: tau di raffreddamento nominale 15.9 s)."""
|
|||
|
|
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from fitseg import config, dati, domini
|
||
|
|
from fitseg.pipeline import analizza_domini
|
||
|
|
|
||
|
|
RADICE = Path(__file__).parent.parent
|
||
|
|
SEEDS = [1, 2, 3]
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture(scope="module")
|
||
|
|
def cfg():
|
||
|
|
return config.leggi(RADICE / "config.toml")
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.mark.parametrize("seed", SEEDS)
|
||
|
|
def test_domini_riposo_gradini_raffreddamento(cfg, seed):
|
||
|
|
t, serie = dati.leggi_csv(RADICE / f"dati/gen_{seed}.csv", cfg)
|
||
|
|
tipi = [d["tipo"] for d in domini.proponi(t, serie, cfg)]
|
||
|
|
assert tipi == ["riposo", "riscaldamento", "riscaldamento", "raffreddamento"]
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.mark.parametrize("seed", SEEDS)
|
||
|
|
def test_raffreddamento_esponenziale(cfg, seed):
|
||
|
|
t, serie = dati.leggi_csv(RADICE / f"dati/gen_{seed}.csv", cfg)
|
||
|
|
ris = analizza_domini(t, serie, domini.proponi(t, serie, cfg), cfg)
|
||
|
|
for nome in serie:
|
||
|
|
vs = ris[-1]["serie"][nome]
|
||
|
|
assert vs["scelta"] == "esp_decad"
|
||
|
|
fit = next(x for x in vs["fit"] if x["modello"] == "esp_decad")
|
||
|
|
assert fit["parametri"]["tau"] == pytest.approx(15.9, rel=0.1)
|
||
|
|
|
||
|
|
|
||
|
|
def test_riposo_costante(cfg):
|
||
|
|
t, serie = dati.leggi_csv(RADICE / "dati/gen_1.csv", cfg)
|
||
|
|
ris = analizza_domini(t, serie, domini.proponi(t, serie, cfg), cfg)
|
||
|
|
assert ris[0]["serie"]["dT_C"]["scelta"] == "costante"
|