mirror of
https://github.com/python/cpython.git
synced 2024-12-13 20:05:53 +08:00
41631e8f66
features in BerkeleyDB not exposed. notably: the DB_MPOOLFILE interface has not yet been wrapped in an object. Adds support for building and installing bsddb3 in python2.3 that has an older version of this module installed as bsddb without conflicts. The pybsddb.sf.net build/packaged version of the module uses a dynamicly loadable module called _pybsddb rather than _bsddb.
102 lines
2.2 KiB
Python
102 lines
2.2 KiB
Python
"""
|
|
TestCases for checking set_get_returns_none.
|
|
"""
|
|
|
|
import sys, os, string
|
|
import tempfile
|
|
from pprint import pprint
|
|
import unittest
|
|
|
|
try:
|
|
# For Pythons w/distutils pybsddb
|
|
from bsddb3 import db
|
|
except ImportError:
|
|
# For Python 2.3
|
|
from bsddb 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')
|