catopt-graph-graph-calculus.../tests/test_dsl.py

40 lines
1.1 KiB
Python

import json
from catopt_graph.dsl import LocalProblem, SharedVariables, PlanDelta, DualVariables, PrivacyBudget, AuditLog, PolicyBlock, to_json
def test_local_problem_json_roundtrip():
lp = LocalProblem(
id="lp-1",
domain="energy",
assets={"battery": 2, "solar": 5},
objective={"maximize": "util"},
constraints={"budget": 100},
solver_hint="fast-convex",
)
s = lp.to_json()
assert isinstance(s, str)
lp2 = LocalProblem.from_json(s)
assert lp2.id == lp.id
assert lp2.domain == lp.domain
def test_shared_variables_json_roundtrip():
sv = SharedVariables(version="1.0.0", forecasts={"demand": 10}, priors={"mean": 0.0})
s = sv.to_json()
sv2 = SharedVariables.from_json(s)
assert sv2.version == sv.version
def test_to_json_generic():
lp = LocalProblem(
id="lp-2",
domain="robotics",
assets={"robot": "rover-1"},
objective={"minimize": "time"},
constraints=None,
)
j = to_json(lp)
# ensures a JSON string is produced and decodable
data = json.loads(j)
assert data["id"] == lp.id