36 lines
1.1 KiB
Python
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
|