Move setting of ioready 'wait' earlier in call chain, to
[python/dscho.git] / Lib / test / test_bsddb.py
blobaa58ef8ef7f6af0afd389d30a99095082011c8c4
1 #! /usr/bin/env python
2 """Test script for the bsddb C module
3 Roger E. Masse
4 """
5 import os
6 import bsddb
7 import dbhash # Just so we know it's imported
8 from test.test_support import verbose, verify, TESTFN
10 def test(openmethod, what, ondisk=1):
12 if verbose:
13 print '\nTesting: ', what, (ondisk and "on disk" or "in memory")
15 if ondisk:
16 fname = TESTFN
17 else:
18 fname = None
19 f = openmethod(fname, 'c')
20 verify(f.keys() == [])
21 if verbose:
22 print 'creation...'
23 f['0'] = ''
24 f['a'] = 'Guido'
25 f['b'] = 'van'
26 f['c'] = 'Rossum'
27 f['d'] = 'invented'
28 f['f'] = 'Python'
29 if verbose:
30 print '%s %s %s' % (f['a'], f['b'], f['c'])
32 if what == 'BTree' :
33 if verbose:
34 print 'key ordering...'
35 f.set_location(f.first()[0])
36 while 1:
37 try:
38 rec = f.next()
39 except KeyError:
40 if rec != f.last():
41 print 'Error, last != last!'
42 f.previous()
43 break
44 if verbose:
45 print rec
46 if not f.has_key('a'):
47 print 'Error, missing key!'
49 f.sync()
50 f.close()
51 if ondisk:
52 # if we're using an in-memory only db, we can't reopen it
53 # so finish here.
54 if verbose:
55 print 'modification...'
56 f = openmethod(fname, 'w')
57 f['d'] = 'discovered'
59 if verbose:
60 print 'access...'
61 for key in f.keys():
62 word = f[key]
63 if verbose:
64 print word
66 f.close()
67 try:
68 os.remove(fname)
69 except os.error:
70 pass
72 types = [(bsddb.btopen, 'BTree'),
73 (bsddb.hashopen, 'Hash Table'),
74 (bsddb.btopen, 'BTree', 0),
75 (bsddb.hashopen, 'Hash Table', 0),
76 # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
77 # appears broken... at least on
78 # Solaris Intel - rmasse 1/97
81 for type in types:
82 test(*type)