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"