blob: 874e3b7dbcf8ea4bdda7098f913553d3014bdf05 [file] [log] [blame]
Skip Montanaro4894a972002-03-18 03:00:37 +00001#! /usr/bin/env python
2"""Test script for the anydbm module
3 based on testdumbdbm.py
4"""
5
6import os
7import test_support
8import unittest
9import anydbm
10import tempfile
11import glob
12
13_fname = tempfile.mktemp()
14
15def _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',
31 'g': 'intended'
32 }
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()