annotate Lib/test/test_gdbm.py @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents f4c5e3a64be2
children 6768b2350c57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45752
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
1 import unittest
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
2 import os
52491
f4c5e3a64be2 Change more tests to use import_module for the modules that
R. David Murray <rdmurray@bitdance.com>
parents: 45758
diff changeset
3 from test.test_support import (verbose, TESTFN, run_unittest, unlink,
f4c5e3a64be2 Change more tests to use import_module for the modules that
R. David Murray <rdmurray@bitdance.com>
parents: 45758
diff changeset
4 import_module)
f4c5e3a64be2 Change more tests to use import_module for the modules that
R. David Murray <rdmurray@bitdance.com>
parents: 45758
diff changeset
5 gdbm = import_module('gdbm')
15305
07f24261c6e6 Make reindent.py happy (convert everything to 4-space indents!).
Fred Drake <fdrake@acm.org>
parents: 11717
diff changeset
6
4811
9ae3cccfa7cd Many scripts, but small changes. Update the way the scripts obtain the
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents: 4759
diff changeset
7
40913
d842e35f5a31 Backported r51621 from p3yk:
Thomas Wouters <thomas@python.org>
parents: 24364
diff changeset
8 filename = TESTFN
4759
3fc6042a2acb Test script for the GNU dbm module (gdbm)
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
diff changeset
9
45752
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
10 class TestGdbm(unittest.TestCase):
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
11
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
12 def setUp(self):
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
13 self.g = None
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
14
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
15 def tearDown(self):
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
16 if self.g is not None:
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
17 self.g.close()
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
18 unlink(filename)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
19
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
20 def test_key_methods(self):
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
21 self.g = gdbm.open(filename, 'c')
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
22 self.assertEqual(self.g.keys(), [])
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
23 self.g['a'] = 'b'
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
24 self.g['12345678910'] = '019237410982340912840198242'
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
25 key_set = set(self.g.keys())
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
26 self.assertEqual(key_set, frozenset(['a', '12345678910']))
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
27 self.assert_(self.g.has_key('a'))
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
28 key = self.g.firstkey()
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
29 while key:
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
30 self.assert_(key in key_set)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
31 key_set.remove(key)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
32 key = self.g.nextkey(key)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
33 self.assertRaises(KeyError, lambda: self.g['xxx'])
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
34
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
35 def test_error_conditions(self):
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
36 # Try to open a non-existent database.
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
37 unlink(filename)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
38 self.assertRaises(gdbm.error, gdbm.open, filename, 'r')
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
39 # Try to access a closed database.
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
40 self.g = gdbm.open(filename, 'c')
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
41 self.g.close()
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
42 self.assertRaises(gdbm.error, lambda: self.g['a'])
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
43 # try pass an invalid open flag
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
44 self.assertRaises(gdbm.error, lambda: gdbm.open(filename, 'rx').close())
15305
07f24261c6e6 Make reindent.py happy (convert everything to 4-space indents!).
Fred Drake <fdrake@acm.org>
parents: 11717
diff changeset
45
45752
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
46 def test_flags(self):
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
47 # Test the flag parameter open() by trying all supported flag modes.
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
48 all = set(gdbm.open_flags)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
49 # Test standard flags (presumably "crwn").
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
50 modes = all - set('fsu')
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
51 for mode in modes:
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
52 self.g = gdbm.open(filename, mode)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
53 self.g.close()
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
54
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
55 # Test additional flags (presumably "fsu").
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
56 flags = all - set('crwn')
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
57 for mode in modes:
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
58 for flag in flags:
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
59 self.g = gdbm.open(filename, mode + flag)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
60 self.g.close()
4759
3fc6042a2acb Test script for the GNU dbm module (gdbm)
Roger E. Masse <rmasse@newcnri.cnri.reston.va.us>
parents:
diff changeset
61
45752
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
62 def test_reorganize(self):
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
63 self.g = gdbm.open(filename, 'c')
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
64 size0 = os.path.getsize(filename)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
65
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
66 self.g['x'] = 'x' * 10000
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
67 size1 = os.path.getsize(filename)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
68 self.assert_(size0 < size1)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
69
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
70 del self.g['x']
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
71 # 'size' is supposed to be the same even after deleting an entry.
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
72 self.assertEqual(os.path.getsize(filename), size1)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
73
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
74 self.g.reorganize()
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
75 size2 = os.path.getsize(filename)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
76 self.assert_(size1 > size2 >= size0)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
77
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
78
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
79 def test_main():
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
80 run_unittest(TestGdbm)
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
81
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
82 if __name__ == '__main__':
66341bed82b3 Move test_gdbm to use unittest.
Brett Cannon <bcannon@gmail.com>
parents: 40913
diff changeset
83 test_main()