from nebulaforge.contracts import LocalProblem, SharedVariables, PlanDelta, AuditLog import json def test_contract_dataclasses(): lp = LocalProblem(id="lp1", domain="rover", description="test", version=1) sv = SharedVariables(variables={"a": 1}, version=1) pd = PlanDelta(delta={"x": 1}, timestamp=123.456, version=1) al = AuditLog(entry="update", signer="tester", timestamp=123.456, contract_id="lp1", version=1) assert isinstance(lp, LocalProblem) assert lp.id == "lp1" assert isinstance(sv.variables, dict) assert isinstance(pd.delta, dict) assert isinstance(al.entry, str) # JSON serialization sanity check from nebulaforge.contracts import to_json json_str = to_json(lp) assert isinstance(json_str, str) data = json.loads(json_str) assert data["id"] == "lp1"