22 lines
827 B
Python
22 lines
827 B
Python
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"
|