mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-20 00:10:03 +02:00
adds validate_set decorator precision test
This commit is contained in:
parent
f49cdd87e4
commit
00c6d4c068
45
tests/observer_pattern/observable/test_decorators.py
Normal file
45
tests/observer_pattern/observable/test_decorators.py
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user