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_canonical','TAXONOMY_REVIEW_REQUIRED'),('dynamic_event_name','HOLD_DYNAMIC_EVENT_NAME'),('missing_observed_timestamp','HOLD_TIMESTAMP_EVIDENCE'),('rename_without_migration','HOLD_MIGRATION_MISSING'),('mastery_from_completion','HOLD_MASTERY_INFERENCE'),('missing_schema_version','HOLD_VERSION_EVIDENCE'),('missing_producer_version','HOLD_VERSION_EVIDENCE'),('missing_privacy_class','HOLD_PRIVACY_CLASS'),('missing_provenance','HOLD_PROVENANCE'),('meaning_drift_without_version','HOLD_SCHEMA_OR_MEANING_DRIFT'),('derived_metric_overwrites_raw','HOLD_DERIVATION_PROVENANCE')]
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)=='TRANSFER_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')
