blob: 459dd5fb5ac842c2a9d9c51b86103c5a135add0e [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
Guido van Rossuma35e2ce2001-12-07 16:43:19 +00008import dbhash # Just so we know it's imported
Roger E. Masse352e1861997-01-16 22:04:10 +00009import tempfile
Guido van Rossumf6e47ad2001-03-22 00:40:23 +000010from test_support import verbose, verify
Roger E. Masse352e1861997-01-16 22:04:10 +000011
12def test(openmethod, what):
13
14 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000015 print '\nTesting: ', what
Fred Drake004d5e62000-10-23 17:22:08 +000016
Roger E. Masse352e1861997-01-16 22:04:10 +000017 fname = tempfile.mktemp()
18 f = openmethod(fname, 'c')
Guido van Rossumf6e47ad2001-03-22 00:40:23 +000019 verify(f.keys() == [])
Roger E. Masse352e1861997-01-16 22:04:10 +000020 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000021 print 'creation...'
Roger E. Masse352e1861997-01-16 22:04:10 +000022 f['0'] = ''
23 f['a'] = 'Guido'
24 f['b'] = 'van'
25 f['c'] = 'Rossum'
26 f['d'] = 'invented'
27 f['f'] = 'Python'
28 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000029 print '%s %s %s' % (f['a'], f['b'], f['c'])
Roger E. Masse352e1861997-01-16 22:04:10 +000030
31 if what == 'BTree' :
Guido van Rossum41360a41998-03-26 19:42:58 +000032 if verbose:
33 print 'key ordering...'
34 f.set_location(f.first()[0])
35 while 1:
36 try:
37 rec = f.next()
38 except KeyError:
Fred Drake132dce22000-12-12 23:11:42 +000039 if rec != f.last():
40 print 'Error, last != last!'
Guido van Rossum41360a41998-03-26 19:42:58 +000041 f.previous()
42 break
43 if verbose:
44 print rec
45 if not f.has_key('a'):
46 print 'Error, missing key!'
Roger E. Masse352e1861997-01-16 22:04:10 +000047
48 f.sync()
49 f.close()
50 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000051 print 'modification...'
Roger E. Masse352e1861997-01-16 22:04:10 +000052 f = openmethod(fname, 'w')
53 f['d'] = 'discovered'
54
55 if verbose:
Guido van Rossum41360a41998-03-26 19:42:58 +000056 print 'access...'
Roger E. Masse352e1861997-01-16 22:04:10 +000057 for key in f.keys():
Guido van Rossum41360a41998-03-26 19:42:58 +000058 word = f[key]
59 if verbose:
60 print word
Roger E. Masse352e1861997-01-16 22:04:10 +000061
62 f.close()
Guido van Rossum4ec26981999-03-24 19:03:01 +000063 try:
64 os.remove(fname)
65 except os.error:
66 pass
Roger E. Masse352e1861997-01-16 22:04:10 +000067
68types = [(bsddb.btopen, 'BTree'),
Guido van Rossum41360a41998-03-26 19:42:58 +000069 (bsddb.hashopen, 'Hash Table'),
70 # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
Roger E. Masse352e1861997-01-16 22:04:10 +000071 # appears broken... at least on
Guido van Rossum41360a41998-03-26 19:42:58 +000072 # Solaris Intel - rmasse 1/97
73 ]
Roger E. Masse352e1861997-01-16 22:04:10 +000074
75for type in types:
76 test(type[0], type[1])