mirror of
https://github.com/evennia/evennia.git
synced 2026-03-18 22:06:30 +01:00
Merge branch 'develop' of https://github.com/owllex/evennia into owllex-develop
This commit is contained in:
commit
cab8f0eb2b
2 changed files with 30 additions and 0 deletions
|
|
@ -243,6 +243,10 @@ class _SaverMutable(object):
|
|||
def __delitem__(self, key):
|
||||
self._data.__delitem__(key)
|
||||
|
||||
def deserialize(self):
|
||||
"""Deserializes this mutable into its corresponding non-Saver type."""
|
||||
return deserialize(self)
|
||||
|
||||
|
||||
class _SaverList(_SaverMutable, MutableSequence):
|
||||
"""
|
||||
|
|
@ -418,6 +422,8 @@ def deserialize(obj):
|
|||
tname = typ.__name__
|
||||
if tname in ("_SaverDict", "dict"):
|
||||
return {_iter(key): _iter(val) for key, val in obj.items()}
|
||||
elif tname in ("_SaverOrderedDict", "OrderedDict"):
|
||||
return OrderedDict([(_iter(key), _iter(val)) for key, val in obj.items()])
|
||||
elif tname in _DESERIALIZE_MAPPING:
|
||||
return _DESERIALIZE_MAPPING[tname](_iter(val) for val in obj)
|
||||
elif is_iter(obj):
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@
|
|||
Tests for dbserialize module
|
||||
"""
|
||||
|
||||
from collections import deque
|
||||
from django.test import TestCase
|
||||
from evennia.utils import dbserialize
|
||||
from evennia.objects.objects import DefaultObject
|
||||
from parameterized import parameterized
|
||||
|
||||
|
||||
class TestDbSerialize(TestCase):
|
||||
|
|
@ -64,3 +66,25 @@ class TestDbSerialize(TestCase):
|
|||
self.obj.db.test = {"a": True}
|
||||
self.obj.db.test.update({"b": False})
|
||||
self.assertEqual(self.obj.db.test, {"a": True, "b": False})
|
||||
|
||||
@parameterized.expand(
|
||||
[
|
||||
("list", list, dbserialize._SaverList, [1, 2, 3]),
|
||||
("dict", dict, dbserialize._SaverDict, {"key": "value"}),
|
||||
("set", set, dbserialize._SaverSet, {1, 2, 3}),
|
||||
("deque", deque, dbserialize._SaverDeque, deque(("a", "b", "c"))),
|
||||
(
|
||||
"OrderedDict",
|
||||
dbserialize.OrderedDict,
|
||||
dbserialize._SaverOrderedDict,
|
||||
dbserialize.OrderedDict([("a", 1), ("b", 2), ("c", 3)]),
|
||||
),
|
||||
]
|
||||
)
|
||||
def test_deserialize(self, _, base_type, saver_type, default_value):
|
||||
self.assertIsInstance(default_value, base_type)
|
||||
self.obj.db.test = default_value
|
||||
for value in (dbserialize.deserialize(self.obj.db.test), self.obj.db.test.deserialize()):
|
||||
self.assertIsInstance(value, base_type)
|
||||
self.assertNotIsInstance(value, saver_type)
|
||||
self.assertEqual(value, default_value)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue