import pytest from gridverse.registry import ContractRegistry from gridverse.adapter_marketplace import DERAdapter, HeatingAdapter from gridverse.solver import admm_solve from gridverse.delta_sync import reconcile def test_registry_basic(): reg = ContractRegistry() reg.register_contract("LocalProblem", "0.1", {"type": "object"}) assert reg.get_contract("LocalProblem", "0.1") == {"type": "object"} def test_starter_adapters_interface(): der = DERAdapter() heat = HeatingAdapter() lp = {"load": 10} assert isinstance(der.adapt(lp), dict) assert der.contract()["name"] == "DERAdapter" assert heat.contract()["version"] def test_solver_basic(): lp = {"a": 1} sv = {"a": 0} delta, updated = admm_solve(lp, sv, rho=0.5) assert isinstance(delta, dict) assert isinstance(updated, dict) def test_delta_sync_basic(): local = {"x": 1} remote = {"x": 2, "y": 5} merged = reconcile(local, remote) assert merged["x"] == 2 assert merged["y"] == 5