home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / test_bsddb.py < prev    next >
Text File  |  2003-12-30  |  5KB  |  168 lines

  1. #! /usr/bin/env python
  2. """Test script for the bsddb C module by Roger E. Masse
  3.    Adapted to unittest format and expanded scope by Raymond Hettinger
  4. """
  5. import os
  6. import bsddb
  7. import dbhash # Just so we know it's imported
  8. import unittest
  9. from test import test_support
  10. from sets import Set
  11.  
  12. class TestBSDDB(unittest.TestCase):
  13.  
  14.     def setUp(self):
  15.         self.f = self.openmethod[0](self.fname, 'c')
  16.         self.d = dict(q='Guido', w='van', e='Rossum', r='invented', t='Python', y='')
  17.         for k, v in self.d.iteritems():
  18.             self.f[k] = v
  19.  
  20.     def tearDown(self):
  21.         self.f.sync()
  22.         self.f.close()
  23.         if self.fname is None:
  24.             return
  25.         try:
  26.             os.remove(self.fname)
  27.         except os.error:
  28.             pass
  29.  
  30.     def test_getitem(self):
  31.         for k, v in self.d.iteritems():
  32.             self.assertEqual(self.f[k], v)
  33.  
  34.     def test_len(self):
  35.         self.assertEqual(len(self.f), len(self.d))
  36.  
  37.     def test_change(self):
  38.         self.f['r'] = 'discovered'
  39.         self.assertEqual(self.f['r'], 'discovered')
  40.         self.assert_('r' in self.f.keys())
  41.         self.assert_('discovered' in self.f.values())
  42.  
  43.     def test_close_and_reopen(self):
  44.         if self.fname is None:
  45.             # if we're using an in-memory only db, we can't reopen it
  46.             # so finish here.
  47.             return
  48.         self.f.close()
  49.         self.f = self.openmethod[0](self.fname, 'w')
  50.         for k, v in self.d.iteritems():
  51.             self.assertEqual(self.f[k], v)
  52.  
  53.     def assertSetEquals(self, seqn1, seqn2):
  54.         self.assertEqual(Set(seqn1), Set(seqn2))
  55.  
  56.     def test_mapping_iteration_methods(self):
  57.         f = self.f
  58.         d = self.d
  59.         self.assertSetEquals(d, f)
  60.         self.assertSetEquals(d.keys(), f.keys())
  61.         self.assertSetEquals(d.values(), f.values())
  62.         self.assertSetEquals(d.items(), f.items())
  63.         self.assertSetEquals(d.iterkeys(), f.iterkeys())
  64.         self.assertSetEquals(d.itervalues(), f.itervalues())
  65.         self.assertSetEquals(d.iteritems(), f.iteritems())
  66.  
  67.     def test_first_next_looping(self):
  68.         items = [self.f.first()]
  69.         for i in xrange(1, len(self.f)):
  70.             items.append(self.f.next())
  71.         self.assertSetEquals(items, self.d.items())
  72.  
  73.     def test_previous_last_looping(self):
  74.         items = [self.f.last()]
  75.         for i in xrange(1, len(self.f)):
  76.             items.append(self.f.previous())
  77.         self.assertSetEquals(items, self.d.items())
  78.  
  79.     def test_set_location(self):
  80.         self.assertEqual(self.f.set_location('e'), ('e', self.d['e']))
  81.  
  82.     def test_contains(self):
  83.         for k in self.d:
  84.             self.assert_(k in self.f)
  85.         self.assert_('not here' not in self.f)
  86.  
  87.     def test_has_key(self):
  88.         for k in self.d:
  89.             self.assert_(self.f.has_key(k))
  90.         self.assert_(not self.f.has_key('not here'))
  91.  
  92.     def test_clear(self):
  93.         self.f.clear()
  94.         self.assertEqual(len(self.f), 0)
  95.  
  96.     def test_popitem(self):
  97.         k, v = self.f.popitem()
  98.         self.assert_(k in self.d)
  99.         self.assert_(v in self.d.values())
  100.         self.assert_(k not in self.f)
  101.         self.assertEqual(len(self.d)-1, len(self.f))
  102.  
  103.     def test_pop(self):
  104.         k = 'w'
  105.         v = self.f.pop(k)
  106.         self.assertEqual(v, self.d[k])
  107.         self.assert_(k not in self.f)
  108.         self.assert_(v not in self.f.values())
  109.         self.assertEqual(len(self.d)-1, len(self.f))
  110.  
  111.     def test_get(self):
  112.         self.assertEqual(self.f.get('NotHere'), None)
  113.         self.assertEqual(self.f.get('NotHere', 'Default'), 'Default')
  114.         self.assertEqual(self.f.get('q', 'Default'), self.d['q'])
  115.  
  116.     def test_setdefault(self):
  117.         self.assertEqual(self.f.setdefault('new', 'dog'), 'dog')
  118.         self.assertEqual(self.f.setdefault('r', 'cat'), self.d['r'])
  119.  
  120.     def test_update(self):
  121.         new = dict(y='life', u='of', i='brian')
  122.         self.f.update(new)
  123.         self.d.update(new)
  124.         for k, v in self.d.iteritems():
  125.             self.assertEqual(self.f[k], v)
  126.  
  127.     def test_keyordering(self):
  128.         if self.openmethod[0] is not bsddb.btopen:
  129.             return
  130.         keys = self.d.keys()
  131.         keys.sort()
  132.         self.assertEqual(self.f.first()[0], keys[0])
  133.         self.assertEqual(self.f.next()[0], keys[1])
  134.         self.assertEqual(self.f.last()[0], keys[-1])
  135.         self.assertEqual(self.f.previous()[0], keys[-2])
  136.         self.assertEqual(list(self.f), keys)
  137.  
  138. class TestBTree(TestBSDDB):
  139.     fname = test_support.TESTFN
  140.     openmethod = [bsddb.btopen]
  141.  
  142. class TestBTree_InMemory(TestBSDDB):
  143.     fname = None
  144.     openmethod = [bsddb.btopen]
  145.  
  146. class TestHashTable(TestBSDDB):
  147.     fname = test_support.TESTFN
  148.     openmethod = [bsddb.hashopen]
  149.  
  150. class TestHashTable_InMemory(TestBSDDB):
  151.     fname = None
  152.     openmethod = [bsddb.hashopen]
  153.  
  154. ##         # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
  155. ##         #                                   appears broken... at least on
  156. ##         #                                   Solaris Intel - rmasse 1/97
  157.  
  158. def test_main(verbose=None):
  159.     test_support.run_unittest(
  160.         TestBTree,
  161.         TestHashTable,
  162.         TestBTree_InMemory,
  163.         TestHashTable_InMemory,
  164.     )
  165.  
  166. if __name__ == "__main__":
  167.     test_main(verbose=True)
  168.