/Lib/test/test_anydbm.py

http://unladen-swallow.googlecode.com/ · Python · 95 lines · 73 code · 16 blank · 6 comment · 9 complexity · 63455c10720a5a1652d7dfcf7b774b5a MD5 · raw file

  1. #! /usr/bin/env python
  2. """Test script for the anydbm module
  3. based on testdumbdbm.py
  4. """
  5. import os
  6. import unittest
  7. import anydbm
  8. import glob
  9. from test import test_support
  10. _fname = test_support.TESTFN
  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()