Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | #! /usr/bin/env python |
2 | """Test script for the anydbm module | |
3 | based on testdumbdbm.py | |
4 | """ | |
5 | ||
6 | import os | |
7 | import unittest | |
8 | import anydbm | |
9 | import glob | |
10 | from test import test_support | |
11 | ||
12 | _fname = test_support.TESTFN | |
13 | ||
14 | def _delete_files(): | |
15 | # we don't know the precise name the underlying database uses | |
16 | # so we use glob to locate all names | |
17 | for f in glob.glob(_fname + "*"): | |
18 | try: | |
19 | os.unlink(f) | |
20 | except OSError: | |
21 | pass | |
22 | ||
23 | class AnyDBMTestCase(unittest.TestCase): | |
24 | _dict = {'0': '', | |
25 | 'a': 'Python:', | |
26 | 'b': 'Programming', | |
27 | 'c': 'the', | |
28 | 'd': 'way', | |
29 | 'f': 'Guido', | |
30 | 'g': 'intended' | |
31 | } | |
32 | ||
33 | def __init__(self, *args): | |
34 | unittest.TestCase.__init__(self, *args) | |
35 | ||
36 | def test_anydbm_creation(self): | |
37 | f = anydbm.open(_fname, 'c') | |
38 | self.assertEqual(f.keys(), []) | |
39 | for key in self._dict: | |
40 | f[key] = self._dict[key] | |
41 | self.read_helper(f) | |
42 | f.close() | |
43 | ||
44 | def test_anydbm_modification(self): | |
45 | self.init_db() | |
46 | f = anydbm.open(_fname, 'c') | |
47 | self._dict['g'] = f['g'] = "indented" | |
48 | self.read_helper(f) | |
49 | f.close() | |
50 | ||
51 | def test_anydbm_read(self): | |
52 | self.init_db() | |
53 | f = anydbm.open(_fname, 'r') | |
54 | self.read_helper(f) | |
55 | f.close() | |
56 | ||
57 | def test_anydbm_keys(self): | |
58 | self.init_db() | |
59 | f = anydbm.open(_fname, 'r') | |
60 | keys = self.keys_helper(f) | |
61 | f.close() | |
62 | ||
63 | def read_helper(self, f): | |
64 | keys = self.keys_helper(f) | |
65 | for key in self._dict: | |
66 | self.assertEqual(self._dict[key], f[key]) | |
67 | ||
68 | def init_db(self): | |
69 | f = anydbm.open(_fname, 'n') | |
70 | for k in self._dict: | |
71 | f[k] = self._dict[k] | |
72 | f.close() | |
73 | ||
74 | def keys_helper(self, f): | |
75 | keys = f.keys() | |
76 | keys.sort() | |
77 | dkeys = self._dict.keys() | |
78 | dkeys.sort() | |
79 | self.assertEqual(keys, dkeys) | |
80 | return keys | |
81 | ||
82 | def tearDown(self): | |
83 | _delete_files() | |
84 | ||
85 | def setUp(self): | |
86 | _delete_files() | |
87 | ||
88 | def test_main(): | |
89 | try: | |
90 | test_support.run_unittest(AnyDBMTestCase) | |
91 | finally: | |
92 | _delete_files() | |
93 | ||
94 | if __name__ == "__main__": | |
95 | test_main() |