Brett Cannon | ba17cfc | 2008-03-18 01:50:25 +0000 | [diff] [blame] | 1 | from test import test_support |
| 2 | import unittest |
R. David Murray | 3db8a34 | 2009-03-30 23:05:48 +0000 | [diff] [blame] | 3 | dbm = test_support.import_module('dbm') |
Roger E. Masse | fab8ab8 | 1996-12-20 22:36:52 +0000 | [diff] [blame] | 4 | |
Brett Cannon | ba17cfc | 2008-03-18 01:50:25 +0000 | [diff] [blame] | 5 | class DbmTestCase(unittest.TestCase): |
Roger E. Masse | 16f9fd2 | 1996-12-10 00:06:24 +0000 | [diff] [blame] | 6 | |
Brett Cannon | ba17cfc | 2008-03-18 01:50:25 +0000 | [diff] [blame] | 7 | def setUp(self): |
| 8 | self.filename = test_support.TESTFN |
| 9 | self.d = dbm.open(self.filename, 'c') |
| 10 | self.d.close() |
Fred Drake | 57a4e90 | 2000-09-18 17:56:58 +0000 | [diff] [blame] | 11 | |
Brett Cannon | ba17cfc | 2008-03-18 01:50:25 +0000 | [diff] [blame] | 12 | def tearDown(self): |
| 13 | for suffix in ['', '.pag', '.dir', '.db']: |
| 14 | test_support.unlink(self.filename + suffix) |
Roger E. Masse | 16f9fd2 | 1996-12-10 00:06:24 +0000 | [diff] [blame] | 15 | |
Brett Cannon | ba17cfc | 2008-03-18 01:50:25 +0000 | [diff] [blame] | 16 | def test_keys(self): |
| 17 | self.d = dbm.open(self.filename, 'c') |
Hirokazu Yamamoto | 39defbe | 2008-10-07 18:10:47 +0000 | [diff] [blame] | 18 | self.assertEqual(self.d.keys(), []) |
| 19 | a = [('a', 'b'), ('12345678910', '019237410982340912840198242')] |
| 20 | for k, v in a: |
| 21 | self.d[k] = v |
| 22 | self.assertEqual(sorted(self.d.keys()), sorted(k for (k, v) in a)) |
| 23 | for k, v in a: |
Ezio Melotti | aa98058 | 2010-01-23 23:04:36 +0000 | [diff] [blame] | 24 | self.assertIn(k, self.d) |
Hirokazu Yamamoto | 39defbe | 2008-10-07 18:10:47 +0000 | [diff] [blame] | 25 | self.assertEqual(self.d[k], v) |
Ezio Melotti | aa98058 | 2010-01-23 23:04:36 +0000 | [diff] [blame] | 26 | self.assertNotIn('xxx', self.d) |
Hirokazu Yamamoto | 39defbe | 2008-10-07 18:10:47 +0000 | [diff] [blame] | 27 | self.assertRaises(KeyError, lambda: self.d['xxx']) |
Brett Cannon | ba17cfc | 2008-03-18 01:50:25 +0000 | [diff] [blame] | 28 | self.d.close() |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 29 | |
Brett Cannon | ba17cfc | 2008-03-18 01:50:25 +0000 | [diff] [blame] | 30 | def test_modes(self): |
| 31 | for mode in ['r', 'rw', 'w', 'n']: |
| 32 | try: |
| 33 | self.d = dbm.open(self.filename, mode) |
| 34 | self.d.close() |
| 35 | except dbm.error: |
| 36 | self.fail() |
Neal Norwitz | e7629c8 | 2002-11-02 18:25:08 +0000 | [diff] [blame] | 37 | |
Brett Cannon | 7dbd918 | 2008-03-03 04:19:29 +0000 | [diff] [blame] | 38 | def test_main(): |
Brett Cannon | ba17cfc | 2008-03-18 01:50:25 +0000 | [diff] [blame] | 39 | test_support.run_unittest(DbmTestCase) |
Brett Cannon | 7dbd918 | 2008-03-03 04:19:29 +0000 | [diff] [blame] | 40 | |
| 41 | if __name__ == '__main__': |
| 42 | test_main() |