mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 41631e8f66
			
		
	
	
		41631e8f66
		
	
	
	
	
		
			
			features in BerkeleyDB not exposed. notably: the DB_MPOOLFILE interface has not yet been wrapped in an object. Adds support for building and installing bsddb3 in python2.3 that has an older version of this module installed as bsddb without conflicts. The pybsddb.sf.net build/packaged version of the module uses a dynamicly loadable module called _pybsddb rather than _bsddb.
		
			
				
	
	
		
			101 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| TestCases for checking set_get_returns_none.
 | |
| """
 | |
| 
 | |
| import sys, os, string
 | |
| import tempfile
 | |
| from pprint import pprint
 | |
| import unittest
 | |
| 
 | |
| try:
 | |
|     # For Pythons w/distutils pybsddb
 | |
|     from bsddb3 import db
 | |
| except ImportError:
 | |
|     # For Python 2.3
 | |
|     from bsddb import db
 | |
| 
 | |
| from test_all import verbose
 | |
| 
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| class GetReturnsNoneTestCase(unittest.TestCase):
 | |
|     def setUp(self):
 | |
|         self.filename = tempfile.mktemp()
 | |
| 
 | |
|     def tearDown(self):
 | |
|         try:
 | |
|             os.remove(self.filename)
 | |
|         except os.error:
 | |
|             pass
 | |
| 
 | |
| 
 | |
|     def test01_get_returns_none(self):
 | |
|         d = db.DB()
 | |
|         d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
 | |
|         d.set_get_returns_none(1)
 | |
| 
 | |
|         for x in string.letters:
 | |
|             d.put(x, x * 40)
 | |
| 
 | |
|         data = d.get('bad key')
 | |
|         assert data == None
 | |
| 
 | |
|         data = d.get('a')
 | |
|         assert data == 'a'*40
 | |
| 
 | |
|         count = 0
 | |
|         c = d.cursor()
 | |
|         rec = c.first()
 | |
|         while rec:
 | |
|             count = count + 1
 | |
|             rec = c.next()
 | |
| 
 | |
|         assert rec == None
 | |
|         assert count == 52
 | |
| 
 | |
|         c.close()
 | |
|         d.close()
 | |
| 
 | |
| 
 | |
|     def test02_get_raises_exception(self):
 | |
|         d = db.DB()
 | |
|         d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
 | |
|         d.set_get_returns_none(0)
 | |
| 
 | |
|         for x in string.letters:
 | |
|             d.put(x, x * 40)
 | |
| 
 | |
|         self.assertRaises(db.DBNotFoundError, d.get, 'bad key')
 | |
|         self.assertRaises(KeyError, d.get, 'bad key')
 | |
| 
 | |
|         data = d.get('a')
 | |
|         assert data == 'a'*40
 | |
| 
 | |
|         count = 0
 | |
|         exceptionHappened = 0
 | |
|         c = d.cursor()
 | |
|         rec = c.first()
 | |
|         while rec:
 | |
|             count = count + 1
 | |
|             try:
 | |
|                 rec = c.next()
 | |
|             except db.DBNotFoundError:  # end of the records
 | |
|                 exceptionHappened = 1
 | |
|                 break
 | |
| 
 | |
|         assert rec != None
 | |
|         assert exceptionHappened
 | |
|         assert count == 52
 | |
| 
 | |
|         c.close()
 | |
|         d.close()
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| def test_suite():
 | |
|     return unittest.makeSuite(GetReturnsNoneTestCase)
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main(defaultTest='test_suite')
 |