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

36 lines
1.1 KiB
Python

import time
from cosmosmesh_privacy_preserving_federated.catopt_bridge import LocalProblem, to_catopt, from_catopt, Registry
def test_local_problem_roundtrip_catopt():
lp = LocalProblem(
id="lp-001",
domain="space-supply",
assets=["rover-1", "drone-alpha"],
objective={"allocate": {"task": "survey", "weight": 1.0}},
constraints={"max_energy": 100.0},
)
catopt = to_catopt(lp)
assert isinstance(catopt, dict)
assert catopt.get("type") == "LocalProblem"
payload = catopt.get("payload", {})
assert payload.get("id") == lp.id
assert payload.get("domain") == lp.domain
assert payload.get("assets") == lp.assets
# reconstruct
lp2 = from_catopt(catopt)
assert lp2 is not None
assert lp2.id == lp.id
assert lp2.domain == lp.domain
def test_registry_basic():
reg = Registry()
reg.register_contract(1, {"name": "LocalProblemV1", "fields": ["id","domain"]})
crt = reg.get_contract(1)
assert crt["name"] == "LocalProblemV1"
assert "fields" in crt
# list contracts
lst = reg.list_contracts()
assert 1 in lst