ยปCore Development>Code coverage>Lib/test/test_gdbm.py

Python code coverage for Lib/test/test_gdbm.py

#countcontent
11import unittest
21import os
31from test.test_support import TESTFN, run_unittest, unlink, import_module
41gdbm = import_module('gdbm')
5n/a
6n/a
71filename = TESTFN
8n/a
92class TestGdbm(unittest.TestCase):
10n/a
111 def setUp(self):
124 self.g = None
13n/a
141 def tearDown(self):
154 if self.g is not None:
164 self.g.close()
174 unlink(filename)
18n/a
191 def test_key_methods(self):
201 self.g = gdbm.open(filename, 'c')
211 self.assertEqual(self.g.keys(), [])
221 self.g['a'] = 'b'
231 self.g['12345678910'] = '019237410982340912840198242'
241 key_set = set(self.g.keys())
251 self.assertEqual(key_set, frozenset(['a', '12345678910']))
261 self.assertTrue(self.g.has_key('a'))
271 key = self.g.firstkey()
283 while key:
292 self.assertIn(key, key_set)
302 key_set.remove(key)
312 key = self.g.nextkey(key)
322 self.assertRaises(KeyError, lambda: self.g['xxx'])
33n/a
341 def test_error_conditions(self):
35n/a # Try to open a non-existent database.
361 unlink(filename)
371 self.assertRaises(gdbm.error, gdbm.open, filename, 'r')
38n/a # Try to access a closed database.
391 self.g = gdbm.open(filename, 'c')
401 self.g.close()
412 self.assertRaises(gdbm.error, lambda: self.g['a'])
42n/a # try pass an invalid open flag
432 self.assertRaises(gdbm.error, lambda: gdbm.open(filename, 'rx').close())
44n/a
451 def test_flags(self):
46n/a # Test the flag parameter open() by trying all supported flag modes.
471 all = set(gdbm.open_flags)
48n/a # Test standard flags (presumably "crwn").
491 modes = all - set('fsu')
505 for mode in modes:
514 self.g = gdbm.open(filename, mode)
524 self.g.close()
53n/a
54n/a # Test additional flags (presumably "fsu").
551 flags = all - set('crwn')
565 for mode in modes:
5716 for flag in flags:
5812 self.g = gdbm.open(filename, mode + flag)
5912 self.g.close()
60n/a
611 def test_reorganize(self):
621 self.g = gdbm.open(filename, 'c')
631 size0 = os.path.getsize(filename)
64n/a
651 self.g['x'] = 'x' * 10000
661 size1 = os.path.getsize(filename)
671 self.assertTrue(size0 < size1)
68n/a
691 del self.g['x']
70n/a # 'size' is supposed to be the same even after deleting an entry.
711 self.assertEqual(os.path.getsize(filename), size1)
72n/a
731 self.g.reorganize()
741 size2 = os.path.getsize(filename)
751 self.assertTrue(size1 > size2 >= size0)
76n/a
77n/a
781def test_main():
791 run_unittest(TestGdbm)
80n/a
811if __name__ == '__main__':
820 test_main()