diff options
Diffstat (limited to 'Lib/test/test_anydbm.py')
-rw-r--r-- | Lib/test/test_anydbm.py | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/Lib/test/test_anydbm.py b/Lib/test/test_anydbm.py deleted file mode 100644 index aab1388..0000000 --- a/Lib/test/test_anydbm.py +++ /dev/null @@ -1,147 +0,0 @@ -#! /usr/bin/env python -"""Test script for the dbm.open function based on testdumbdbm.py""" - -import os -import unittest -import dbm -import glob -import test.support - -_fname = test.support.TESTFN - -# -# Iterates over every database module supported by dbm currently available, -# setting dbm to use each in turn, and yielding that module -# -def dbm_iterator(): - old_default = dbm._defaultmod - for module in dbm._modules.values(): - dbm._defaultmod = module - yield module - dbm._defaultmod = old_default - -# -# Clean up all scratch databases we might have created during testing -# -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 + "*"): - test.support.unlink(f) - - -class AnyDBMTestCase(unittest.TestCase): - _dict = {'0': b'', - 'a': b'Python:', - 'b': b'Programming', - 'c': b'the', - 'd': b'way', - 'f': b'Guido', - 'g': b'intended', - } - - def __init__(self, *args): - unittest.TestCase.__init__(self, *args) - - def test_anydbm_creation(self): - f = dbm.open(_fname, 'c') - self.assertEqual(list(f.keys()), []) - for key in self._dict: - f[key.encode("ascii")] = self._dict[key] - self.read_helper(f) - f.close() - - def test_anydbm_modification(self): - self.init_db() - f = dbm.open(_fname, 'c') - self._dict['g'] = f[b'g'] = b"indented" - self.read_helper(f) - f.close() - - def test_anydbm_read(self): - self.init_db() - f = dbm.open(_fname, 'r') - self.read_helper(f) - f.close() - - def test_anydbm_keys(self): - self.init_db() - f = dbm.open(_fname, 'r') - keys = self.keys_helper(f) - f.close() - - def test_anydbm_access(self): - self.init_db() - f = dbm.open(_fname, 'r') - key = "a".encode("ascii") - assert(key in f) - assert(f[key] == b"Python:") - f.close() - - def read_helper(self, f): - keys = self.keys_helper(f) - for key in self._dict: - self.assertEqual(self._dict[key], f[key.encode("ascii")]) - - def init_db(self): - f = dbm.open(_fname, 'n') - for k in self._dict: - f[k.encode("ascii")] = self._dict[k] - f.close() - - def keys_helper(self, f): - keys = sorted(k.decode("ascii") for k in f.keys()) - dkeys = sorted(self._dict.keys()) - self.assertEqual(keys, dkeys) - return keys - - def tearDown(self): - delete_files() - - def setUp(self): - delete_files() - - -class WhichDBTestCase(unittest.TestCase): - # Actual test methods are added to namespace after class definition. - def __init__(self, *args): - unittest.TestCase.__init__(self, *args) - - def test_whichdb(self): - for module in dbm_iterator(): - # Check whether whichdb correctly guesses module name - # for databases opened with "module" module. - # Try with empty files first - name = module.__name__ - if name == 'dbm.dumb': - continue # whichdb can't support dbm.dumb - test.support.unlink(_fname) - f = module.open(_fname, 'c') - f.close() - self.assertEqual(name, dbm.whichdb(_fname)) - # Now add a key - f = module.open(_fname, 'w') - f[b"1"] = b"1" - # and test that we can find it - self.assertTrue(b"1" in f) - # and read it - self.assertTrue(f[b"1"] == b"1") - f.close() - self.assertEqual(name, dbm.whichdb(_fname)) - - def tearDown(self): - delete_files() - - def setUp(self): - delete_files() - - -def test_main(): - try: - for module in dbm_iterator(): - test.support.run_unittest(AnyDBMTestCase, WhichDBTestCase) - finally: - delete_files() - -if __name__ == "__main__": - test_main() |