spacesafeml-certification-b.../tests/test_interoperability.py

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)