This repository has been archived on 2024-12-22. You can view files and clone it, but cannot push or open issues or pull requests.
PyBitmessage-2024-12-22/mockenv/lib/python3.6/site-packages/kivy/tests/test_storage.py
2022-07-22 16:13:59 +05:30

136 lines
4.8 KiB
Python

'''
Storage tests
=============
'''
import unittest
from os.path import abspath, dirname, join
import errno
import os
class StorageTestCase(unittest.TestCase):
def test_dict_storage(self):
from kivy.storage.dictstore import DictStore
from tempfile import mkstemp
from os import unlink, close
try:
tmpfd, tmpfn = mkstemp('.dict')
close(tmpfd)
self._do_store_test_empty(DictStore(tmpfn))
self._do_store_test_filled(DictStore(tmpfn))
finally:
unlink(tmpfn)
def test_dict_storage_nofolder(self):
from kivy.storage.dictstore import DictStore
self._do_store_test_nofolder(DictStore)
def test_json_storage_nofolder(self):
from kivy.storage.jsonstore import JsonStore
self._do_store_test_nofolder(JsonStore)
def test_json_storage(self):
from kivy.storage.jsonstore import JsonStore
from tempfile import mkstemp
from os import unlink, close
try:
tmpfd, tmpfn = mkstemp('.json')
close(tmpfd)
self._do_store_test_empty(JsonStore(tmpfn))
self._do_store_test_filled(JsonStore(tmpfn))
finally:
unlink(tmpfn)
try:
tmpfd, tmpfn = mkstemp('.json')
close(tmpfd)
self._do_store_test_empty(JsonStore(tmpfn, indent=2))
self._do_store_test_filled(JsonStore(tmpfn, indent=2))
finally:
unlink(tmpfn)
try:
tmpfd, tmpfn = mkstemp('.json')
close(tmpfd)
self._do_store_test_empty(JsonStore(tmpfn, sort_keys=True))
self._do_store_test_filled(JsonStore(tmpfn, sort_keys=True))
finally:
unlink(tmpfn)
def test_redis_storage(self):
if os.environ.get('NONETWORK'):
return
try:
from kivy.storage.redisstore import RedisStore
from redis.exceptions import ConnectionError
try:
params = dict(db=15)
self._do_store_test_empty(RedisStore(params))
self._do_store_test_filled(RedisStore(params))
except ConnectionError:
pass
except ImportError:
pass
def _do_store_test_empty(self, store):
store.clear()
self.assertTrue(store.count() == 0)
self.assertFalse(store.exists('plop'))
self.assertRaises(KeyError, lambda: store.get('plop'))
self.assertTrue(store.put('plop', name='Hello', age=30))
self.assertTrue(store.exists('plop'))
self.assertTrue(store.get('plop').get('name') == 'Hello')
self.assertTrue(store.get('plop').get('age') == 30)
self.assertTrue(store.count() == 1)
self.assertTrue('plop' in store.keys())
# test queries
store.put('key1', name='Name1', attr1='Common')
store.put('key2', name='Name2', attr1='Common', attr2='bleh')
store.put('key3', name='Name3', attr1='Common', attr2='bleh')
self.assertTrue(store.count() == 4)
self.assertTrue(store.exists('key1'))
self.assertTrue(store.exists('key2'))
self.assertTrue(store.exists('key3'))
self.assertTrue(len(list(store.find(name='Name2'))) == 1)
self.assertTrue(list(store.find(name='Name2'))[0][0] == 'key2')
self.assertTrue(len(list(store.find(attr1='Common'))) == 3)
self.assertTrue(len(list(store.find(attr2='bleh'))) == 2)
self.assertTrue(
len(list(store.find(attr1='Common', attr2='bleh'))) == 2)
self.assertTrue(len(list(store.find(name='Name2', attr2='bleh'))) == 1)
self.assertTrue(len(list(store.find(name='Name1', attr2='bleh'))) == 0)
def _do_store_test_filled(self, store):
self.assertTrue(store.count() == 4)
self.assertRaises(KeyError, lambda: store.get('plop2'))
self.assertRaises(KeyError, lambda: store.delete('plop2'))
self.assertTrue(store.exists('plop'))
self.assertTrue(store.get('plop').get('name') == 'Hello')
self.assertTrue(store.put('plop', name='World', age=1))
self.assertTrue(store.get('plop').get('name') == 'World')
self.assertTrue(store.exists('plop'))
self.assertTrue(store.delete('plop'))
self.assertRaises(KeyError, lambda: store.delete('plop'))
self.assertRaises(KeyError, lambda: store.get('plop'))
def _do_store_test_nofolder(self, store_cls):
ext = store_cls.__name__.lower()[:4]
path = join(
dirname(abspath(__file__)),
'__i_dont_exist__',
'test.' + ext
)
with self.assertRaises(IOError) as context:
store = store_cls(path)
self.assertEqual(context.exception.errno, errno.ENOENT)
if __name__ == '__main__':
unittest.main()