blob: 192c6e2f2eca5676e0341edc9bc91902c1dae416 [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
Guido van Rossumf6e47ad2001-03-22 00:40:23 +00009from test_support import verbose, verify
Roger E. Masse352e1861997-01-16 22:04:10 +000010
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')
Guido van Rossumf6e47ad2001-03-22 00:40:23 +000018 verify(f.keys() == [])
Roger E. Masse352e1861997-01-16 22:04:10 +000019 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000020 print 'creation...'
Roger E. Masse352e1861997-01-16 22:04:10 +000021 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:
Guido van Rossum41360a41998-03-26 19:42:58 +000028 print '%s %s %s' % (f['a'], f['b'], f['c'])
Roger E. Masse352e1861997-01-16 22:04:10 +000029
30 if what == 'BTree' :
Guido van Rossum41360a41998-03-26 19:42:58 +000031 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:
Fred Drake132dce22000-12-12 23:11:42 +000038 if rec != f.last():
39 print 'Error, last != last!'
Guido van Rossum41360a41998-03-26 19:42:58 +000040 f.previous()
41 break
42 if verbose:
43 print rec
44 if not f.has_key('a'):
45 print 'Error, missing key!'
Roger E. Masse352e1861997-01-16 22:04:10 +000046
47 f.sync()
48 f.close()
49 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000050 print 'modification...'
Roger E. Masse352e1861997-01-16 22:04:10 +000051 f = openmethod(fname, 'w')
52 f['d'] = 'discovered'
53
54 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000055 print 'access...'
Roger E. Masse352e1861997-01-16 22:04:10 +000056 for key in f.keys():
Guido van Rossum41360a41998-03-26 19:42:58 +000057 word = f[key]
58 if verbose:
59 print word
Roger E. Masse352e1861997-01-16 22:04:10 +000060
61 f.close()
Guido van Rossum4ec26981999-03-24 19:03:01 +000062 try:
63 os.remove(fname)
64 except os.error:
65 pass
Roger E. Masse352e1861997-01-16 22:04:10 +000066
67types = [(bsddb.btopen, 'BTree'),
Guido van Rossum41360a41998-03-26 19:42:58 +000068 (bsddb.hashopen, 'Hash Table'),
69 # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
Roger E. Masse352e1861997-01-16 22:04:10 +000070 # appears broken... at least on
Guido van Rossum41360a41998-03-26 19:42:58 +000071 # Solaris Intel - rmasse 1/97
72 ]
Roger E. Masse352e1861997-01-16 22:04:10 +000073
74for type in types:
75 test(type[0], type[1])