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