[Python-checkins] python/dist/src/Lib/test test_bsddb.py,1.13,1.14

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Sat Sep 13 01:51:12 EDT 2003


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv14175

Modified Files:
	test_bsddb.py 
Log Message:
* Converted test to unittest format.
* Expanded coverage.



Index: test_bsddb.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_bsddb.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** test_bsddb.py	12 Sep 2003 06:33:37 -0000	1.13
--- test_bsddb.py	13 Sep 2003 05:51:09 -0000	1.14
***************
*** 1,94 ****
  #! /usr/bin/env python
! """Test script for the bsddb C module
!    Roger E. Masse
  """
  import os
  import bsddb
  import dbhash # Just so we know it's imported
! from test.test_support import verbose, verify, TESTFN
  
! def test(openmethod, what, ondisk=1):
  
!     if verbose:
!         print '\nTesting: ', what, (ondisk and "on disk" or "in memory")
  
!     if ondisk:
!         fname = TESTFN
!     else:
!         fname = None
!     f = openmethod(fname, 'c')
!     verify(f.keys() == [])
!     if verbose:
!         print 'creation...'
!     keys = ['0', 'a', 'b', 'c', 'd', 'e', 'f']
!     values = ['', 'Guido', 'van', 'Rossum', 'invented', 'Python']
!     items = zip(keys, values)
!     for k, v in items:
!         f[k] = v
  
!     # test mapping iteration methods
!     from sets import Set
!     def verifyset(s1, s2):
!         verify(Set(s1) == Set(s2))
!     verify(keys, f.keys())
!     verify(values, f.values())
!     verify(items, f.items())
!     verify(keys, f)
!     verify(keys, f.iterkeys())
!     verify(values, f.itervalues())
!     verify(items, f.iteritems())
  
!     if verbose:
!         print '%s %s %s' % (f['a'], f['b'], f['c'])
  
!     if what == 'BTree' :
!         if verbose:
!             print 'key ordering...'
!         f.set_location(f.first()[0])
!         while 1:
!             try:
!                 rec = f.next()
!             except KeyError:
!                 if rec != f.last():
!                     print 'Error, last != last!'
!                 f.previous()
!                 break
!             if verbose:
!                 print rec
!         if not f.has_key('a'):
!             print 'Error, missing key!'
  
!     f.sync()
!     f.close()
!     if ondisk:
!         # if we're using an in-memory only db, we can't reopen it
!         # so finish here.
!         if verbose:
!             print 'modification...'
!         f = openmethod(fname, 'w')
!         f['d'] = 'discovered'
  
!         if verbose:
!             print 'access...'
!         for key in f.keys():
!             word = f[key]
!             if verbose:
!                 print word
  
!         f.close()
!         try:
!             os.remove(fname)
!         except os.error:
!             pass
  
! types = [(bsddb.btopen, 'BTree'),
!          (bsddb.hashopen, 'Hash Table'),
!          (bsddb.btopen, 'BTree', 0),
!          (bsddb.hashopen, 'Hash Table', 0),
!          # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
!          #                                   appears broken... at least on
!          #                                   Solaris Intel - rmasse 1/97
!          ]
  
! for type in types:
!     test(*type)
--- 1,167 ----
  #! /usr/bin/env python
! """Test script for the bsddb C module by Roger E. Masse
!    Adapted to unittest format and expanded scope by Raymond Hettinger
  """
  import os
  import bsddb
  import dbhash # Just so we know it's imported
! import unittest
! from test import test_support
! from sets import Set
  
! class TestBSDDB(unittest.TestCase):
  
!     def setUp(self):
!         self.f = self.openmethod[0](self.fname, 'c')
!         self.d = dict(q='Guido', w='van', e='Rossum', r='invented', t='Python', y='')
!         for k, v in self.d.iteritems():
!             self.f[k] = v
  
!     def tearDown(self):
!         self.f.sync()
!         self.f.close()
!         if self.fname is None:
!             return
!         try:
!             os.remove(self.fname)
!         except os.error:
!             pass
  
!     def test_getitem(self):
!         for k, v in self.d.iteritems():
!             self.assertEqual(self.f[k], v)
  
!     def test_len(self):
!         self.assertEqual(len(self.f), len(self.d))
  
!     def test_change(self):
!         self.f['r'] = 'discovered'
!         self.assertEqual(self.f['r'], 'discovered')
!         self.assert_('r' in self.f.keys())
!         self.assert_('discovered' in self.f.values())
  
