blob: 1188e0612759bc9e4bcf99da8b3fbd188cd3c3a2 [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"""
5import bsddb
6import tempfile
7from test_support import verbose
8
9def test(openmethod, what):
10
11 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000012 print '\nTesting: ', what
13
Roger E. Masse352e1861997-01-16 22:04:10 +000014 fname = tempfile.mktemp()
15 f = openmethod(fname, 'c')
16 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000017 print 'creation...'
Roger E. Masse352e1861997-01-16 22:04:10 +000018 f['0'] = ''
19 f['a'] = 'Guido'
20 f['b'] = 'van'
21 f['c'] = 'Rossum'
22 f['d'] = 'invented'
23 f['f'] = 'Python'
24 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000025 print '%s %s %s' % (f['a'], f['b'], f['c'])
Roger E. Masse352e1861997-01-16 22:04:10 +000026
27 if what == 'BTree' :
Guido van Rossum41360a41998-03-26 19:42:58 +000028 if verbose:
29 print 'key ordering...'
30 f.set_location(f.first()[0])
31 while 1:
32 try:
33 rec = f.next()
34 except KeyError:
35 if rec <> f.last():
36 print 'Error, last <> last!'
37 f.previous()
38 break
39 if verbose:
40 print rec
41 if not f.has_key('a'):
42 print 'Error, missing key!'
Roger E. Masse352e1861997-01-16 22:04:10 +000043
44 f.sync()
45 f.close()
46 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000047 print 'modification...'
Roger E. Masse352e1861997-01-16 22:04:10 +000048 f = openmethod(fname, 'w')
49 f['d'] = 'discovered'
50
51 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000052 print 'access...'
Roger E. Masse352e1861997-01-16 22:04:10 +000053 for key in f.keys():
Guido van Rossum41360a41998-03-26 19:42:58 +000054 word = f[key]
55 if verbose:
56 print word
Roger E. Masse352e1861997-01-16 22:04:10 +000057
58 f.close()
59
60types = [(bsddb.btopen, 'BTree'),
Guido van Rossum41360a41998-03-26 19:42:58 +000061 (bsddb.hashopen, 'Hash Table'),
62 # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
Roger E. Masse352e1861997-01-16 22:04:10 +000063 # appears broken... at least on
Guido van Rossum41360a41998-03-26 19:42:58 +000064 # Solaris Intel - rmasse 1/97
65 ]
Roger E. Masse352e1861997-01-16 22:04:10 +000066
67for type in types:
68 test(type[0], type[1])
69