33 lines
967 B
Python
33 lines
967 B
Python
import json
|
|
import time
|
|
|
|
from cosmosmesh_privacy_preserving_federated.contracts import LocalProblem, GraphOfContracts
|
|
|
|
|
|
def test_local_problem_json_roundtrip():
|
|
lp = LocalProblem(
|
|
agent_id="rover-1",
|
|
variables={"x": 1.0, "y": 2.0},
|
|
objective={"coef": 0.5},
|
|
constraints={"type": "ineq", "limit": 10.0},
|
|
version="v0.1",
|
|
)
|
|
payload = lp.to_json()
|
|
lp2 = LocalProblem.from_json(payload)
|
|
assert lp2.agent_id == lp.agent_id
|
|
assert lp2.variables == lp.variables
|
|
assert lp2.version == lp.version
|
|
|
|
|
|
def test_graph_of_contracts_registry():
|
|
g = GraphOfContracts()
|
|
g.register("LocalProblem", "v0.1")
|
|
g.register("PlanDelta", "v0.2")
|
|
assert g.get_version("LocalProblem") == "v0.1"
|
|
assert g.get_version("PlanDelta") == "v0.2"
|
|
# ensure JSON export works and is parseable
|
|
data = g.to_json()
|
|
assert isinstance(data, str)
|
|
parsed = json.loads(data)
|
|
assert "LocalProblem" in parsed
|