| #! /usr/bin/env python | |
| """Test script for the anydbm module | |
| based on testdumbdbm.py | |
| """ | |
| import os | |
| import unittest | |
| import glob | |
| from test import test_support | |
| _fname = test_support.TESTFN | |
| # Silence Py3k warning | |
| anydbm = test_support.import_module('anydbm', deprecated=True) | |
| def _delete_files(): | |
| # we don't know the precise name the underlying database uses | |
| # so we use glob to locate all names | |
| for f in glob.glob(_fname + "*"): | |
| try: | |
| os.unlink(f) | |
| except OSError: | |
| pass | |
| class AnyDBMTestCase(unittest.TestCase): | |
| _dict = {'0': '', | |
| 'a': 'Python:', | |
| 'b': 'Programming', | |
| 'c': 'the', | |
| 'd': 'way', | |
| 'f': 'Guido', | |
| 'g': 'intended' | |
| } | |
| def __init__(self, *args): | |
| unittest.TestCase.__init__(self, *args) | |
| def test_anydbm_creation(self): | |
| f = anydbm.open(_fname, 'c') | |
| self.assertEqual(f.keys(), []) | |
| for key in self._dict: | |
| f[key] = self._dict[key] | |
| self.read_helper(f) | |
| f.close() | |
| def test_anydbm_modification(self): | |
| self.init_db() | |
| f = anydbm.open(_fname, 'c') | |
| self._dict['g'] = f['g'] = "indented" | |
| self.read_helper(f) | |
| f.close() | |
| def test_anydbm_read(self): | |
| self.init_db() | |
| f = anydbm.open(_fname, 'r') | |
| self.read_helper(f) | |
| f.close() | |
| def test_anydbm_keys(self): | |
| self.init_db() | |
| f = anydbm.open(_fname, 'r') | |
| keys = self.keys_helper(f) | |
| f.close() | |
| def read_helper(self, f): | |
| keys = self.keys_helper(f) | |
| for key in self._dict: | |
| self.assertEqual(self._dict[key], f[key]) | |
| def init_db(self): | |
| f = anydbm.open(_fname, 'n') | |
| for k in self._dict: | |
| f[k] = self._dict[k] | |
| f.close() | |
| def keys_helper(self, f): | |
| keys = f.keys() | |
| keys.sort() | |
| dkeys = self._dict.keys() | |
| dkeys.sort() | |
| self.assertEqual(keys, dkeys) | |
| return keys | |
| def tearDown(self): | |
| _delete_files() | |
| def setUp(self): | |
| _delete_files() | |
| def test_main(): | |
| try: | |
| test_support.run_unittest(AnyDBMTestCase) | |
| finally: | |
| _delete_files() | |
| if __name__ == "__main__": | |
| test_main() |