diff --git a/evennia/utils/dbserialize.py b/evennia/utils/dbserialize.py index ddfdb765de..bca3021a6e 100644 --- a/evennia/utils/dbserialize.py +++ b/evennia/utils/dbserialize.py @@ -229,6 +229,13 @@ class _SaverMutable(object): def __ne__(self, other): return self._data != other + def __lt__(self, other): + return self._data < other + + def __gt__(self, other): + return self._data > other + + @_save def __setitem__(self, key, value): self._data.__setitem__(key, self._convert_mutables(value)) @@ -274,6 +281,13 @@ class _SaverList(_SaverMutable, MutableSequence): def index(self, value, *args): return self._data.index(value, *args) + @_save + def sort(self, *, key=None, reverse=False): + self._data.sort(key=key, reverse=reverse) + + def copy(self): + return self._data.copy() + class _SaverDict(_SaverMutable, MutableMapping): """ diff --git a/evennia/utils/evmore.py b/evennia/utils/evmore.py index 08ac316389..1db4c8d67c 100644 --- a/evennia/utils/evmore.py +++ b/evennia/utils/evmore.py @@ -298,7 +298,7 @@ class EvMore(object): nsize = len(inp) self._npages = nsize // self.height + (0 if nsize % self.height == 0 else 1) self._data = inp - self._paginator_slice + self._paginator = self.paginator_slice def init_f_str(self, text): """ diff --git a/evennia/utils/tests/test_dbserialize.py b/evennia/utils/tests/test_dbserialize.py new file mode 100644 index 0000000000..9d00abfae4 --- /dev/null +++ b/evennia/utils/tests/test_dbserialize.py @@ -0,0 +1,58 @@ +""" +Tests for dbserialize module +""" + +from django.test import TestCase +from evennia.utils import dbserialize +from evennia.objects.objects import DefaultObject + + +class TestDbSerialize(TestCase): + """ + Database serialization operations. + """ + def setUp(self): + self.obj = DefaultObject(db_key="Tester", ) + self.obj.save() + + def test_constants(self): + self.obj.db.test = 1 + self.obj.db.test += 1 + self.assertEqual(self.obj.db.test, 2) + self.obj.db.test -= 3 + self.assertEqual(self.obj.db.test, -1) + self.obj.db.test *= -2 + self.assertEqual(self.obj.db.test, 2) + self.obj.db.test /= 2 + self.assertEqual(self.obj.db.test, 1) + + def test_saverlist(self): + self.obj.db.test = [1, 2, 3] + self.assertEqual(self.obj.db.test, [1, 2, 3]) + self.obj.db.test.append("4") + self.assertEqual(self.obj.db.test, [1, 2, 3, "4"]) + self.obj.db.test.insert(1, 1.5) + self.assertEqual(self.obj.db.test, [1, 1.5, 2, 3, "4"]) + self.obj.db.test.pop() + self.assertEqual(self.obj.db.test, [1, 1.5, 2, 3]) + self.obj.db.test.pop(0) + self.assertEqual(self.obj.db.test, [1.5, 2, 3]) + self.obj.db.test.reverse() + self.assertEqual(self.obj.db.test, [3, 2, 1.5]) + + def test_saverlist__sort(self): + self.obj.db.test = [3, 2, 1.5] + self.obj.db.test.sort() + self.assertEqual(self.obj.db.test, [1.5, 2, 3]) + self.obj.db.test.extend([0, 4, 5]) + self.assertEqual(self.obj.db.test, [1.5, 2, 3, 0, 4, 5]) + self.obj.db.test.sort() + self.assertEqual(self.obj.db.test, [0, 1.5, 2, 3, 4, 5]) + self.obj.db.test = [[4, 5, 6], [1, 2, 3]] + self.assertEqual(self.obj.db.test, [[4, 5, 6], [1, 2, 3]]) + self.obj.db.test.sort() + self.assertEqual(self.obj.db.test, [[1, 2, 3], [4, 5, 6]]) + self.obj.db.test = [{1: 0}, {0: 1}] + self.assertEqual(self.obj.db.test, [{1: 0}, {0: 1}]) + self.obj.db.test.sort(key=lambda d: str(d)) + self.assertEqual(self.obj.db.test, [{0: 1}, {1: 0}])