cosmosmesh-privacy-preservi.../tests/test_energi_bridge.py

37 lines
1.3 KiB
Python

import pytest
from cosmosmesh_privacy_preserving_federated.energi_bridge import (
LocalProblemEP,
SharedVariableEP,
DualVariableEP,
PlanDeltaEP,
EnergiBridge,
)
def test_energi_bridge_basic_encoding():
lp = LocalProblemEP(
problem_id="lp-001",
assets=["rover-1", "drone-A"],
objective="maximize_task_completion",
constraints=["energy<=1000", "time_window=08:00-12:00"],
data_contracts={"Telemetry": {"version": 1}},
)
sv1 = SharedVariableEP(channel="energy_budget", version=1, payload={"value": 42})
dv1 = DualVariableEP(channel="lag_energy", version=1, payload={"value": 0.5})
delta = PlanDeltaEP(delta_id="d-1", changes={"rover-1": {"move_to": "A"}}, timestamp=123456.0)
bridge = EnergiBridge()
ir = bridge.to_ir(lp, [sv1], [dv1], [delta])
# Basic shape checks
assert ir["Version"] == "0.1"
assert "Objects" in ir
assert ir["Objects"]["LocalProblem"]["problem_id"] == "lp-001"
assert "Morphisms" in ir
# We expect at least one SharedVariable and one DualVariable in the Morphisms list
morphs = ir["Morphisms"]
assert any("SharedVariable" in m.get("Morphisms", {}) for m in morphs) or any("DualVariable" in m.get("Morphisms", {}) for m in morphs)
assert "PlanDeltas" in ir["Objects"]