35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
import unittest
|
|
from core.contract_registry import ContractRegistry
|
|
|
|
|
|
class TestContractRegistry(unittest.TestCase):
|
|
def test_register_and_get_contract(self):
|
|
reg = ContractRegistry()
|
|
schema = {
|
|
"name": "LocalProblem",
|
|
"version": "1.0.0",
|
|
"required_fields": ["id", "objective"]
|
|
}
|
|
reg.register_contract("LocalProblem", "1.0.0", schema)
|
|
self.assertEqual(reg.get_contract("LocalProblem", "1.0.0"), schema)
|
|
|
|
def test_list_versions(self):
|
|
reg = ContractRegistry()
|
|
reg.register_contract("LocalProblem", "1.0.0", {"required_fields": ["id"]})
|
|
reg.register_contract("LocalProblem", "1.1.0", {"required_fields": ["id", "objective"]})
|
|
versions = reg.list_versions("LocalProblem")
|
|
self.assertIn("1.0.0", versions)
|
|
self.assertIn("1.1.0", versions)
|
|
|
|
def test_conformance_check_passes(self):
|
|
reg = ContractRegistry()
|
|
reg.register_contract("LocalProblem", "1.0.0", {"required_fields": ["id", "objective"]})
|
|
adapter_data = {"id": "lp-1", "objective": 42}
|
|
self.assertTrue(reg.conformance_check("LocalProblem", "1.0.0", adapter_data))
|
|
|
|
def test_conformance_check_fails_on_missing_field(self):
|
|
reg = ContractRegistry()
|
|
reg.register_contract("LocalProblem", "1.0.0", {"required_fields": ["id", "objective"]})
|
|
adapter_data = {"id": "lp-1"}
|
|
self.assertFalse(reg.conformance_check("LocalProblem", "1.0.0", adapter_data))
|