24 lines
1.1 KiB
Python
24 lines
1.1 KiB
Python
import json
|
|
from spacesafeml_certification_benchmark_and_.interoperability import contract_to_ir_json
|
|
from spacesafeml_certification_benchmark_and_.dsl import SafetyContract, SafetyPreConditions, SafetyPostConditions, ResourceBudgets, LocalCapabilities, DataSharingPolicy
|
|
|
|
|
|
def test_interoperability_contract_to_ir_json_struct():
|
|
contract = SafetyContract(
|
|
contract_id="contract-interop-1",
|
|
local_capabilities=[LocalCapabilities(name="Planner", capabilities=["plan"] )],
|
|
budgets=ResourceBudgets(cpu_cores=2.0, memory_gb=4.0, energy_wh=150.0, time_seconds=3600),
|
|
data_policy=DataSharingPolicy(policy_id="policy-interop", allowed_data=["telemetry"]),
|
|
version="1.0",
|
|
)
|
|
|
|
ir_json = contract_to_ir_json(contract)
|
|
# Ensure canonical keys exist and are serializable to JSON
|
|
assert "objects" in ir_json
|
|
assert "morphisms" in ir_json
|
|
assert isinstance(ir_json["objects"], list)
|
|
assert isinstance(ir_json["morphisms"], list)
|
|
# PlanDelta may be None or a dict depending on mapping; we accept either
|
|
# Ensure JSON can be dumped without errors
|
|
json.dumps(ir_json)
|