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