Source code for icat_esrf_definitions.tests.test_instances

from silx.io.dictdump import dicttonx

from ..models import IcatDatasetParameters
from ..models.generate import generate_dataset
from . import compare


[docs] def test_nexus(tmp_path, ignore_pydantic_deprecation_warnings): dataset = generate_dataset() nxdict = dataset.to_nexus_dict() filename = str(tmp_path / "dataset.h5") dicttonx(nxdict, filename)
[docs] def test_icat(ignore_pydantic_deprecation_warnings): dataset = generate_dataset() icatdict = dataset.to_icat_dict() for key, value in icatdict.items(): assert isinstance(key, str), key assert isinstance(value, str), f"{key} = {value}"
[docs] def test_roundtrip(ignore_pydantic_deprecation_warnings): dataset = generate_dataset() python_dict = dataset.model_dump(mode="python", exclude_unset=True, by_alias=True) new_dataset = IcatDatasetParameters(**python_dict) compare.assert_equal_pydantic_model(new_dataset, dataset) json_dict = dataset.model_dump(mode="json", exclude_unset=True, by_alias=True) new_dataset = IcatDatasetParameters(**json_dict) compare.assert_equal_pydantic_model(new_dataset, dataset) nexus_dict = dataset.to_nexus_dict() new_dataset = IcatDatasetParameters.from_nexus_dict(nexus_dict) compare.assert_equal_pydantic_model(new_dataset, dataset) icat_dict = dataset.to_icat_dict() new_dataset = IcatDatasetParameters.from_icat_dict(icat_dict) compare.assert_equal_pydantic_model(new_dataset, dataset)
[docs] def test_unknown_icat_fields(ignore_pydantic_deprecation_warnings): dataset = generate_dataset() icat_dict = dataset.to_icat_dict() icat_dict["UnitTest_unknown1"] = 10 icat_dict["UnitTest_unknown2"] = 10 new_dataset, unknown = IcatDatasetParameters.from_icat_dict_known_keys(icat_dict) compare.assert_equal_pydantic_model(new_dataset, dataset) assert set(unknown) == {"UnitTest_unknown1", "UnitTest_unknown2"}