mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-06-07 14:00:40 +02:00
adds tests for StateManager
This commit is contained in:
parent
24f1574168
commit
6b643210d7
@ -9,8 +9,13 @@ import pydase.units as u
|
|||||||
from pydase.data_service.state_manager import StateManager
|
from pydase.data_service.state_manager import StateManager
|
||||||
|
|
||||||
|
|
||||||
|
class SubService(pydase.DataService):
|
||||||
|
name = "SubService"
|
||||||
|
|
||||||
|
|
||||||
class Service(pydase.DataService):
|
class Service(pydase.DataService):
|
||||||
def __init__(self, **kwargs: Any) -> None:
|
def __init__(self, **kwargs: Any) -> None:
|
||||||
|
self.subservice = SubService()
|
||||||
self.some_unit: u.Quantity = 1.2 * u.units.A
|
self.some_unit: u.Quantity = 1.2 * u.units.A
|
||||||
self.some_float = 1.0
|
self.some_float = 1.0
|
||||||
self._name = "Service"
|
self._name = "Service"
|
||||||
@ -21,37 +26,18 @@ class Service(pydase.DataService):
|
|||||||
return self._name
|
return self._name
|
||||||
|
|
||||||
|
|
||||||
CURRENT_STATE = {
|
CURRENT_STATE = Service().serialize()
|
||||||
"name": {
|
|
||||||
"type": "str",
|
|
||||||
"value": "Service",
|
|
||||||
"readonly": True,
|
|
||||||
"doc": None,
|
|
||||||
},
|
|
||||||
"some_float": {
|
|
||||||
"type": "float",
|
|
||||||
"value": 1.0,
|
|
||||||
"readonly": False,
|
|
||||||
"doc": None,
|
|
||||||
},
|
|
||||||
"some_unit": {
|
|
||||||
"type": "Quantity",
|
|
||||||
"value": {"magnitude": 1.2, "unit": "A"},
|
|
||||||
"readonly": False,
|
|
||||||
"doc": None,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
LOAD_STATE = {
|
LOAD_STATE = {
|
||||||
"name": {
|
"name": {
|
||||||
"type": "str",
|
"type": "str",
|
||||||
"value": "Service",
|
"value": "Another name",
|
||||||
"readonly": True,
|
"readonly": True,
|
||||||
"doc": None,
|
"doc": None,
|
||||||
},
|
},
|
||||||
"some_float": {
|
"some_float": {
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"value": 1,
|
"value": 10,
|
||||||
"readonly": False,
|
"readonly": False,
|
||||||
"doc": None,
|
"doc": None,
|
||||||
},
|
},
|
||||||
@ -61,6 +47,25 @@ LOAD_STATE = {
|
|||||||
"readonly": False,
|
"readonly": False,
|
||||||
"doc": None,
|
"doc": None,
|
||||||
},
|
},
|
||||||
|
"subservice": {
|
||||||
|
"type": "DataService",
|
||||||
|
"value": {
|
||||||
|
"name": {
|
||||||
|
"type": "str",
|
||||||
|
"value": "SubService",
|
||||||
|
"readonly": False,
|
||||||
|
"doc": None,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"readonly": False,
|
||||||
|
"doc": None,
|
||||||
|
},
|
||||||
|
"removed_attr": {
|
||||||
|
"type": "str",
|
||||||
|
"value": "removed",
|
||||||
|
"readonly": False,
|
||||||
|
"doc": None,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -76,7 +81,7 @@ def test_save_state(tmp_path: Path):
|
|||||||
assert file.read_text() == json.dumps(CURRENT_STATE, indent=4)
|
assert file.read_text() == json.dumps(CURRENT_STATE, indent=4)
|
||||||
|
|
||||||
|
|
||||||
def test_load_state(tmp_path: Path):
|
def test_load_state(tmp_path: Path, caplog: LogCaptureFixture):
|
||||||
# Create a StateManager instance with a temporary file
|
# Create a StateManager instance with a temporary file
|
||||||
file = tmp_path / "test_state.json"
|
file = tmp_path / "test_state.json"
|
||||||
|
|
||||||
@ -87,7 +92,26 @@ def test_load_state(tmp_path: Path):
|
|||||||
service = Service()
|
service = Service()
|
||||||
manager = StateManager(service=service, filename=str(file))
|
manager = StateManager(service=service, filename=str(file))
|
||||||
manager.load_state()
|
manager.load_state()
|
||||||
assert service.some_unit == u.Quantity(12, "A")
|
|
||||||
|
assert service.some_unit == u.Quantity(12, "A") # has changed
|
||||||
|
assert service.name == "Service" # has not changed as readonly
|
||||||
|
assert service.some_float == 1.0 # has not changed due to different type
|
||||||
|
assert service.some_float == 1.0 # has not changed due to different type
|
||||||
|
assert service.subservice.name == "SubService" # didn't change
|
||||||
|
|
||||||
|
assert "Service.some_unit changed to 12.0 A!" in caplog.text
|
||||||
|
assert (
|
||||||
|
"Attribute 'name' is read-only. Ignoring value from JSON file..." in caplog.text
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
"Attribute type of 'some_float' changed from 'int' to 'float'. "
|
||||||
|
"Ignoring value from JSON file..."
|
||||||
|
) in caplog.text
|
||||||
|
assert (
|
||||||
|
"Attribute type of 'removed_attr' changed from 'str' to None. "
|
||||||
|
"Ignoring value from JSON file..." in caplog.text
|
||||||
|
)
|
||||||
|
assert "Value of attribute 'subservice.name' has not changed..." in caplog.text
|
||||||
|
|
||||||
|
|
||||||
def test_filename_warning(tmp_path: Path, caplog: LogCaptureFixture):
|
def test_filename_warning(tmp_path: Path, caplog: LogCaptureFixture):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user