home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / pythonwin / python.exe / TEST_GET_NONE.PY < prev    next >
Encoding:
Python Source  |  2003-01-28  |  2.3 KB  |  102 lines

  1. """
  2. TestCases for checking set_get_returns_none.
  3. """
  4.  
  5. import sys, os, string
  6. import tempfile
  7. from pprint import pprint
  8. import unittest
  9.  
  10. try:
  11.     # For Python 2.3
  12.     from bsddb import db
  13. except ImportError:
  14.     # For earlier Pythons w/distutils pybsddb
  15.     from bsddb3 import db
  16.  
  17. from test_all import verbose
  18.  
  19.  
  20. #----------------------------------------------------------------------
  21.  
  22. class GetReturnsNoneTestCase(unittest.TestCase):
  23.     def setUp(self):
  24.         self.filename = tempfile.mktemp()
  25.  
  26.     def tearDown(self):
  27.         try:
  28.             os.remove(self.filename)
  29.         except os.error:
  30.             pass
  31.  
  32.  
  33.     def test01_get_returns_none(self):
  34.         d = db.DB()
  35.         d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
  36.         d.set_get_returns_none(1)
  37.  
  38.         for x in string.letters:
  39.             d.put(x, x * 40)
  40.  
  41.         data = d.get('bad key')
  42.         assert data == None
  43.  
  44.         data = d.get('a')
  45.         assert data == 'a'*40
  46.  
  47.         count = 0
  48.         c = d.cursor()
  49.         rec = c.first()
  50.         while rec:
  51.             count = count + 1
  52.             rec = c.next()
  53.  
  54.         assert rec == None
  55.         assert count == 52
  56.  
  57.         c.close()
  58.         d.close()
  59.  
  60.  
  61.     def test02_get_raises_exception(self):
  62.         d = db.DB()
  63.         d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
  64.         d.set_get_returns_none(0)
  65.  
  66.         for x in string.letters:
  67.             d.put(x, x * 40)
  68.  
  69.         self.assertRaises(db.DBNotFoundError, d.get, 'bad key')
  70.         self.assertRaises(KeyError, d.get, 'bad key')
  71.  
  72.         data = d.get('a')
  73.         assert data == 'a'*40
  74.  
  75.         count = 0
  76.         exceptionHappened = 0
  77.         c = d.cursor()
  78.         rec = c.first()
  79.         while rec:
  80.             count = count + 1
  81.             try:
  82.                 rec = c.next()
  83.             except db.DBNotFoundError:  # end of the records
  84.                 exceptionHappened = 1
  85.                 break
  86.  
  87.         assert rec != None
  88.         assert exceptionHappened
  89.         assert count == 52
  90.  
  91.         c.close()
  92.         d.close()
  93.  
  94. #----------------------------------------------------------------------
  95.  
  96. def test_suite():
  97.     return unittest.makeSuite(GetReturnsNoneTestCase)
  98.  
  99.  
  100. if __name__ == '__main__':
  101.     unittest.main(defaultTest='test_suite')
  102.