Merged release21-maint changes.
[python/dscho.git] / Lib / test / test_bsddb.py
blob192c6e2f2eca5676e0341edc9bc91902c1dae416
1 #! /usr/bin/env python
2 """Test script for the bsddb C module
3 Roger E. Masse
4 """
6 import os
7 import bsddb
8 import tempfile
9 from test_support import verbose, verify
11 def test(openmethod, what):
13 if verbose:
14 print '\nTesting: ', what
16 fname = tempfile.mktemp()
17 f = openmethod(fname, 'c')
18 verify(f.keys() == [])
19 if verbose:
20 print 'creation...'
21 f['0'] = ''
22 f['a'] = 'Guido'
23 f['b'] = 'van'
24 f['c'] = 'Rossum'
25 f['d'] = 'invented'
26 f['f'] = 'Python'
27 if verbose:
28 print '%s %s %s' % (f['a'], f['b'], f['c'])
30 if what == 'BTree' :
31 if verbose:
32 print 'key ordering...'
33 f.set_location(f.first()[0])
34 while 1:
35 try:
36 rec = f.next()
37 except KeyError:
38 if rec != f.last():
39 print 'Error, last != last!'
40 f.previous()
41 break
42 if verbose:
43 print rec
44 if not f.has_key('a'):
45 print 'Error, missing key!'
47 f.sync()
48 f.close()
49 if verbose:
50 print 'modification...'
51 f = openmethod(fname, 'w')
52 f['d'] = 'discovered'
54 if verbose:
55 print 'access...'
56 for key in f.keys():
57 word = f[key]
58 if verbose:
59 print word
61 f.close()
62 try:
63 os.remove(fname)
64 except os.error:
65 pass
67 types = [(bsddb.btopen, 'BTree'),
68 (bsddb.hashopen, 'Hash Table'),
69 # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
70 # appears broken... at least on
71 # Solaris Intel - rmasse 1/97
74 for type in types:
75 test(type[0], type[1])