|
|
import json |
|
|
from pathlib import Path |
|
|
import pytest |
|
|
|
|
|
from ylff.services.audit.audit_runner import load_measurements_json, run_audit |
|
|
from ylff.services.audit.models import ExternalReferenceMeasurement, OperatingRegime |
|
|
|
|
|
pytestmark = pytest.mark.spec |
|
|
|
|
|
|
|
|
def test_load_measurements_json_list(tmp_path: Path): |
|
|
p = tmp_path / "m.json" |
|
|
p.write_text( |
|
|
json.dumps( |
|
|
[ |
|
|
{ |
|
|
"regime": "indoor_constrained", |
|
|
"measurement_type": "tag_to_tag", |
|
|
"d_pred": 2.0, |
|
|
"d_star": 2.0, |
|
|
"sigma_d": 0.1, |
|
|
} |
|
|
] |
|
|
) |
|
|
) |
|
|
ms = load_measurements_json(p) |
|
|
assert len(ms) == 1 |
|
|
assert ms[0].regime == OperatingRegime.INDOOR_CONSTRAINED |
|
|
|
|
|
|
|
|
def test_load_measurements_json_wrapped(tmp_path: Path): |
|
|
p = tmp_path / "m.json" |
|
|
p.write_text( |
|
|
json.dumps( |
|
|
{ |
|
|
"measurements": [ |
|
|
{ |
|
|
"regime": "indoor_constrained", |
|
|
"measurement_type": "tag_to_tag", |
|
|
"d_pred": 2.0, |
|
|
"d_star": 2.0, |
|
|
"sigma_d": 0.1, |
|
|
} |
|
|
] |
|
|
} |
|
|
) |
|
|
) |
|
|
ms = load_measurements_json(p) |
|
|
assert len(ms) == 1 |
|
|
|
|
|
|
|
|
def test_run_audit_with_calibration_sets_summary_fields(): |
|
|
|
|
|
ms = [] |
|
|
for i in range(20): |
|
|
ms.append( |
|
|
ExternalReferenceMeasurement( |
|
|
capture_id=None, |
|
|
regime=OperatingRegime.INDOOR_CONSTRAINED, |
|
|
measurement_type="tag_to_tag", |
|
|
d_pred=2.0 + 0.02 + 0.001 * i, |
|
|
d_star=2.0, |
|
|
sigma_d=0.05 + 0.001 * i, |
|
|
) |
|
|
) |
|
|
res = run_audit(ms, calibrate=True, calibration_split_fraction=0.5) |
|
|
assert "calibrated" in res.summary |
|
|
assert res.summary["calibrated"] in (True, False) |
|
|
assert "hard_fail_passed" in res.summary |
|
|
if res.summary.get("calibrated"): |
|
|
assert "calibration_table" in res.summary |
|
|
assert "calibration_version" in res.summary |
|
|
|