Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 1 | #! /usr/bin/env python |
| 2 | """Test script for the bsddb C module |
| 3 | Roger E. Masse |
| 4 | """ |
Guido van Rossum | 4ec2698 | 1999-03-24 19:03:01 +0000 | [diff] [blame] | 5 | |
| 6 | import os |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 7 | import bsddb |
Guido van Rossum | a35e2ce | 2001-12-07 16:43:19 +0000 | [diff] [blame] | 8 | import dbhash # Just so we know it's imported |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 9 | import tempfile |
Guido van Rossum | f6e47ad | 2001-03-22 00:40:23 +0000 | [diff] [blame] | 10 | from test_support import verbose, verify |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 11 | |
| 12 | def test(openmethod, what): |
| 13 | |
| 14 | if verbose: |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 15 | print '\nTesting: ', what |
Fred Drake | 004d5e6 | 2000-10-23 17:22:08 +0000 | [diff] [blame] | 16 | |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 17 | fname = tempfile.mktemp() |
| 18 | f = openmethod(fname, 'c') |
Guido van Rossum | f6e47ad | 2001-03-22 00:40:23 +0000 | [diff] [blame] | 19 | verify(f.keys() == []) |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 20 | if verbose: |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 21 | print 'creation...' |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 22 | 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 Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 29 | print '%s %s %s' % (f['a'], f['b'], f['c']) |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 30 | |
| 31 | if what == 'BTree' : |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 32 | 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 Drake | 132dce2 | 2000-12-12 23:11:42 +0000 | [diff] [blame] | 39 | if rec != f.last(): |
| 40 | print 'Error, last != last!' |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 41 | f.previous() |
| 42 | break |
| 43 | if verbose: |
| 44 | print rec |
| 45 | if not f.has_key('a'): |
| 46 | print 'Error, missing key!' |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 47 | |
| 48 | f.sync() |
| 49 | f.close() |
| 50 | if verbose: |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 51 | print 'modification...' |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 52 | f = openmethod(fname, 'w') |
| 53 | f['d'] = 'discovered' |
| 54 | |
| 55 | if verbose: |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 56 | print 'access...' |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 57 | for key in f.keys(): |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 58 | word = f[key] |
| 59 | if verbose: |
| 60 | print word |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 61 | |
| 62 | f.close() |
Guido van Rossum | 4ec2698 | 1999-03-24 19:03:01 +0000 | [diff] [blame] | 63 | try: |
| 64 | os.remove(fname) |
| 65 | except os.error: |
| 66 | pass |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 67 | |
| 68 | types = [(bsddb.btopen, 'BTree'), |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 69 | (bsddb.hashopen, 'Hash Table'), |
| 70 | # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85 |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 71 | # appears broken... at least on |
Guido van Rossum | 41360a4 | 1998-03-26 19:42:58 +0000 | [diff] [blame] | 72 | # Solaris Intel - rmasse 1/97 |
| 73 | ] |
Roger E. Masse | 352e186 | 1997-01-16 22:04:10 +0000 | [diff] [blame] | 74 | |
| 75 | for type in types: |
| 76 | test(type[0], type[1]) |