from gate_rules import expected,expected_transfer,inspect_transfer
import json
from pathlib import Path
R=Path(__file__).parent
def load(rel): return json.loads((R/rel).read_text())
cases=[('baseline','HUMAN_REVIEW_REQUIRED'),('missing_job_relevance','HOLD_JOB_RELEVANCE_EVIDENCE'),('unresolved_proxy_risk','HOLD_PROXY_RISK'),('missing_accommodation','HOLD_ACCOMMODATION_PATH'),('material_slice_error','HOLD_FAIRNESS_SLICE_REVIEW'),('generic_reason_without_evidence','HOLD_EXPLANATION_EVIDENCE'),('autonomous_adverse','HOLD_AUTONOMOUS_ADVERSE_DECISION'),('missing_uncertainty','HOLD_UNCERTAINTY'),('missing_provenance','HOLD_PROVENANCE'),('sensitive_policy_violation','HOLD_SENSITIVE_ATTRIBUTE_POLICY'),('eligibility_ranking_collapse','HOLD_ELIGIBILITY_RANKING_BOUNDARY')]
for n,want in cases:
 got=expected(load('fixtures/'+n+'.json')); assert got==want,(n,got,want); print('PASS',n,got)
x=load('transfer/transfer_fixture.json'); assert expected_transfer(x)=='LOW_STAKES_REVIEW_REQUIRED'; print('PASS transfer',expected_transfer(x))
y=load('transfer/transfer_baseline_oracle_reuse.json'); assert expected_transfer(y)=='HOLD_BASELINE_ORACLE_REUSE'; assert 'BASELINE_ORACLE_REUSE_FORBIDDEN' in inspect_transfer(y); print('PASS transfer_oracle_reuse',expected_transfer(y))
print('12/12 PASS')
