from pathlib import Path
import json
from gate_rules import expected,expected_transfer,inspect_transfer
R=Path(__file__).parent
def load(p): return json.loads((R/p).read_text())
checks=[
('baseline.json','REVIEW_REQUIRED'),('missing_source_span.json','HOLD_SOURCE_SPAN'),('source_hash_mismatch.json','HOLD_SOURCE_SNAPSHOT'),('missing_occupation_mapping.json','HOLD_OCCUPATION_MAPPING'),('low_confidence_auto_gap.json','HOLD_LOW_CONFIDENCE_REVIEW'),('forced_normalization.json','HOLD_FORCED_NORMALIZATION'),('stale_taxonomy_mapping.json','HOLD_STALE_TAXONOMY_MAPPING'),('requirement_changed_without_recompute.json','HOLD_REQUIREMENT_RECOMPUTE'),('missing_learner_evidence.json','HOLD_LEARNER_EVIDENCE'),('missing_provenance.json','HOLD_PROVENANCE'),('same_title_new_employer_reused_map.json','HOLD_BASELINE_ORACLE_REUSE')]
for i,(n,e) in enumerate(checks,1):
 a=expected(load('fixtures/'+n)); assert a==e,(n,a,e); print('PASS',i,n,a)
t=load('transfer/transfer_fixture.json'); assert expected_transfer(t)=='REVIEW_REQUIRED'; print('PASS 12 transfer',expected_transfer(t))
b=load('transfer/transfer_baseline_oracle_reuse.json'); assert expected_transfer(b)=='HOLD_BASELINE_ORACLE_REUSE'; assert 'BASELINE_ORACLE_REUSE_FORBIDDEN' in inspect_transfer(b)
print('12/12 PASS')
