mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-20 00:10:03 +02:00
adds deserializer tests
This commit is contained in:
parent
ad2800aaf6
commit
16bd17f75c
143
tests/utils/serialization/test_deserializer.py
Normal file
143
tests/utils/serialization/test_deserializer.py
Normal file
@ -0,0 +1,143 @@
|
||||
import enum
|
||||
from typing import Any
|
||||
|
||||
import pydase.components
|
||||
import pydase.units as u
|
||||
import pytest
|
||||
from pydase.utils.serialization.deserializer import loads
|
||||
from pydase.utils.serialization.serializer import dump
|
||||
from pydase.utils.serialization.types import SerializedObject
|
||||
|
||||
|
||||
class MyEnum(enum.Enum):
|
||||
FINISHED = "finished"
|
||||
RUNNING = "running"
|
||||
|
||||
|
||||
class MyService(pydase.DataService):
|
||||
name = "MyService"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"obj, obj_serialization",
|
||||
[
|
||||
(
|
||||
1,
|
||||
{
|
||||
"full_access_path": "",
|
||||
"type": "int",
|
||||
"value": 1,
|
||||
"readonly": False,
|
||||
"doc": None,
|
||||
},
|
||||
),
|
||||
(
|
||||
1.0,
|
||||
{
|
||||
"full_access_path": "",
|
||||
"type": "float",
|
||||
"value": 1.0,
|
||||
"readonly": False,
|
||||
"doc": None,
|
||||
},
|
||||
),
|
||||
(
|
||||
True,
|
||||
{
|
||||
"full_access_path": "",
|
||||
"type": "bool",
|
||||
"value": True,
|
||||
"readonly": False,
|
||||
"doc": None,
|
||||
},
|
||||
),
|
||||
(
|
||||
u.Quantity(10, "m"),
|
||||
{
|
||||
"full_access_path": "",
|
||||
"type": "Quantity",
|
||||
"value": {"magnitude": 10, "unit": "meter"},
|
||||
"readonly": False,
|
||||
"doc": None,
|
||||
},
|
||||
),
|
||||
(
|
||||
[1.0],
|
||||
{
|
||||
"full_access_path": "",
|
||||
"value": [
|
||||
{
|
||||
"full_access_path": "[0]",
|
||||
"doc": None,
|
||||
"readonly": False,
|
||||
"type": "float",
|
||||
"value": 1.0,
|
||||
}
|
||||
],
|
||||
"type": "list",
|
||||
"doc": None,
|
||||
"readonly": False,
|
||||
},
|
||||
),
|
||||
(
|
||||
{"key": 1.0},
|
||||
{
|
||||
"full_access_path": "",
|
||||
"value": {
|
||||
"key": {
|
||||
"full_access_path": '["key"]',
|
||||
"doc": None,
|
||||
"readonly": False,
|
||||
"type": "float",
|
||||
"value": 1.0,
|
||||
}
|
||||
},
|
||||
"type": "dict",
|
||||
"doc": None,
|
||||
"readonly": False,
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_loads_primitive_types(obj: Any, obj_serialization: SerializedObject) -> None:
|
||||
assert loads(obj_serialization) == obj
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"obj, obj_serialization",
|
||||
[
|
||||
(
|
||||
MyEnum.RUNNING,
|
||||
{
|
||||
"full_access_path": "",
|
||||
"value": "RUNNING",
|
||||
"type": "Enum",
|
||||
"doc": "MyEnum description",
|
||||
"readonly": False,
|
||||
"name": "MyEnum",
|
||||
"enum": {"RUNNING": "running", "FINISHED": "finished"},
|
||||
},
|
||||
),
|
||||
(
|
||||
MyService(),
|
||||
{
|
||||
"full_access_path": "",
|
||||
"value": {
|
||||
"name": {
|
||||
"full_access_path": "name",
|
||||
"doc": None,
|
||||
"readonly": False,
|
||||
"type": "str",
|
||||
"value": "MyService",
|
||||
}
|
||||
},
|
||||
"type": "DataService",
|
||||
"doc": None,
|
||||
"readonly": False,
|
||||
"name": "MyService",
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_loads_advanced_types(obj: Any, obj_serialization: SerializedObject) -> None:
|
||||
assert dump(loads(obj_serialization)) == dump(obj)
|
Loading…
x
Reference in New Issue
Block a user