"""Verifiche sui CSV generati da gen_data (dati/gen_.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" @pytest.mark.parametrize("seed", SEEDS) def test_riscaldamento_esponenziale_con_costanti_del_raffreddamento(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: raff = next(x for x in ris[-1]["serie"][nome]["fit"] if x["modello"] == "esp_decad")["parametri"] for r in ris[1:3]: vs = r["serie"][nome] assert vs["scelta"] == "esp_decad" fit = next(x for x in vs["fit"] if x["modello"] == "esp_decad") assert fit["fissi"] == ["c", "tau"] assert fit["parametri"]["tau"] == raff["tau"] and fit["parametri"]["c"] == raff["c"] assert fit["parametri"]["A"] > 0