mirror of https://github.com/python/cpython
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')
|