1 |
|
---|
2 | import os, string
|
---|
3 | import unittest
|
---|
4 |
|
---|
5 | from test_all import db, dbobj, test_support, get_new_environment_path, \
|
---|
6 | get_new_database_path
|
---|
7 |
|
---|
8 | #----------------------------------------------------------------------
|
---|
9 |
|
---|
10 | class dbobjTestCase(unittest.TestCase):
|
---|
11 | """Verify that dbobj.DB and dbobj.DBEnv work properly"""
|
---|
12 | db_name = 'test-dbobj.db'
|
---|
13 |
|
---|
14 | def setUp(self):
|
---|
15 | self.homeDir = get_new_environment_path()
|
---|
16 |
|
---|
17 | def tearDown(self):
|
---|
18 | if hasattr(self, 'db'):
|
---|
19 | del self.db
|
---|
20 | if hasattr(self, 'env'):
|
---|
21 | del self.env
|
---|
22 | test_support.rmtree(self.homeDir)
|
---|
23 |
|
---|
24 | def test01_both(self):
|
---|
25 | class TestDBEnv(dbobj.DBEnv): pass
|
---|
26 | class TestDB(dbobj.DB):
|
---|
27 | def put(self, key, *args, **kwargs):
|
---|
28 | key = key.upper()
|
---|
29 | # call our parent classes put method with an upper case key
|
---|
30 | return dbobj.DB.put(self, key, *args, **kwargs)
|
---|
31 | self.env = TestDBEnv()
|
---|
32 | self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
|
---|
33 | self.db = TestDB(self.env)
|
---|
34 | self.db.open(self.db_name, db.DB_HASH, db.DB_CREATE)
|
---|
35 | self.db.put('spam', 'eggs')
|
---|
36 | self.assertEqual(self.db.get('spam'), None,
|
---|
37 | "overridden dbobj.DB.put() method failed [1]")
|
---|
38 | self.assertEqual(self.db.get('SPAM'), 'eggs',
|
---|
39 | "overridden dbobj.DB.put() method failed [2]")
|
---|
40 | self.db.close()
|
---|
41 | self.env.close()
|
---|
42 |
|
---|
43 | def test02_dbobj_dict_interface(self):
|
---|
44 | self.env = dbobj.DBEnv()
|
---|
45 | self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
|
---|
46 | self.db = dbobj.DB(self.env)
|
---|
47 | self.db.open(self.db_name+'02', db.DB_HASH, db.DB_CREATE)
|
---|
48 | # __setitem__
|
---|
49 | self.db['spam'] = 'eggs'
|
---|
50 | # __len__
|
---|
51 | self.assertEqual(len(self.db), 1)
|
---|
52 | # __getitem__
|
---|
53 | self.assertEqual(self.db['spam'], 'eggs')
|
---|
54 | # __del__
|
---|
55 | del self.db['spam']
|
---|
56 | self.assertEqual(self.db.get('spam'), None, "dbobj __del__ failed")
|
---|
57 | self.db.close()
|
---|
58 | self.env.close()
|
---|
59 |
|
---|
60 | def test03_dbobj_type_before_open(self):
|
---|
61 | # Ensure this doesn't cause a segfault.
|
---|
62 | self.assertRaises(db.DBInvalidArgError, db.DB().type)
|
---|
63 |
|
---|
64 | #----------------------------------------------------------------------
|
---|
65 |
|
---|
66 | def test_suite():
|
---|
67 | return unittest.makeSuite(dbobjTestCase)
|
---|
68 |
|
---|
69 | if __name__ == '__main__':
|
---|
70 | unittest.main(defaultTest='test_suite')
|
---|