import json
from pathlib import Path
from starter import evaluate
P=Path(__file__).resolve().parent
cases=json.loads((P/'fixtures/cases.json').read_text(encoding='utf-8'))['cases']
allowed={'LINKED','KEEP_SEPARATE','REVIEW_REQUIRED'}
for c in cases:
    r=evaluate(c)
    assert isinstance(r,dict)
    assert r.get('decision') in allowed
    assert isinstance(r.get('reason'),str) and r['reason'].strip()
    assert r.get('candidate_pair')==c.get('candidate_pair')
    assert isinstance(r.get('confidence_score'),(int,float)) and 0<=r['confidence_score']<=1
    assert r.get('confidence_band') in {'LOW','MEDIUM','HIGH'}
    if r['decision']=='LINKED':
        assert r.get('reversible_link') is True and r.get('unmerge_evidence')
print(f'PASS learner shape/safety checks on {len(cases)} cases')
