import json import time from cosmosmesh_privacy_preserving_federated.contracts import LocalProblem, GraphOfContracts def test_local_problem_json_roundtrip(): lp = LocalProblem( agent_id="rover-1", variables={"x": 1.0, "y": 2.0}, objective={"coef": 0.5}, constraints={"type": "ineq", "limit": 10.0}, version="v0.1", ) payload = lp.to_json() lp2 = LocalProblem.from_json(payload) assert lp2.agent_id == lp.agent_id assert lp2.variables == lp.variables assert lp2.version == lp.version def test_graph_of_contracts_registry(): g = GraphOfContracts() g.register("LocalProblem", "v0.1") g.register("PlanDelta", "v0.2") assert g.get_version("LocalProblem") == "v0.1" assert g.get_version("PlanDelta") == "v0.2" # ensure JSON export works and is parseable data = g.to_json() assert isinstance(data, str) parsed = json.loads(data) assert "LocalProblem" in parsed