summaryrefslogtreecommitdiffstats
path: root/Lib/bsddb/test/test_compat.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/bsddb/test/test_compat.py')
-rw-r--r--Lib/bsddb/test/test_compat.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/Lib/bsddb/test/test_compat.py b/Lib/bsddb/test/test_compat.py
index 12464ca..b108db4 100644
--- a/Lib/bsddb/test/test_compat.py
+++ b/Lib/bsddb/test/test_compat.py
@@ -49,6 +49,10 @@ class CompatibilityTestCase(unittest.TestCase):
assert getTest[1] == 'quick', 'data mismatch!'
+ rv = f.set_location(3)
+ if rv != (3, 'brown'):
+ self.fail('recno database set_location failed: '+repr(rv))
+
f[25] = 'twenty-five'
f.close()
del f
@@ -83,7 +87,6 @@ class CompatibilityTestCase(unittest.TestCase):
f.close()
-
def do_bthash_test(self, factory, what):
if verbose:
print '\nTesting: ', what
@@ -103,13 +106,16 @@ class CompatibilityTestCase(unittest.TestCase):
f['b'] = 'van'
f['c'] = 'Rossum'
f['d'] = 'invented'
+ # 'e' intentionally left out
f['f'] = 'Python'
if verbose:
print '%s %s %s' % (f['a'], f['b'], f['c'])
if verbose:
print 'key ordering...'
- f.set_location(f.first()[0])
+ start = f.set_location(f.first()[0])
+ if start != ('0', ''):
+ self.fail("incorrect first() result: "+repr(start))
while 1:
try:
rec = f.next()
@@ -122,6 +128,20 @@ class CompatibilityTestCase(unittest.TestCase):
assert f.has_key('f'), 'Error, missing key!'
+ # test that set_location() returns the next nearest key, value
+ # on btree databases and raises KeyError on others.
+ if factory == btopen:
+ e = f.set_location('e')
+ if e != ('f', 'Python'):
+ self.fail('wrong key,value returned: '+repr(e))
+ else:
+ try:
+ e = f.set_location('e')
+ except KeyError:
+ pass
+ else:
+ self.fail("set_location on non-existant key did not raise KeyError")
+
f.sync()
f.close()
# truth test