test_anydbm.py 2.2 KB

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