From 44d73c3b7775fd225041e8f723088ba28b0bcf24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Thu, 4 Jul 2024 17:37:44 +0200 Subject: [PATCH] adds function testing if private attributes can take values that are not serializable --- .../test_data_service_observer.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/data_service/test_data_service_observer.py b/tests/data_service/test_data_service_observer.py index 9e487fb..974eca9 100644 --- a/tests/data_service/test_data_service_observer.py +++ b/tests/data_service/test_data_service_observer.py @@ -1,9 +1,11 @@ import logging +from typing import Any import pydase import pytest from pydase.data_service.data_service_observer import DataServiceObserver from pydase.data_service.state_manager import StateManager +from pydase.utils.serialization.serializer import SerializationError logger = logging.getLogger() @@ -122,3 +124,25 @@ def test_dynamic_list_entry_with_property(caplog: pytest.LogCaptureFixture) -> N assert "'list_attr[0].name' changed to 'Hello'" not in caplog.text assert "'list_attr[0].name' changed to 'Hoooo'" in caplog.text + + +def test_private_attribute_does_not_have_to_be_serializable() -> None: + class MyService(pydase.DataService): + def __init__(self) -> None: + super().__init__() + self.publ_attr: Any = 1 + self.__priv_attr = (1,) + + def change_publ_attr(self) -> None: + self.publ_attr = (2,) # cannot be serialized + + def change_priv_attr(self) -> None: + self.__priv_attr = (2,) + + service_instance = MyService() + pydase.Server(service_instance) + + with pytest.raises(SerializationError): + service_instance.change_publ_attr() + + service_instance.change_priv_attr()