/Lib/bsddb/test/test_get_none.py

http://unladen-swallow.googlecode.com/ · Python · 92 lines · 61 code · 26 blank · 5 comment · 9 complexity · f7b409587d25695afe98dd80b2556b5a MD5 · raw file

  1. """
  2. TestCases for checking set_get_returns_none.
  3. """
  4. import os, string
  5. import unittest
  6. from test_all import db, verbose, get_new_database_path
  7. #----------------------------------------------------------------------
  8. class GetReturnsNoneTestCase(unittest.TestCase):
  9. def setUp(self):
  10. self.filename = get_new_database_path()
  11. def tearDown(self):
  12. try:
  13. os.remove(self.filename)
  14. except os.error:
  15. pass
  16. def test01_get_returns_none(self):
  17. d = db.DB()
  18. d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
  19. d.set_get_returns_none(1)
  20. for x in string.letters:
  21. d.put(x, x * 40)
  22. data = d.get('bad key')
  23. self.assertEqual(data, None)
  24. data = d.get(string.letters[0])
  25. self.assertEqual(data, string.letters[0]*40)
  26. count = 0
  27. c = d.cursor()
  28. rec = c.first()
  29. while rec:
  30. count = count + 1
  31. rec = c.next()
  32. self.assertEqual(rec, None)
  33. self.assertEqual(count, len(string.letters))
  34. c.close()
  35. d.close()
  36. def test02_get_raises_exception(self):
  37. d = db.DB()
  38. d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
  39. d.set_get_returns_none(0)
  40. for x in string.letters:
  41. d.put(x, x * 40)
  42. self.assertRaises(db.DBNotFoundError, d.get, 'bad key')
  43. self.assertRaises(KeyError, d.get, 'bad key')
  44. data = d.get(string.letters[0])
  45. self.assertEqual(data, string.letters[0]*40)
  46. count = 0
  47. exceptionHappened = 0
  48. c = d.cursor()
  49. rec = c.first()
  50. while rec:
  51. count = count + 1
  52. try:
  53. rec = c.next()
  54. except db.DBNotFoundError: # end of the records
  55. exceptionHappened = 1
  56. break
  57. self.assertNotEqual(rec, None)
  58. self.assert_(exceptionHappened)
  59. self.assertEqual(count, len(string.letters))
  60. c.close()
  61. d.close()
  62. #----------------------------------------------------------------------
  63. def test_suite():
  64. return unittest.makeSuite(GetReturnsNoneTestCase)
  65. if __name__ == '__main__':
  66. unittest.main(defaultTest='test_suite')