blob: 00dcbd2160e21141d5eb238b5e84595ae08b53f0 [file] [log] [blame]
Benjamin Petersonee8712c2008-05-20 21:35:26 +00001from test import support
Kristján Valur Jónsson42a40c52009-04-01 11:28:47 +00002support.import_module("dbm.ndbm") #skip if not supported
Christian Heimesb186d002008-03-18 15:15:01 +00003import unittest
Neal Norwitze7629c82002-11-02 18:25:08 +00004import os
Christian Heimesb186d002008-03-18 15:15:01 +00005import random
Georg Brandl0a7ac7d2008-05-26 10:29:35 +00006import dbm.ndbm
7from dbm.ndbm import error
Roger E. Massefab8ab81996-12-20 22:36:52 +00008
Christian Heimesb186d002008-03-18 15:15:01 +00009class DbmTestCase(unittest.TestCase):
Roger E. Masse16f9fd21996-12-10 00:06:24 +000010
Christian Heimesb186d002008-03-18 15:15:01 +000011 def setUp(self):
Benjamin Petersonee8712c2008-05-20 21:35:26 +000012 self.filename = support.TESTFN
Georg Brandl0a7ac7d2008-05-26 10:29:35 +000013 self.d = dbm.ndbm.open(self.filename, 'c')
Christian Heimesb186d002008-03-18 15:15:01 +000014 self.d.close()
Fred Drake57a4e902000-09-18 17:56:58 +000015
Christian Heimesb186d002008-03-18 15:15:01 +000016 def tearDown(self):
17 for suffix in ['', '.pag', '.dir', '.db']:
Benjamin Petersonee8712c2008-05-20 21:35:26 +000018 support.unlink(self.filename + suffix)
Roger E. Masse16f9fd21996-12-10 00:06:24 +000019
Christian Heimesb186d002008-03-18 15:15:01 +000020 def test_keys(self):
Georg Brandl0a7ac7d2008-05-26 10:29:35 +000021 self.d = dbm.ndbm.open(self.filename, 'c')
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000022 self.assertTrue(self.d.keys() == [])
Christian Heimesb186d002008-03-18 15:15:01 +000023 self.d['a'] = 'b'
Brett Cannon7317c1e2008-11-25 19:19:17 +000024 self.d[b'bytes'] = b'data'
Christian Heimesb186d002008-03-18 15:15:01 +000025 self.d['12345678910'] = '019237410982340912840198242'
26 self.d.keys()
Benjamin Peterson577473f2010-01-19 00:09:57 +000027 self.assertIn(b'a', self.d)
Brett Cannon7317c1e2008-11-25 19:19:17 +000028 self.assertEqual(self.d[b'bytes'], b'data')
Christian Heimesb186d002008-03-18 15:15:01 +000029 self.d.close()
Neal Norwitze7629c82002-11-02 18:25:08 +000030
Christian Heimesb186d002008-03-18 15:15:01 +000031 def test_modes(self):
32 for mode in ['r', 'rw', 'w', 'n']:
33 try:
Georg Brandl0a7ac7d2008-05-26 10:29:35 +000034 self.d = dbm.ndbm.open(self.filename, mode)
Christian Heimesb186d002008-03-18 15:15:01 +000035 self.d.close()
Georg Brandl0a7ac7d2008-05-26 10:29:35 +000036 except error:
Christian Heimesb186d002008-03-18 15:15:01 +000037 self.fail()
Neal Norwitze7629c82002-11-02 18:25:08 +000038
Christian Heimes180510d2008-03-03 19:15:45 +000039def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +000040 support.run_unittest(DbmTestCase)
Christian Heimes180510d2008-03-03 19:15:45 +000041
42if __name__ == '__main__':
43 test_main()