mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
TestCases for checking set_get_returns_none.
 | 
						|
"""
 | 
						|
 | 
						|
import os, string
 | 
						|
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, get_new_database_path
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
class GetReturnsNoneTestCase(unittest.TestCase):
 | 
						|
    def setUp(self):
 | 
						|
        self.filename = get_new_database_path()
 | 
						|
 | 
						|
    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')
 | 
						|
        self.assertEqual(data, None)
 | 
						|
 | 
						|
        data = d.get('a')
 | 
						|
        self.assertEqual(data, 'a'*40)
 | 
						|
 | 
						|
        count = 0
 | 
						|
        c = d.cursor()
 | 
						|
        rec = c.first()
 | 
						|
        while rec:
 | 
						|
            count = count + 1
 | 
						|
            rec = c.next()
 | 
						|
 | 
						|
        self.assertEqual(rec, None)
 | 
						|
        self.assertEqual(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')
 | 
						|
        self.assertEqual(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
 | 
						|
 | 
						|
        self.assertNotEqual(rec, None)
 | 
						|
        self.assert_(exceptionHappened)
 | 
						|
        self.assertEqual(count, 52)
 | 
						|
 | 
						|
        c.close()
 | 
						|
        d.close()
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
def test_suite():
 | 
						|
    return unittest.makeSuite(GetReturnsNoneTestCase)
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    unittest.main(defaultTest='test_suite')
 |