updates tests

This commit is contained in:
Mose Müller
2023-11-30 17:17:41 +01:00
parent cc105106ee
commit c891642bda
10 changed files with 563 additions and 465 deletions

View File

@ -1,6 +1,7 @@
from pytest import LogCaptureFixture
from pydase import DataService
from pydase.data_service.data_service_observer import DataServiceObserver
from pydase.data_service.state_manager import StateManager
from pytest import LogCaptureFixture
def test_class_attributes(caplog: LogCaptureFixture) -> None:
@ -11,9 +12,11 @@ def test_class_attributes(caplog: LogCaptureFixture) -> None:
attr_1 = SubClass()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr_1.name = "Hi"
assert "ServiceClass.attr_1.name changed to Hi" in caplog.text
assert "'attr_1.name' changed to 'Hi'" in caplog.text
def test_instance_attributes(caplog: LogCaptureFixture) -> None:
@ -22,13 +25,15 @@ def test_instance_attributes(caplog: LogCaptureFixture) -> None:
class ServiceClass(DataService):
def __init__(self) -> None:
self.attr_1 = SubClass()
super().__init__()
self.attr_1 = SubClass()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr_1.name = "Hi"
assert "ServiceClass.attr_1.name changed to Hi" in caplog.text
assert "'attr_1.name' changed to 'Hi'" in caplog.text
def test_class_attribute(caplog: LogCaptureFixture) -> None:
@ -36,21 +41,25 @@ def test_class_attribute(caplog: LogCaptureFixture) -> None:
attr = 0
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr = 1
assert "ServiceClass.attr changed to 1" in caplog.text
assert "'attr' changed to '1'" in caplog.text
def test_instance_attribute(caplog: LogCaptureFixture) -> None:
class ServiceClass(DataService):
def __init__(self) -> None:
self.attr = "Hello World"
super().__init__()
self.attr = "Hello World"
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr = "Hello"
assert "ServiceClass.attr changed to Hello" in caplog.text
assert "'attr' changed to 'Hello'" in caplog.text
def test_reused_instance_attributes(caplog: LogCaptureFixture) -> None:
@ -61,16 +70,19 @@ def test_reused_instance_attributes(caplog: LogCaptureFixture) -> None:
class ServiceClass(DataService):
def __init__(self) -> None:
super().__init__()
self.attr_1 = subclass_instance
self.attr_2 = subclass_instance
super().__init__()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr_1.name = "Hi"
assert service_instance.attr_1 == service_instance.attr_2
assert "ServiceClass.attr_1.name changed to Hi" in caplog.text
assert "ServiceClass.attr_2.name changed to Hi" in caplog.text
assert "'attr_1.name' changed to 'Hi'" in caplog.text
assert "'attr_2.name' changed to 'Hi'" in caplog.text
def test_reused_attributes_mixed(caplog: LogCaptureFixture) -> None:
@ -83,15 +95,18 @@ def test_reused_attributes_mixed(caplog: LogCaptureFixture) -> None:
attr_1 = subclass_instance
def __init__(self) -> None:
self.attr_2 = subclass_instance
super().__init__()
self.attr_2 = subclass_instance
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr_1.name = "Hi"
assert service_instance.attr_1 == service_instance.attr_2
assert "ServiceClass.attr_1.name changed to Hi" in caplog.text
assert "ServiceClass.attr_2.name changed to Hi" in caplog.text
assert "'attr_1.name' changed to 'Hi'" in caplog.text
assert "'attr_2.name' changed to 'Hi'" in caplog.text
def test_nested_class_attributes(caplog: LogCaptureFixture) -> None:
@ -111,15 +126,18 @@ def test_nested_class_attributes(caplog: LogCaptureFixture) -> None:
attr = SubClass()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr.attr.attr.name = "Hi"
service_instance.attr.attr.name = "Hou"
service_instance.attr.name = "foo"
service_instance.name = "bar"
assert "ServiceClass.attr.attr.attr.name changed to Hi" in caplog.text
assert "ServiceClass.attr.attr.name changed to Hou" in caplog.text
assert "ServiceClass.attr.name changed to foo" in caplog.text
assert "ServiceClass.name changed to bar" in caplog.text
assert "'attr.attr.attr.name' changed to 'Hi'" in caplog.text
assert "'attr.attr.name' changed to 'Hou'" in caplog.text
assert "'attr.name' changed to 'foo'" in caplog.text
assert "'name' changed to 'bar'" in caplog.text
def test_nested_instance_attributes(caplog: LogCaptureFixture) -> None:
@ -128,32 +146,35 @@ def test_nested_instance_attributes(caplog: LogCaptureFixture) -> None:
class SubSubClass(DataService):
def __init__(self) -> None:
super().__init__()
self.attr = SubSubSubClass()
self.name = "Hello"
super().__init__()
class SubClass(DataService):
def __init__(self) -> None:
super().__init__()
self.attr = SubSubClass()
self.name = "Hello"
super().__init__()
class ServiceClass(DataService):
def __init__(self) -> None:
super().__init__()
self.attr = SubClass()
self.name = "Hello"
super().__init__()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr.attr.attr.name = "Hi"
service_instance.attr.attr.name = "Hou"
service_instance.attr.name = "foo"
service_instance.name = "bar"
assert "ServiceClass.attr.attr.attr.name changed to Hi" in caplog.text
assert "ServiceClass.attr.attr.name changed to Hou" in caplog.text
assert "ServiceClass.attr.name changed to foo" in caplog.text
assert "ServiceClass.name changed to bar" in caplog.text
assert "'attr.attr.attr.name' changed to 'Hi'" in caplog.text
assert "'attr.attr.name' changed to 'Hou'" in caplog.text
assert "'attr.name' changed to 'foo'" in caplog.text
assert "'name' changed to 'bar'" in caplog.text
def test_advanced_nested_class_attributes(caplog: LogCaptureFixture) -> None:
@ -171,14 +192,19 @@ def test_advanced_nested_class_attributes(caplog: LogCaptureFixture) -> None:
subattr = SubSubClass()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr.attr.attr.name = "Hi"
assert "ServiceClass.attr.attr.attr.name changed to Hi" in caplog.text
assert "ServiceClass.subattr.attr.name changed to Hi" in caplog.text
assert "'attr.attr.attr.name' changed to 'Hi'" in caplog.text
assert "'subattr.attr.name' changed to 'Hi'" in caplog.text
caplog.clear()
service_instance.subattr.attr.name = "Ho"
assert "ServiceClass.attr.attr.attr.name changed to Ho" in caplog.text
assert "ServiceClass.subattr.attr.name changed to Ho" in caplog.text
assert "'attr.attr.attr.name' changed to 'Ho'" in caplog.text
assert "'subattr.attr.name' changed to 'Ho'" in caplog.text
def test_advanced_nested_instance_attributes(caplog: LogCaptureFixture) -> None:
@ -187,32 +213,34 @@ def test_advanced_nested_instance_attributes(caplog: LogCaptureFixture) -> None:
class SubSubClass(DataService):
def __init__(self) -> None:
self.attr = SubSubSubClass()
super().__init__()
self.attr = SubSubSubClass()
subsubclass_instance = SubSubClass()
class SubClass(DataService):
def __init__(self) -> None:
self.attr = subsubclass_instance
super().__init__()
self.attr = subsubclass_instance
class ServiceClass(DataService):
def __init__(self) -> None:
super().__init__()
self.attr = SubClass()
self.subattr = subsubclass_instance
super().__init__()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
service_instance.attr.attr.attr.name = "Hi"
assert "ServiceClass.attr.attr.attr.name changed to Hi" in caplog.text
assert "ServiceClass.subattr.attr.name changed to Hi" in caplog.text
assert "'attr.attr.attr.name' changed to 'Hi'" in caplog.text
assert "'subattr.attr.name' changed to 'Hi'" in caplog.text
caplog.clear()
service_instance.subattr.attr.name = "Ho"
assert "ServiceClass.attr.attr.attr.name changed to Ho" in caplog.text
assert "ServiceClass.subattr.attr.name changed to Ho" in caplog.text
assert "'attr.attr.attr.name' changed to 'Ho'" in caplog.text
assert "'subattr.attr.name' changed to 'Ho'" in caplog.text
caplog.clear()
@ -224,17 +252,20 @@ def test_advanced_nested_attributes_mixed(caplog: LogCaptureFixture) -> None:
class_attr = SubSubClass()
def __init__(self) -> None:
self.attr_1 = SubSubClass()
super().__init__()
self.attr_1 = SubSubClass()
class ServiceClass(DataService):
class_attr = SubClass()
def __init__(self) -> None:
self.attr = SubClass()
super().__init__()
self.attr = SubClass()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
# Subclass.attr is the same for all instances
assert service_instance.attr.class_attr == service_instance.class_attr.class_attr
@ -245,23 +276,23 @@ def test_advanced_nested_attributes_mixed(caplog: LogCaptureFixture) -> None:
assert service_instance.attr.attr_1 != service_instance.class_attr.class_attr
service_instance.class_attr.class_attr.name = "Ho"
assert "ServiceClass.class_attr.class_attr.name changed to Ho" in caplog.text
assert "ServiceClass.attr.class_attr.name changed to Ho" in caplog.text
assert "'class_attr.class_attr.name' changed to 'Ho'" in caplog.text
assert "'attr.class_attr.name' changed to 'Ho'" in caplog.text
caplog.clear()
service_instance.class_attr.attr_1.name = "Ho"
assert "ServiceClass.class_attr.attr_1.name changed to Ho" in caplog.text
assert "ServiceClass.attr.attr_1.name changed to Ho" not in caplog.text
assert "'class_attr.attr_1.name' changed to 'Ho'" in caplog.text
assert "'attr.attr_1.name' changed to 'Ho'" not in caplog.text
caplog.clear()
service_instance.attr.class_attr.name = "Ho"
assert "ServiceClass.class_attr.class_attr.name changed to Ho" in caplog.text
assert "ServiceClass.attr.class_attr.name changed to Ho" in caplog.text
service_instance.attr.class_attr.name = "Hello"
assert "'class_attr.class_attr.name' changed to 'Hello'" in caplog.text
assert "'attr.class_attr.name' changed to 'Hello'" in caplog.text
caplog.clear()
service_instance.attr.attr_1.name = "Ho"
assert "ServiceClass.attr.attr_1.name changed to Ho" in caplog.text
assert "ServiceClass.class_attr.attr_1.name changed to Ho" not in caplog.text
assert "'attr.attr_1.name' changed to 'Ho'" in caplog.text
assert "'class_attr.attr_1.name' changed to 'Ho'" not in caplog.text
caplog.clear()
@ -277,32 +308,34 @@ def test_class_list_attributes(caplog: LogCaptureFixture) -> None:
attr = subclass_instance
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
assert service_instance.attr_list[0] != service_instance.attr_list[1]
service_instance.attr_list[0].name = "Ho"
assert "ServiceClass.attr_list[0].name changed to Ho" in caplog.text
assert "ServiceClass.attr_list[1].name changed to Ho" not in caplog.text
assert "'attr_list[0].name' changed to 'Ho'" in caplog.text
assert "'attr_list[1].name' changed to 'Ho'" not in caplog.text
caplog.clear()
service_instance.attr_list[1].name = "Ho"
assert "ServiceClass.attr_list[0].name changed to Ho" not in caplog.text
assert "ServiceClass.attr_list[1].name changed to Ho" in caplog.text
assert "'attr_list[0].name' changed to 'Ho'" not in caplog.text
assert "'attr_list[1].name' changed to 'Ho'" in caplog.text
caplog.clear()
assert service_instance.attr_list_2[0] == service_instance.attr
assert service_instance.attr_list_2[0] == service_instance.attr_list_2[1]
service_instance.attr_list_2[0].name = "Ho"
assert "ServiceClass.attr_list_2[0].name changed to Ho" in caplog.text
assert "ServiceClass.attr_list_2[1].name changed to Ho" in caplog.text
assert "ServiceClass.attr.name changed to Ho" in caplog.text
service_instance.attr_list_2[0].name = "Ciao"
assert "'attr_list_2[0].name' changed to 'Ciao'" in caplog.text
assert "'attr_list_2[1].name' changed to 'Ciao'" in caplog.text
assert "'attr.name' changed to 'Ciao'" in caplog.text
caplog.clear()
service_instance.attr_list_2[1].name = "Ho"
assert "ServiceClass.attr_list_2[0].name changed to Ho" in caplog.text
assert "ServiceClass.attr_list_2[1].name changed to Ho" in caplog.text
assert "ServiceClass.attr.name changed to Ho" in caplog.text
service_instance.attr_list_2[1].name = "Bye"
assert "'attr_list_2[0].name' changed to 'Bye'" in caplog.text
assert "'attr_list_2[1].name' changed to 'Bye'" in caplog.text
assert "'attr.name' changed to 'Bye'" in caplog.text
caplog.clear()
@ -320,17 +353,19 @@ def test_nested_class_list_attributes(caplog: LogCaptureFixture) -> None:
subattr = subsubclass_instance
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
assert service_instance.attr[0].attr_list[0] == service_instance.subattr
service_instance.attr[0].attr_list[0].name = "Ho"
assert "ServiceClass.attr[0].attr_list[0].name changed to Ho" in caplog.text
assert "ServiceClass.subattr.name changed to Ho" in caplog.text
assert "'attr[0].attr_list[0].name' changed to 'Ho'" in caplog.text
assert "'subattr.name' changed to 'Ho'" in caplog.text
caplog.clear()
service_instance.subattr.name = "Ho"
assert "ServiceClass.attr[0].attr_list[0].name changed to Ho" in caplog.text
assert "ServiceClass.subattr.name changed to Ho" in caplog.text
service_instance.subattr.name = "Hi"
assert "'attr[0].attr_list[0].name' changed to 'Hi'" in caplog.text
assert "'subattr.name' changed to 'Hi'" in caplog.text
caplog.clear()
@ -342,44 +377,46 @@ def test_instance_list_attributes(caplog: LogCaptureFixture) -> None:
class ServiceClass(DataService):
def __init__(self) -> None:
super().__init__()
self.attr_list = [SubClass() for _ in range(2)]
self.attr_list_2 = [subclass_instance, subclass_instance]
self.attr = subclass_instance
super().__init__()
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
assert service_instance.attr_list[0] != service_instance.attr_list[1]
service_instance.attr_list[0].name = "Ho"
assert "ServiceClass.attr_list[0].name changed to Ho" in caplog.text
assert "ServiceClass.attr_list[1].name changed to Ho" not in caplog.text
assert "'attr_list[0].name' changed to 'Ho'" in caplog.text
assert "'attr_list[1].name' changed to 'Ho'" not in caplog.text
caplog.clear()
service_instance.attr_list[1].name = "Ho"
assert "ServiceClass.attr_list[0].name changed to Ho" not in caplog.text
assert "ServiceClass.attr_list[1].name changed to Ho" in caplog.text
service_instance.attr_list[1].name = "Hi"
assert "'attr_list[0].name' changed to 'Hi'" not in caplog.text
assert "'attr_list[1].name' changed to 'Hi'" in caplog.text
caplog.clear()
assert service_instance.attr_list_2[0] == service_instance.attr
assert service_instance.attr_list_2[0] == service_instance.attr_list_2[1]
service_instance.attr_list_2[0].name = "Ho"
assert "ServiceClass.attr.name changed to Ho" in caplog.text
assert "ServiceClass.attr_list_2[0].name changed to Ho" in caplog.text
assert "ServiceClass.attr_list_2[1].name changed to Ho" in caplog.text
service_instance.attr_list_2[0].name = "Ciao"
assert "'attr.name' changed to 'Ciao'" in caplog.text
assert "'attr_list_2[0].name' changed to 'Ciao'" in caplog.text
assert "'attr_list_2[1].name' changed to 'Ciao'" in caplog.text
caplog.clear()
service_instance.attr_list_2[1].name = "Ho"
assert "ServiceClass.attr.name changed to Ho" in caplog.text
assert "ServiceClass.attr_list_2[0].name changed to Ho" in caplog.text
assert "ServiceClass.attr_list_2[1].name changed to Ho" in caplog.text
service_instance.attr_list_2[1].name = "Bye"
assert "'attr.name' changed to 'Bye'" in caplog.text
assert "'attr_list_2[0].name' changed to 'Bye'" in caplog.text
assert "'attr_list_2[1].name' changed to 'Bye'" in caplog.text
caplog.clear()
service_instance.attr.name = "Ho"
assert "ServiceClass.attr.name changed to Ho" in caplog.text
assert "ServiceClass.attr_list_2[0].name changed to Ho" in caplog.text
assert "ServiceClass.attr_list_2[1].name changed to Ho" in caplog.text
assert "'attr.name' changed to 'Ho'" in caplog.text
assert "'attr_list_2[0].name' changed to 'Ho'" in caplog.text
assert "'attr_list_2[1].name' changed to 'Ho'" in caplog.text
caplog.clear()
@ -391,26 +428,28 @@ def test_nested_instance_list_attributes(caplog: LogCaptureFixture) -> None:
class SubClass(DataService):
def __init__(self) -> None:
self.attr_list = [subsubclass_instance]
super().__init__()
self.attr_list = [subsubclass_instance]
class ServiceClass(DataService):
class_attr = subsubclass_instance
def __init__(self) -> None:
self.attr = [SubClass()]
super().__init__()
self.attr = [SubClass()]
service_instance = ServiceClass()
state_manager = StateManager(service_instance)
DataServiceObserver(state_manager)
assert service_instance.attr[0].attr_list[0] == service_instance.class_attr
service_instance.attr[0].attr_list[0].name = "Ho"
assert "ServiceClass.attr[0].attr_list[0].name changed to Ho" in caplog.text
assert "ServiceClass.class_attr.name changed to Ho" in caplog.text
assert "'attr[0].attr_list[0].name' changed to 'Ho'" in caplog.text
assert "'class_attr.name' changed to 'Ho'" in caplog.text
caplog.clear()
service_instance.class_attr.name = "Ho"
assert "ServiceClass.attr[0].attr_list[0].name changed to Ho" in caplog.text
assert "ServiceClass.class_attr.name changed to Ho" in caplog.text
service_instance.class_attr.name = "Hi"
assert "'attr[0].attr_list[0].name' changed to 'Hi'" in caplog.text
assert "'class_attr.name' changed to 'Hi'" in caplog.text
caplog.clear()