home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2004 #2 / K-CD-2-2004.ISO / OpenOffice Sv / f_0397 / python-core-2.2.2 / lib / test / test_bsddb.py < prev    next >
Encoding:
Python Source  |  2003-07-18  |  1.7 KB  |  77 lines

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