home *** CD-ROM | disk | FTP | other *** search
- """
- TestCases for checking set_get_returns_none.
- """
-
- import sys, os, string
- import tempfile
- from pprint import pprint
- import unittest
-
- try:
- # For Python 2.3
- from bsddb import db
- except ImportError:
- # For earlier Pythons w/distutils pybsddb
- from bsddb3 import db
-
- from test_all import verbose
-
-
- #----------------------------------------------------------------------
-
- class GetReturnsNoneTestCase(unittest.TestCase):
- def setUp(self):
- self.filename = tempfile.mktemp()
-
- def tearDown(self):
- try:
- os.remove(self.filename)
- except os.error:
- pass
-
-
- def test01_get_returns_none(self):
- d = db.DB()
- d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
- d.set_get_returns_none(1)
-
- for x in string.letters:
- d.put(x, x * 40)
-
- data = d.get('bad key')
- assert data == None
-
- data = d.get('a')
- assert data == 'a'*40
-
- count = 0
- c = d.cursor()
- rec = c.first()
- while rec:
- count = count + 1
- rec = c.next()
-
- assert rec == None
- assert count == 52
-
- c.close()
- d.close()
-
-
- def test02_get_raises_exception(self):
- d = db.DB()
- d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
- d.set_get_returns_none(0)
-
- for x in string.letters:
- d.put(x, x * 40)
-
- self.assertRaises(db.DBNotFoundError, d.get, 'bad key')
- self.assertRaises(KeyError, d.get, 'bad key')
-
- data = d.get('a')
- assert data == 'a'*40
-
- count = 0
- exceptionHappened = 0
- c = d.cursor()
- rec = c.first()
- while rec:
- count = count + 1
- try:
- rec = c.next()
- except db.DBNotFoundError: # end of the records
- exceptionHappened = 1
- break
-
- assert rec != None
- assert exceptionHappened
- assert count == 52
-
- c.close()
- d.close()
-
- #----------------------------------------------------------------------
-
- def test_suite():
- return unittest.makeSuite(GetReturnsNoneTestCase)
-
-
- if __name__ == '__main__':
- unittest.main(defaultTest='test_suite')
-