Add .sort support for SaverList

This commit is contained in:
Griatch 2020-07-18 18:03:54 +02:00
parent 255ef3d4db
commit e58147a7e5
3 changed files with 73 additions and 1 deletions

View file

@ -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):
"""

View file

@ -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):
"""

View file

@ -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}])