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)