import json from cosmosmesh_privacy_preserving_federated.catopt_bridge import LocalProblem, SharedVariable, DualVariable, CatOptBridge def test_round_trip_construction(): lp = LocalProblem( problem_id="test-problem", objective="maximize throughput", variables=["x"], constraints=["x >= 0"], version=1, ) sv = [SharedVariable(name="s", value=3.14, version=1)] dv = [DualVariable(name="d", value=2.718, version=1)] msg = CatOptBridge.build_round_trip(problem=lp, shared=sv, duals=dv) # Basic sanity checks on the envelope assert isinstance(msg, dict) assert msg.get("kind") == "RoundTrip" payload = msg.get("payload") assert isinstance(payload, dict) assert payload.get("object")["id"] == lp.problem_id # ensure morphisms present morphisms = payload.get("morphisms") assert isinstance(morphisms, list) assert any(isinstance(m, dict) and m.get("name") == "s" for m in morphisms)