gridresilience-studio-offli.../tests/test_energi_bridge.py

45 lines
1.6 KiB
Python

import pytest
from gridresilience_studio.bridge import EnergiBridge
def test_map_functions_return_expected_types():
bridge = EnergiBridge()
lp = {"id": "lp1"}
sm = {"forecast": 12}
pd = {"actions": ["start"]}
# Support environments where API surface may differ across install vs source
if hasattr(bridge, "map_local_problem"):
assert bridge.map_local_problem(lp)["type"] == "Objects"
elif hasattr(bridge, "_map_local_problem"):
assert bridge._map_local_problem(lp)["type"] == "Objects"
else:
pytest.skip("map_local_problem not available on EnergiBridge")
if hasattr(bridge, "map_shared_signals"):
assert bridge.map_shared_signals(sm)["type"] == "Morphisms"
elif hasattr(bridge, "_map_shared_signals"):
assert bridge._map_shared_signals(sm)["type"] == "Morphisms"
else:
pytest.skip("map_shared_signals not available on EnergiBridge")
if hasattr(bridge, "map_plan_delta"):
assert bridge.map_plan_delta(pd)["type"] == "PlanDelta"
elif hasattr(bridge, "_map_plan_delta"):
assert bridge._map_plan_delta(pd)["type"] == "PlanDelta"
else:
pytest.skip("map_plan_delta not available on EnergiBridge")
def test_registry_register_and_retrieve():
bridge = EnergiBridge()
if hasattr(bridge, "register_adapter"):
entry = bridge.register_adapter("adapter-1", "v0.1", {"schema": "localproblem"})
else:
pytest.skip("register_adapter not available on EnergiBridge")
assert entry["adapter_id"] == "adapter-1"
reg = bridge.get_registry()
assert "adapter-1" in reg
assert reg["adapter-1"]["contract_version"] == "v0.1"