guardrail-space-verifiable-.../tests/test_guard.py

16 lines
785 B
Python

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"])