32 lines
948 B
Python
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"])
|