!     def test_close_and_reopen(self):
!         if self.fname is None:
!             # if we're using an in-memory only db, we can't reopen it
!             # so finish here.
!             return
!         self.f.close()
!         self.f = self.openmethod[0](self.fname, 'w')
!         for k, v in self.d.iteritems():
!             self.assertEqual(self.f[k], v)
  
!     def assertSetEquals(self, seqn1, seqn2):
!         self.assertEqual(Set(seqn1), Set(seqn2))
  
!     def test_mapping_iteration_methods(self):
!         f = self.f
!         d = self.d
!         self.assertSetEquals(d, f)
!         self.assertSetEquals(d.keys(), f.keys())
!         self.assertSetEquals(d.values(), f.values())
!         self.assertSetEquals(d.items(), f.items())
!         self.assertSetEquals(d.iterkeys(), f.iterkeys())
!         self.assertSetEquals(d.itervalues(), f.itervalues())
!         self.assertSetEquals(d.iteritems(), f.iteritems())
  
!     def test_first_next_looping(self):
!         items = [self.f.first()]
!         for i in xrange(1, len(self.f)):
!             items.append(self.f.next())
!         self.assertSetEquals(items, self.d.items())
  
!     def test_previous_last_looping(self):
!         items = [self.f.last()]
!         for i in xrange(1, len(self.f)):
!             items.append(self.f.previous())
!         self.assertSetEquals(items, self.d.items())
! 
!     def test_set_location(self):
!         self.assertEqual(self.f.set_location('e'), ('e', self.d['e']))
! 
!     def test_contains(self):
!         for k in self.d:
!             self.assert_(k in self.f)
!         self.assert_('not here' not in self.f)
! 
!     def test_has_key(self):
!         for k in self.d:
!             self.assert_(self.f.has_key(k))
!         self.assert_(not self.f.has_key('not here'))
! 
!     def test_clear(self):
!         self.f.clear()
!         self.assertEqual(len(self.f), 0)
! 
!     def test_popitem(self):
!         k, v = self.f.popitem()
!         self.assert_(k in self.d)
!         self.assert_(v in self.d.values())
!         self.assert_(k not in self.f)
!         self.assertEqual(len(self.d)-1, len(self.f))
! 
!     def test_pop(self):
!         k = 'w'
!         v = self.f.pop(k)
!         self.assertEqual(v, self.d[k])
!         self.assert_(k not in self.f)
!         self.assert_(v not in self.f.values())
!         self.assertEqual(len(self.d)-1, len(self.f))
! 
!     def test_get(self):
!         self.assertEqual(self.f.get('NotHere'), None)
!         self.assertEqual(self.f.get('NotHere', 'Default'), 'Default')
!         self.assertEqual(self.f.get('q', 'Default'), self.d['q'])
! 
!     def test_setdefault(self):
!         self.assertEqual(self.f.setdefault('new', 'dog'), 'dog')
!         self.assertEqual(self.f.setdefault('r', 'cat'), self.d['r'])
! 
!     def test_update(self):
!         new = dict(y='life', u='of', i='brian')
!         self.f.update(new)
!         self.d.update(new)
!         for k, v in self.d.iteritems():
!             self.assertEqual(self.f[k], v)
! 
!     def test_keyordering(self):
!         if self.openmethod[0] is not bsddb.btopen:
!             return
!         keys = self.d.keys()
!         keys.sort()
!         self.assertEqual(self.f.first()[0], keys[0])
!         self.assertEqual(self.f.next()[0], keys[1])
!         self.assertEqual(self.f.last()[0], keys[-1])
!         self.assertEqual(self.f.previous()[0], keys[-2])
!         self.assertEqual(list(self.f), keys)
! 
! class TestBTree(TestBSDDB):
!     fname = test_support.TESTFN
!     openmethod = [bsddb.btopen]
! 
! class TestBTree_InMemory(TestBSDDB):
!     fname = None
!     openmethod = [bsddb.btopen]
! 
! class TestHashTable(TestBSDDB):
!     fname = test_support.TESTFN
!     openmethod = [bsddb.hashopen]
! 
! class TestHashTable_InMemory(TestBSDDB):
!     fname = None
!     openmethod = [bsddb.hashopen]
! 
! ##         # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
! ##         #                                   appears broken... at least on
! ##         #                                   Solaris Intel - rmasse 1/97
! 
! def test_main(verbose=None):
!     test_support.run_unittest(
!         TestBTree,
!         TestHashTable,
!         TestBTree_InMemory,
!         TestHashTable_InMemory,
!     )
! 
! if __name__ == "__main__":
!     test_main(verbose=True)





More information about the Python-checkins mailing list