37 lines
1.3 KiB
Python
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"]
|