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