|
@@ -1,5 +1,6 @@
|
|
from __future__ import annotations
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
+import datetime
|
|
import functools
|
|
import functools
|
|
from typing import Dict, List
|
|
from typing import Dict, List
|
|
|
|
|
|
@@ -37,6 +38,7 @@ class TestState(State):
|
|
obj: Object = Object()
|
|
obj: Object = Object()
|
|
complex: Dict[int, Object] = {1: Object(), 2: Object()}
|
|
complex: Dict[int, Object] = {1: Object(), 2: Object()}
|
|
fig: Figure = Figure()
|
|
fig: Figure = Figure()
|
|
|
|
+ dt: datetime.datetime = datetime.datetime.fromisoformat("1989-11-09T18:53:00+01:00")
|
|
|
|
|
|
@ComputedVar
|
|
@ComputedVar
|
|
def sum(self) -> float:
|
|
def sum(self) -> float:
|
|
@@ -202,6 +204,7 @@ def test_class_vars(test_state):
|
|
"sum",
|
|
"sum",
|
|
"upper",
|
|
"upper",
|
|
"fig",
|
|
"fig",
|
|
|
|
+ "dt",
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -267,6 +270,58 @@ def test_dict(test_state):
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
+def test_format_state(test_state):
|
|
|
|
+ """Test that the format state is correct.
|
|
|
|
+
|
|
|
|
+ Args:
|
|
|
|
+ test_state: A state.
|
|
|
|
+ """
|
|
|
|
+ formatted_state = format.format_state(test_state.dict())
|
|
|
|
+ exp_formatted_state = {
|
|
|
|
+ "array": [1, 2, 3.14],
|
|
|
|
+ "child_state": {"count": 23, "grandchild_state": {"value2": ""}, "value": ""},
|
|
|
|
+ "child_state2": {"value": ""},
|
|
|
|
+ "complex": {
|
|
|
|
+ 1: {"prop1": 42, "prop2": "hello"},
|
|
|
|
+ 2: {"prop1": 42, "prop2": "hello"},
|
|
|
|
+ },
|
|
|
|
+ "dt": "1989-11-09 18:53:00+01:00",
|
|
|
|
+ "fig": [],
|
|
|
|
+ "is_hydrated": False,
|
|
|
|
+ "key": "",
|
|
|
|
+ "map_key": "a",
|
|
|
|
+ "mapping": {"a": [1, 2, 3], "b": [4, 5, 6]},
|
|
|
|
+ "num1": 0,
|
|
|
|
+ "num2": 3.14,
|
|
|
|
+ "obj": {"prop1": 42, "prop2": "hello"},
|
|
|
|
+ "sum": 3.14,
|
|
|
|
+ "upper": "",
|
|
|
|
+ }
|
|
|
|
+ assert formatted_state == exp_formatted_state
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def test_format_state_datetime():
|
|
|
|
+ """Test that the format state is correct for datetime classes."""
|
|
|
|
+
|
|
|
|
+ class DateTimeState(State):
|
|
|
|
+ d: datetime.date = datetime.date.fromisoformat("1989-11-09")
|
|
|
|
+ dt: datetime.datetime = datetime.datetime.fromisoformat(
|
|
|
|
+ "1989-11-09T18:53:00+01:00"
|
|
|
|
+ )
|
|
|
|
+ t: datetime.time = datetime.time.fromisoformat("18:53:00+01:00")
|
|
|
|
+ td: datetime.timedelta = datetime.timedelta(days=11, minutes=11)
|
|
|
|
+
|
|
|
|
+ formatted_state = format.format_state(DateTimeState().dict())
|
|
|
|
+ exp_formatted_state = {
|
|
|
|
+ "d": "1989-11-09",
|
|
|
|
+ "dt": "1989-11-09 18:53:00+01:00",
|
|
|
|
+ "is_hydrated": False,
|
|
|
|
+ "t": "18:53:00+01:00",
|
|
|
|
+ "td": "11 days, 0:11:00",
|
|
|
|
+ }
|
|
|
|
+ assert formatted_state == exp_formatted_state
|
|
|
|
+
|
|
|
|
+
|
|
def test_default_setters(test_state):
|
|
def test_default_setters(test_state):
|
|
"""Test that we can set default values.
|
|
"""Test that we can set default values.
|
|
|
|
|
|
@@ -575,6 +630,7 @@ def test_reset(test_state, child_state):
|
|
"array",
|
|
"array",
|
|
"map_key",
|
|
"map_key",
|
|
"mapping",
|
|
"mapping",
|
|
|
|
+ "dt",
|
|
}
|
|
}
|
|
|
|
|
|
# The dirty vars should be reset.
|
|
# The dirty vars should be reset.
|