blob: 24120610cd695b0a82bf02be17d4e8ad6dc967e4 [file] [log] [blame]
Skip Montanaro4894a972002-03-18 03:00:37 +00001"""Test script for the anydbm module
2 based on testdumbdbm.py
3"""
4
5import os
Skip Montanaro4894a972002-03-18 03:00:37 +00006import unittest
Skip Montanaro4894a972002-03-18 03:00:37 +00007import glob
Barry Warsaw04f357c2002-07-23 19:04:11 +00008from test import test_support
Skip Montanaro4894a972002-03-18 03:00:37 +00009
Guido van Rossum3b0a3292002-08-09 16:38:32 +000010_fname = test_support.TESTFN
Skip Montanaro4894a972002-03-18 03:00:37 +000011
Ezio Melottia2d46532010-01-30 07:22:54 +000012# Silence Py3k warning
13anydbm = test_support.import_module('anydbm', deprecated=True)
14
Skip Montanaro4894a972002-03-18 03:00:37 +000015def _delete_files():
16 # we don't know the precise name the underlying database uses
17 # so we use glob to locate all names
18 for f in glob.glob(_fname + "*"):
19 try:
20 os.unlink(f)
21 except OSError:
22 pass
23
24class AnyDBMTestCase(unittest.TestCase):
25 _dict = {'0': '',
26 'a': 'Python:',
27 'b': 'Programming',
28 'c': 'the',
29 'd': 'way',
30 'f': 'Guido',
Skip Montanaroa5a9a732008-02-10 15:32:16 +000031 'g': 'intended'
Skip Montanaro4894a972002-03-18 03:00:37 +000032 }
33
34 def __init__(self, *args):
35 unittest.TestCase.__init__(self, *args)
36
37 def test_anydbm_creation(self):
38 f = anydbm.open(_fname, 'c')
39 self.assertEqual(f.keys(), [])
40 for key in self._dict:
41 f[key] = self._dict[key]
42 self.read_helper(f)
43 f.close()
44
45 def test_anydbm_modification(self):
46 self.init_db()
47 f = anydbm.open(_fname, 'c')
48 self._dict['g'] = f['g'] = "indented"
49 self.read_helper(f)
50 f.close()
51
52 def test_anydbm_read(self):
53 self.init_db()
54 f = anydbm.open(_fname, 'r')
55 self.read_helper(f)
56 f.close()
57
58 def test_anydbm_keys(self):
59 self.init_db()
60 f = anydbm.open(_fname, 'r')
61 keys = self.keys_helper(f)
62 f.close()
63
64 def read_helper(self, f):
65 keys = self.keys_helper(f)
66 for key in self._dict:
67 self.assertEqual(self._dict[key], f[key])
68
69 def init_db(self):
70 f = anydbm.open(_fname, 'n')
71 for k in self._dict:
72 f[k] = self._dict[k]
73 f.close()
74
75 def keys_helper(self, f):
76 keys = f.keys()
77 keys.sort()
78 dkeys = self._dict.keys()
79 dkeys.sort()
80 self.assertEqual(keys, dkeys)
81 return keys
82
83 def tearDown(self):
84 _delete_files()
85
86 def setUp(self):
87 _delete_files()
88
89def test_main():
90 try:
91 test_support.run_unittest(AnyDBMTestCase)
92 finally:
93 _delete_files()
94
95if __name__ == "__main__":
96 test_main()