46 lines
2.1 KiB
Python
46 lines
2.1 KiB
Python
"""CLI su un CSV sintetico: file prodotti, correzione dei domini a mano, formule del report, codici di uscita."""
|
|
|
|
import pytest
|
|
from conftest import RADICE, scrivi_csv, segnale
|
|
|
|
from fitseg import cli
|
|
|
|
|
|
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 = 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
|
|
cli.main([*base, "analizza", str(csv), "--domini", str(out / "01_domini/domini.toml")]) # domini corretti a mano
|
|
for f in ("02_sovrapposizione/sovrapposizione_T_C.png", "02_sovrapposizione/dominio7_T_C.png",
|
|
"03_report/report.md", "03_report/risultati.json"):
|
|
assert (out / f).exists(), f
|
|
report = (out / "03_report/report.md").read_text()
|
|
assert "../01_domini/domini.png" in report and "../02_sovrapposizione/dominio7_T_C.png" in report
|
|
assert "dominio 7 raffreddamento" in capsys.readouterr().out
|
|
# grandezze matematiche in LaTeX, con i dollari bilanciati su ogni riga
|
|
for riga in report.splitlines():
|
|
assert riga.count("$") % 2 == 0, riga
|
|
for formula in (r"$y = c + A\,e^{-t'/\tau}$", r"$t' = t - t_0$", r"$\sigma_\text{rumore}", r"$R^2 = ", r"$\rho_1 = ",
|
|
r"$\Delta = +", r"$\Delta\mathrm{AICc}", r"$$ y = "):
|
|
assert formula in report, formula
|
|
|
|
|
|
def test_cli_errori(tmp_path):
|
|
base = ["--config", str(RADICE / "config.toml"), "--output", str(tmp_path)]
|
|
with pytest.raises(SystemExit) as e:
|
|
cli.main([*base, "domini", str(tmp_path / "non_esiste.csv")])
|
|
assert e.value.code == 4
|
|
with pytest.raises(SystemExit) as e:
|
|
cli.main(["--config", "/non/esiste.toml", "domini", "x.csv"])
|
|
assert e.value.code == 3
|