home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / TemaCD / webclean / !!!python!!! / BeOpen-Python-2.0.exe / TEST_BSDDB.PY < prev    next >
Encoding:
Python Source  |  2000-09-28  |  1.8 KB  |  75 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 tempfile
  9. from test_support import verbose
  10.  
  11. def test(openmethod, what):
  12.  
  13.     if verbose:
  14.         print '\nTesting: ', what
  15.         
  16.     fname = tempfile.mktemp()
  17.     f = openmethod(fname, 'c')
  18.     if verbose:
  19.         print 'creation...'
  20.     f['0'] = ''
  21.     f['a'] = 'Guido'
  22.     f['b'] = 'van'
  23.     f['c'] = 'Rossum'
  24.     f['d'] = 'invented'
  25.     f['f'] = 'Python'
  26.     if verbose:
  27.         print '%s %s %s' % (f['a'], f['b'], f['c'])
  28.  
  29.     if what == 'BTree' :
  30.         if verbose:
  31.             print 'key ordering...'
  32.         f.set_location(f.first()[0])
  33.         while 1:
  34.             try:
  35.                 rec = f.next()
  36.             except KeyError:
  37.                 if rec <> f.last():
  38.                     print 'Error, last <> last!'
  39.                 f.previous()
  40.                 break
  41.             if verbose:
  42.                 print rec
  43.         if not f.has_key('a'):
  44.             print 'Error, missing key!'
  45.  
  46.     f.sync()
  47.     f.close()
  48.     if verbose:
  49.         print 'modification...'
  50.     f = openmethod(fname, 'w')
  51.     f['d'] = 'discovered'
  52.  
  53.     if verbose:
  54.         print 'access...'
  55.     for key in f.keys():
  56.         word = f[key]
  57.         if verbose:
  58.             print word
  59.  
  60.     f.close()
  61.     try:
  62.         os.remove(fname)
  63.     except os.error:
  64.         pass
  65.  
  66. types = [(bsddb.btopen, 'BTree'),
  67.          (bsddb.hashopen, 'Hash Table'),
  68.          # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
  69.          #                                   appears broken... at least on
  70.          #                                   Solaris Intel - rmasse 1/97
  71.          ]
  72.  
  73. for type in types:
  74.     test(type[0], type[1])
  75.