10a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport unittest 20a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport os, glob 30a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 40a8c90248264a8b26970b4473770bcc3df8515fJosh Gaofrom test_all import db, test_support, get_new_environment_path, \ 50a8c90248264a8b26970b4473770bcc3df8515fJosh Gao get_new_database_path 60a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 70a8c90248264a8b26970b4473770bcc3df8515fJosh Gao#---------------------------------------------------------------------- 80a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 90a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass pget_bugTestCase(unittest.TestCase): 100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao """Verify that cursor.pget works properly""" 110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao db_name = 'test-cursor_pget.db' 120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def setUp(self): 140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.homeDir = get_new_environment_path() 150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.env = db.DBEnv() 160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL) 170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.primary_db = db.DB(self.env) 180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.primary_db.open(self.db_name, 'primary', db.DB_BTREE, db.DB_CREATE) 190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.secondary_db = db.DB(self.env) 200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.secondary_db.set_flags(db.DB_DUP) 210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.secondary_db.open(self.db_name, 'secondary', db.DB_BTREE, db.DB_CREATE) 220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.primary_db.associate(self.secondary_db, lambda key, data: data) 230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.primary_db.put('salad', 'eggs') 240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.primary_db.put('spam', 'ham') 250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.primary_db.put('omelet', 'eggs') 260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def tearDown(self): 290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.secondary_db.close() 300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.primary_db.close() 310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.env.close() 320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao del self.secondary_db 330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao del self.primary_db 340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao del self.env 350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao test_support.rmtree(self.homeDir) 360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_pget(self): 380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao cursor = self.secondary_db.cursor() 390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(('eggs', 'salad', 'eggs'), cursor.pget(key='eggs', flags=db.DB_SET)) 410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(('eggs', 'omelet', 'eggs'), cursor.pget(db.DB_NEXT_DUP)) 420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(None, cursor.pget(db.DB_NEXT_DUP)) 430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(('ham', 'spam', 'ham'), cursor.pget('ham', 'spam', flags=db.DB_SET)) 450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(None, cursor.pget(db.DB_NEXT_DUP)) 460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao cursor.close() 480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 500a8c90248264a8b26970b4473770bcc3df8515fJosh Gaodef test_suite(): 510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao return unittest.makeSuite(pget_bugTestCase) 520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 530a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoif __name__ == '__main__': 540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao unittest.main(defaultTest='test_suite') 55