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