Home | History | Annotate | Download | only in test
      1 import unittest
      2 import os, glob
      3 
      4 from test_all import db, test_support, get_new_environment_path, \
      5         get_new_database_path
      6 
      7 #----------------------------------------------------------------------
      8 
      9 class pget_bugTestCase(unittest.TestCase):
     10     """Verify that cursor.pget works properly"""
     11     db_name = 'test-cursor_pget.db'
     12 
     13     def setUp(self):
     14         self.homeDir = get_new_environment_path()
     15         self.env = db.DBEnv()
     16         self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)
     17         self.primary_db = db.DB(self.env)
     18         self.primary_db.open(self.db_name, 'primary', db.DB_BTREE, db.DB_CREATE)
     19         self.secondary_db = db.DB(self.env)
     20         self.secondary_db.set_flags(db.DB_DUP)
     21         self.secondary_db.open(self.db_name, 'secondary', db.DB_BTREE, db.DB_CREATE)
     22         self.primary_db.associate(self.secondary_db, lambda key, data: data)
     23         self.primary_db.put('salad', 'eggs')
     24         self.primary_db.put('spam', 'ham')
     25         self.primary_db.put('omelet', 'eggs')
     26 
     27 
     28     def tearDown(self):
     29         self.secondary_db.close()
     30         self.primary_db.close()
     31         self.env.close()
     32         del self.secondary_db
     33         del self.primary_db
     34         del self.env
     35         test_support.rmtree(self.homeDir)
     36 
     37     def test_pget(self):
     38         cursor = self.secondary_db.cursor()
     39 
     40         self.assertEqual(('eggs', 'salad', 'eggs'), cursor.pget(key='eggs', flags=db.DB_SET))
     41         self.assertEqual(('eggs', 'omelet', 'eggs'), cursor.pget(db.DB_NEXT_DUP))
     42         self.assertEqual(None, cursor.pget(db.DB_NEXT_DUP))
     43 
     44         self.assertEqual(('ham', 'spam', 'ham'), cursor.pget('ham', 'spam', flags=db.DB_SET))
     45         self.assertEqual(None, cursor.pget(db.DB_NEXT_DUP))
     46 
     47         cursor.close()
     48 
     49 
     50 def test_suite():
     51     return unittest.makeSuite(pget_bugTestCase)
     52 
     53 if __name__ == '__main__':
     54     unittest.main(defaultTest='test_suite')
     55