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