@@ -24,6 +24,8 @@ def setUp(self):
24
24
self .boolean = True
25
25
self .none = None
26
26
self .timedelta = timedelta (days = 1 , hours = 2 , minutes = 3 )
27
+ self .list = [1 , 2 , self .date ]
28
+ self .dict = {'key' : self .date , 'key2' : 1 }
27
29
28
30
def test_serializes_and_deserializes_default_types (self ):
29
31
self .assertEqual (dumps (self .datetime ), '{"__type__": "datetime", "__value__": "2023-10-05T15:30:00"}' )
@@ -37,6 +39,14 @@ def test_serializes_and_deserializes_default_types(self):
37
39
self .assertEqual (dumps (self .boolean ), '{"__type__": "default", "__value__": true}' )
38
40
self .assertEqual (dumps (self .none ), '{"__type__": "default", "__value__": null}' )
39
41
self .assertEqual (dumps (self .timedelta ), '{"__type__": "timedelta", "__value__": 93780.0}' )
42
+ self .assertEqual (
43
+ dumps (self .list ),
44
+ '{"__type__": "default", "__value__": [1, 2, {"__type__": "date", "__value__": "2023-10-05"}]}' ,
45
+ )
46
+ self .assertEqual (
47
+ dumps (self .dict ),
48
+ '{"__type__": "default", "__value__": {"key": {"__type__": "date", "__value__": "2023-10-05"}, "key2": 1}}' ,
49
+ )
40
50
for t in (
41
51
self .datetime ,
42
52
self .date ,
@@ -49,6 +59,8 @@ def test_serializes_and_deserializes_default_types(self):
49
59
self .boolean ,
50
60
self .none ,
51
61
self .timedelta ,
62
+ self .dict ,
63
+ self .list ,
52
64
):
53
65
self .assertEqual (t , loads (dumps (t )))
54
66
@@ -88,3 +100,14 @@ def test_register_known_type(self):
88
100
register_type (int , 'new_custom_type' , lambda o : o .value , lambda o : int (o ))
89
101
with self .assertRaisesRegex (ValueError , 'Type with discriminator new_custom_type is already registered' ):
90
102
register_type (int , 'new_custom_type' , lambda o : o .value , lambda o : int (o ))
103
+
104
+ def test_nested_collections (self ):
105
+ data = {'key' : [[[[{'key' : self .date }]]]]}
106
+ self .assertEqual (
107
+ dumps (data ),
108
+ (
109
+ '{"__type__": "default", '
110
+ '"__value__": {"key": [[[[{"key": {"__type__": "date", "__value__": "2023-10-05"}}]]]]}}'
111
+ ),
112
+ )
113
+ self .assertEqual (data , loads (dumps (data )))
0 commit comments