Test: validazione contro i parametri veri di gen_data, report, CLI e regressioni
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cbcbb7122b
commit
b223cf5fdc
7 files changed
+281
-58
No files matched your search
+11
-36
@@ -1,47 +1,22 @@
|
||||
"""Integrazione sui CSV di gen_data (input/gen_{1,2,3}.csv, ignorati da git: i test sono saltati se mancano) e sulla CLI."""
|
||||
"""CLI su un CSV sintetico: file prodotti, correzione dei domini a mano, formule del report, codici di uscita."""
|
||||
|
||||
import pytest
|
||||
from conftest import RADICE
|
||||
from conftest import RADICE, scrivi_csv, segnale
|
||||
|
||||
from fitseg import cli, dati, domini
|
||||
from fitseg.analisi import analizza_domini
|
||||
from fitseg import cli
|
||||
|
||||
|
||||
def analizza(csv, cfg):
|
||||
t, serie = dati.leggi_csv(csv, cfg)
|
||||
ds = domini.proponi(t, serie, cfg)
|
||||
return ds, analizza_domini(t, serie, ds, cfg)
|
||||
|
||||
|
||||
def test_domini_su_csv_gen(csv_gen, cfg):
|
||||
ds, _ = analizza(csv_gen, cfg)
|
||||
assert [d["tipo"] for d in ds] == ["riposo", "riscaldamento", "raffreddamento", "riscaldamento", "raffreddamento",
|
||||
"riscaldamento", "raffreddamento"]
|
||||
|
||||
|
||||
def test_raffreddamento_tau_nominale(csv_gen, cfg):
|
||||
_, ris = analizza(csv_gen, cfg) # τ nominale 1/k = 15.9 s, k perturbato del 2 % per seed
|
||||
for vs in ris[-1]["serie"].values():
|
||||
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_raffreddamenti_intermedi_ereditano_costanti(csv_gen, cfg):
|
||||
_, ris = analizza(csv_gen, cfg)
|
||||
for nome in ris[0]["serie"]:
|
||||
finale = next(x for x in ris[-1]["serie"][nome]["fit"] if x["modello"] == "esp_decad")["parametri"]
|
||||
for i in (2, 4):
|
||||
fit = next(x for x in ris[i]["serie"][nome]["fit"] if x["modello"] == "esp_decad")
|
||||
assert fit["fissi"] == ["c", "tau"] and fit["parametri"]["tau"] == finale["tau"] and fit["parametri"]["A"] > 0
|
||||
def csv_sintetico(tmp_path):
|
||||
t, serie = segnale()
|
||||
csv = tmp_path / "sint.csv"
|
||||
scrivi_csv(csv, t, serie)
|
||||
return csv
|
||||
|
||||
|
||||
def test_cli_domini_e_analizza(tmp_path, capsys):
|
||||
csv = RADICE / "input/gen_1.csv"
|
||||
if not csv.exists():
|
||||
pytest.skip(f"{csv} assente")
|
||||
base = ["--config", str(RADICE / "config.toml"), "--output", str(tmp_path)]
|
||||
out = tmp_path / "gen_1"
|
||||
csv = csv_sintetico(tmp_path)
|
||||
base = ["--config", str(RADICE / "config.toml"), "--output", str(tmp_path / "out")]
|
||||
out = tmp_path / "out/sint"
|
||||
cli.main([*base, "domini", str(csv)])
|
||||
assert (out / "01_domini/domini.toml").exists() and (out / "01_domini/domini.png").exists()
|
||||
assert not (out / "03_report").exists() or not any((out / "03_report").iterdir()) # `domini` non fa nessun fit
|
||||
|
||||
Reference in new issue
Block a user