| 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 Pythons w/distutils pybsddb |
| 12 | from bsddb3 import db |
| 13 | except ImportError: |
| 14 | # For Python 2.3 |
| 15 | from bsddb 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') |