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

32 lines
948 B
Python

import math
from cosmosmesh_privacy_preserving_federated.catopt_bridge import (
CatOptBridge,
LocalProblem,
SharedVariable,
DualVariable,
)
def test_basic_roundtrip_encoding():
# Build a tiny LocalProblem and signals
lp = LocalProblem(
problem_id="lp-task-01",
objective="minimize_energy",
variables=["x1", "x2"],
constraints=["x1>=0", "x2>=0", "x1+x2<=10"],
version=1,
)
sv1 = SharedVariable(name="sigma", value=0.5, version=1)
dv1 = DualVariable(name="lambda", value=1.25, version=1)
round_msg = CatOptBridge.build_round_trip(lp, [sv1], [dv1])
# Basic invariants about the payload
assert round_msg["kind"] == "RoundTrip"
payload = round_msg["payload"]
assert payload["object"]["id"] == lp.problem_id
assert any(m.get("name") == sv1.name for m in payload["morphisms"])
assert any(m.get("name") == dv1.name for m in payload["morphisms"])