idea15-edgemind-verifiable-.../tests/test_energi_bridge.py

65 lines
2.4 KiB
Python

import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "src")))
from idea15_edgemind_verifiable_onboard.energi_bridge import (
EnergiBridge,
LocalProblem,
SharedSignals,
PlanDelta,
AdapterContract,
AuditLog,
)
def test_map_local_problem_basic():
lp = LocalProblem(asset_id="robot-01", tasks=["navigate"], budgets={"energy": 10.0})
eb = EnergiBridge()
canon = eb.map_local_problem(lp)
assert canon["canonical"] == "LocalProblem"
assert canon["asset_id"] == "robot-01"
assert canon["tasks"] == ["navigate"]
assert canon["budgets"]["energy"] == 10.0
def test_map_shared_signals_and_adapter_registration():
eb = EnergiBridge()
ad = AdapterContract(name="gateway", version="0.1.0")
eb.register_adapter(ad)
assert eb.get_adapter("gateway").version == "0.1.0"
signals = SharedSignals(version=1, data={"latency": 12})
canon = eb.map_shared_signals(signals)
assert canon["canonical"] == "SharedSignals"
assert canon["version"] == 1
assert canon["data"]["latency"] == 12
def test_map_plan_delta_basic():
delta = PlanDelta(timestamp=123.456, delta_actions=["move_forward"], safety_tags=["ok"])
eb = EnergiBridge()
canon = eb.map_plan_delta(delta)
assert canon["canonical"] == "PlanDelta"
assert canon["timestamp"] == 123.456
assert canon["delta_actions"] == ["move_forward"]
assert canon["safety_tags"] == ["ok"]
def test_map_audit_log_and_export_envelope():
eb = EnergiBridge()
log = AuditLog(entries=["started", "validated", "completed"])
audit_can = eb.map_audit_log(log)
assert audit_can["canonical"] == "AuditLog"
assert audit_can["entries"] == ["started", "validated", "completed"]
# Envelope export with all components
lp = LocalProblem(asset_id="robot-02", tasks=["navigate"], budgets={"energy": 5.0})
delta = PlanDelta(timestamp=2.5, delta_actions=["turn"], safety_tags=["ok"])
signals = SharedSignals(version=2, data={"latency": 5})
envelope = eb.export_envelope(lp=lp, delta=delta, signals=signals, log=log)
assert envelope["canonical"] == "Envelope"
assert envelope["LocalProblem"]["asset_id"] == "robot-02"
assert envelope["PlanDelta"]["timestamp"] == 2.5
assert envelope["SharedSignals"]["version"] == 2
assert envelope["AuditLog"]["entries"] == ["started", "validated", "completed"]