| """ |
| 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') |