import unittest from guardrail_space.contract import SafetyContract from guardrail_space.guard import GuardModule from guardrail_space.shadow_planner import ShadowPlanner from guardrail_space.policy import PolicyEngine class TestGuardModule(unittest.TestCase): def test_guard_allows_and_vetos(self): c = SafetyContract(contract_id="guard-001", pre_conditions=["state['speed'] <= 1.0"], budgets={"time": 10.0}, collision_rules=["state['distance_to_obstacle'] >= 0"], post_conditions=[]) g = GuardModule(c, ShadowPlanner()) state = {"speed": 0.8, "distance_to_obstacle": 5} plan = {"action": "move", "costs": {"time": 2.0}, "speed": 0.8} res = g.evaluate_plan(plan, state) self.assertIn(res["decision"], ["allow", "modify", "veto"])