from pathlib import Path
import json
from evaluator import invariant_checks, evaluate
ROOT=Path(__file__).parent
cases=json.loads((ROOT/'fixtures/cases.json').read_text(encoding='utf-8'))['cases']
passed=0; total=0
for c in cases:
    got=evaluate(c['record']); checks=invariant_checks(c)
    ok=all(checks); passed+=sum(bool(x) for x in checks); total+=len(checks)
    print(f"{c['id']}: {'PASS' if ok else 'FAIL'} expected={c['expected']} got={got} checks={sum(checks)}/{len(checks)}")
print(f"TOTAL {passed}/{total}")
raise SystemExit(0 if passed==total else 1)
