cosmosmesh-privacy-preservi.../tests/test_catopt_demo.py

28 lines
980 B
Python

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)