From 00c6d4c06820c718dfeed1a11849dcd2f56819ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Tue, 28 May 2024 12:07:52 +0200 Subject: [PATCH] adds validate_set decorator precision test --- .../observable/test_decorators.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 tests/observer_pattern/observable/test_decorators.py diff --git a/tests/observer_pattern/observable/test_decorators.py b/tests/observer_pattern/observable/test_decorators.py new file mode 100644 index 0000000..6f9164f --- /dev/null +++ b/tests/observer_pattern/observable/test_decorators.py @@ -0,0 +1,45 @@ +import pydase +import pytest +from pydase.observer_pattern.observable.decorators import validate_set + + +def test_validate_set_precision(caplog: pytest.LogCaptureFixture) -> None: + class Service(pydase.DataService): + def __init__(self) -> None: + super().__init__() + self._value_1 = 0.0 + self._value_2 = 0.0 + + @property + def value_1(self) -> float: + return self._value_1 + + @value_1.setter + @validate_set(precision=None) + def value_1(self, value: float) -> None: + self._value_1 = round(value, 1) + + @property + def value_2(self) -> float: + return self._value_2 + + @value_2.setter + @validate_set(precision=1e-1) + def value_2(self, value: float) -> None: + self._value_2 = round(value, 1) + + service_instance = Service() + pydase.Server(service_instance) # needed to initialise observer + + with pytest.raises(ValueError) as exc_info: + service_instance.value_1 = 1.12 + assert "Failed to set value to 1.12 within 1 second. Current value: 1.1" in str( + exc_info + ) + + caplog.clear() + + service_instance.value_2 = 1.12 # no assertion raised + assert service_instance.value_2 == 1.1 # noqa + + assert "'value_2' changed to '1.1'" in caplog.text