blob: aa65295a021a66919e031822a21dc909f363ea57 [file] [log] [blame]
Roger E. Masse352e1861997-01-16 22:04:10 +00001#! /usr/bin/env python
2"""Test script for the bsddb C module
3 Roger E. Masse
4"""
Guido van Rossum4ec26981999-03-24 19:03:01 +00005
6import os
Roger E. Masse352e1861997-01-16 22:04:10 +00007import bsddb
8import tempfile
9from test_support import verbose
10
11def test(openmethod, what):
12
13 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000014 print '\nTesting: ', what
Fred Drake004d5e62000-10-23 17:22:08 +000015
Roger E. Masse352e1861997-01-16 22:04:10 +000016 fname = tempfile.mktemp()
17 f = openmethod(fname, 'c')
18 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000019 print 'creation...'
Roger E. Masse352e1861997-01-16 22:04:10 +000020 f['0'] = ''
21 f['a'] = 'Guido'
22 f['b'] = 'van'
23 f['c'] = 'Rossum'
24 f['d'] = 'invented'
25 f['f'] = 'Python'
26 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000027 print '%s %s %s' % (f['a'], f['b'], f['c'])
Roger E. Masse352e1861997-01-16 22:04:10 +000028
29 if what == 'BTree' :
Guido van Rossum41360a41998-03-26 19:42:58 +000030 if verbose:
31 print 'key ordering...'
32 f.set_location(f.first()[0])
33 while 1:
34 try:
35 rec = f.next()
36 except KeyError:
37 if rec <> f.last():
38 print 'Error, last <> last!'
39 f.previous()
40 break
41 if verbose:
42 print rec
43 if not f.has_key('a'):
44 print 'Error, missing key!'
Roger E. Masse352e1861997-01-16 22:04:10 +000045
46 f.sync()
47 f.close()
48 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000049 print 'modification...'
Roger E. Masse352e1861997-01-16 22:04:10 +000050 f = openmethod(fname, 'w')
51 f['d'] = 'discovered'
52
53 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000054 print 'access...'
Roger E. Masse352e1861997-01-16 22:04:10 +000055 for key in f.keys():
Guido van Rossum41360a41998-03-26 19:42:58 +000056 word = f[key]
57 if verbose:
58 print word
Roger E. Masse352e1861997-01-16 22:04:10 +000059
60 f.close()
Guido van Rossum4ec26981999-03-24 19:03:01 +000061 try:
62 os.remove(fname)
63 except os.error:
64 pass
Roger E. Masse352e1861997-01-16 22:04:10 +000065
66types = [(bsddb.btopen, 'BTree'),
Guido van Rossum41360a41998-03-26 19:42:58 +000067 (bsddb.hashopen, 'Hash Table'),
68 # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
Roger E. Masse352e1861997-01-16 22:04:10 +000069 # appears broken... at least on
Guido van Rossum41360a41998-03-26 19:42:58 +000070 # Solaris Intel - rmasse 1/97
71 ]
Roger E. Masse352e1861997-01-16 22:04:10 +000072
73for type in types:
74 test(type[0], type[1])