#! /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() |