1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
from __future__ import print_function, unicode_literals
import unittest
import tempfile
from withsqlite import sqlite_db
class WithSQLiteTest(unittest.TestCase):
def setUp(self):
self.db = sqlite_db('test')
self.db.begin()
def tearDown(self):
self.db.clear()
self.db.save()
def test_empty(self):
self.assertEqual(self.db.items(), [])
def test_add_one_string(self):
self.db['a'] = 'test'
items = self.db.items()
self.assertEqual(len(items), 1)
k, v = items[0]
self.assertEqual(k, 'a')
self.assertEqual(v, 'test')
def test_add_two_strings(self):
self.db['a'] = 'test_a'
self.db['b'] = 'test_b'
items = self.db.items()
self.assertEqual(len(items), 2)
k, v = items[0]
self.assertEqual(k, 'a')
self.assertEqual(v, 'test_a')
k, v = items[1]
self.assertEqual(k, 'b')
self.assertEqual(v, 'test_b')
def test_add_a_list(self):
self.db['list'] = [1, 2, 3, 4, 5]
items = self.db.items()
self.assertEqual(len(items), 1)
k, v = items[0]
self.assertEqual(k, 'list')
self.assertEqual(v, [1, 2, 3, 4, 5])
def test_del_value(self):
self.db['a'] = 'value_a'
self.db['some'] = 'to be deleted'
self.assertEqual(len(self.db.items()), 2)
del self.db['some']
self.assertEqual(len(self.db.items()), 1)
self.assertIsNone(self.db.get('some'))
try:
self.db['some']
self.assertEqual(1, 0, "__getitem__")
except KeyError:
pass
def test_keys(self):
values = ['a', 'b', 'c']
for val in values:
self.db[val] = val.upper()
self.assertEqual(set(self.db.keys()), set(values))
def test_values(self):
values = ['A', 'B', 'C']
for val in values:
self.db[val.lower()] = val
self.assertEqual(set(self.db.values()), set(values))
def test_get(self):
self.assertEqual(self.db.get('some', 5), 5)
def test_repr(self):
adict = {'a': 'A'}
self.db['a'] = 'A'
self.assertEqual(repr(adict), repr(self.db))
def test_contains(self):
self.db['key'] = 'value'
self.assertTrue('key' in self.db)
self.assertFalse('value' in self.db)
def test_update(self):
self.db['key'] = 'value'
self.assertEqual(self.db['key'], 'value')
self.db['key'] = 'foobar'
self.assertEqual(self.db['key'], 'foobar')
def test_dir(self):
workdir = tempfile.mkdtemp()
with sqlite_db("test", dir=workdir) as db:
db['testing'] = 'dir'
with sqlite_db("test", dir=workdir) as db:
self.assertEqual(db['testing'], 'dir')
def test_transaction(self):
a = sqlite_db("test")
with a.transaction():
a['key'] = 'value'
self.assertEqual(len(a.items()), 1)
self.assertEqual(len(self.db.items()), 0)
items = self.db.items()
self.assertEqual(len(items), 1)
k, v = items[0]
self.assertEqual('key', k)
self.assertEqual('value', v)
def test_with(self):
with sqlite_db("test") as db:
db['a'] = 'test_a'
db['b'] = 'test_b'
items = db.items()
self.assertEqual(len(items), 2)
k, v = items[0]
self.assertEqual(k, 'a')
self.assertEqual(v, 'test_a')
k, v = items[1]
self.assertEqual(k, 'b')
self.assertEqual(v, 'test_b')
def test_multitable(self):
store_file = "test"
with sqlite_db(store_file, table="firstboot", autocommit=True) as db:
db['state']=1
with sqlite_db(store_file, table="thisbox", autocommit=True) as db:
db['state']=1
|