28 lines
980 B
Python
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)
|