from pathlib import Path import sys PROJECT_ROOT = Path(__file__).resolve().parents[1] if str(PROJECT_ROOT) not in sys.path: sys.path.insert(0, str(PROJECT_ROOT)) from track_score_policy import required_track_score, track_passes_score_gate def test_required_track_score_is_stricter_for_switch_than_for_acquire(): acquire_floor = required_track_score( confirmed=False, is_switch_candidate=False, weak_reacq_guard=False, ) switch_floor = required_track_score( confirmed=True, is_switch_candidate=True, weak_reacq_guard=False, ) assert switch_floor > acquire_floor def test_weak_reacquire_uses_reacquire_floor(): reacquire_floor = required_track_score( confirmed=True, is_switch_candidate=False, weak_reacq_guard=True, ) assert track_passes_score_gate( track_score=reacquire_floor, confirmed=True, is_switch_candidate=False, weak_reacq_guard=True, ) assert not track_passes_score_gate( track_score=reacquire_floor - 0.01, confirmed=True, is_switch_candidate=False, weak_reacq_guard=True, ) def test_switch_candidate_must_clear_switch_floor(): switch_floor = required_track_score( confirmed=True, is_switch_candidate=True, weak_reacq_guard=False, ) assert track_passes_score_gate( track_score=switch_floor, confirmed=True, is_switch_candidate=True, weak_reacq_guard=False, ) assert not track_passes_score_gate( track_score=switch_floor - 0.01, confirmed=True, is_switch_candidate=True, weak_reacq_guard=False, )