16 lines
785 B
Python
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"])
|