symbian-qemu-0.9.1-12/python-2.6.1/Lib/bsddb/test/test_get_none.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 """
       
     2 TestCases for checking set_get_returns_none.
       
     3 """
       
     4 
       
     5 import os, string
       
     6 import unittest
       
     7 
       
     8 from test_all import db, verbose, get_new_database_path
       
     9 
       
    10 
       
    11 #----------------------------------------------------------------------
       
    12 
       
    13 class GetReturnsNoneTestCase(unittest.TestCase):
       
    14     def setUp(self):
       
    15         self.filename = get_new_database_path()
       
    16 
       
    17     def tearDown(self):
       
    18         try:
       
    19             os.remove(self.filename)
       
    20         except os.error:
       
    21             pass
       
    22 
       
    23 
       
    24     def test01_get_returns_none(self):
       
    25         d = db.DB()
       
    26         d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
       
    27         d.set_get_returns_none(1)
       
    28 
       
    29         for x in string.letters:
       
    30             d.put(x, x * 40)
       
    31 
       
    32         data = d.get('bad key')
       
    33         self.assertEqual(data, None)
       
    34 
       
    35         data = d.get(string.letters[0])
       
    36         self.assertEqual(data, string.letters[0]*40)
       
    37 
       
    38         count = 0
       
    39         c = d.cursor()
       
    40         rec = c.first()
       
    41         while rec:
       
    42             count = count + 1
       
    43             rec = c.next()
       
    44 
       
    45         self.assertEqual(rec, None)
       
    46         self.assertEqual(count, len(string.letters))
       
    47 
       
    48         c.close()
       
    49         d.close()
       
    50 
       
    51 
       
    52     def test02_get_raises_exception(self):
       
    53         d = db.DB()
       
    54         d.open(self.filename, db.DB_BTREE, db.DB_CREATE)
       
    55         d.set_get_returns_none(0)
       
    56 
       
    57         for x in string.letters:
       
    58             d.put(x, x * 40)
       
    59 
       
    60         self.assertRaises(db.DBNotFoundError, d.get, 'bad key')
       
    61         self.assertRaises(KeyError, d.get, 'bad key')
       
    62 
       
    63         data = d.get(string.letters[0])
       
    64         self.assertEqual(data, string.letters[0]*40)
       
    65 
       
    66         count = 0
       
    67         exceptionHappened = 0
       
    68         c = d.cursor()
       
    69         rec = c.first()
       
    70         while rec:
       
    71             count = count + 1
       
    72             try:
       
    73                 rec = c.next()
       
    74             except db.DBNotFoundError:  # end of the records
       
    75                 exceptionHappened = 1
       
    76                 break
       
    77 
       
    78         self.assertNotEqual(rec, None)
       
    79         self.assert_(exceptionHappened)
       
    80         self.assertEqual(count, len(string.letters))
       
    81 
       
    82         c.close()
       
    83         d.close()
       
    84 
       
    85 #----------------------------------------------------------------------
       
    86 
       
    87 def test_suite():
       
    88     return unittest.makeSuite(GetReturnsNoneTestCase)
       
    89 
       
    90 
       
    91 if __name__ == '__main__':
       
    92     unittest.main(defaultTest='test_suite')