Fixed bugs with SQLiteDict and added tests

This commit is contained in:
Pablo Hoffman 2010-09-08 14:32:28 -03:00
parent 7da79b90fe
commit cb7cc7c8bb
2 changed files with 23 additions and 3 deletions

View File

@ -20,6 +20,24 @@ class SqliteDictTest(unittest.TestCase):
d.clear()
self.failIf(d.items())
def test_in(self):
d = self.dict_class()
self.assertFalse('test' in d)
d['test'] = 123
self.assertTrue('test' in d)
def test_keyerror(self):
d = self.dict_class()
self.assertRaises(KeyError, d.__getitem__, 'test')
def test_replace(self):
d = self.dict_class()
self.assertEqual(d.get('test'), None)
d['test'] = 123
self.assertEqual(d.get('test'), 123)
d['test'] = 456
self.assertEqual(d.get('test'), 456)
class JsonSqliteDictTest(SqliteDictTest):

View File

@ -19,12 +19,14 @@ class SqliteDict(DictMixin):
def __getitem__(self, key):
key = self.encode(key)
q = "select value from %s where key=?" % self.table
value = self.conn.execute(q, (key,)).fetchone()[0]
return self.decode(value)
value = self.conn.execute(q, (key,)).fetchone()
if value:
return self.decode(value[0])
raise KeyError(key)
def __setitem__(self, key, value):
key, value = self.encode(key), self.encode(value)
q = "insert into %s (key, value) values (?,?)" % self.table
q = "insert or replace into %s (key, value) values (?,?)" % self.table
self.conn.execute(q, (key, value))
self.conn.commit()