| 
									
										
										
										
											2002-03-18 03:00:37 +00:00
										 |  |  | #! /usr/bin/env python | 
					
						
							|  |  |  | """Test script for the anydbm module
 | 
					
						
							|  |  |  |    based on testdumbdbm.py | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | import unittest | 
					
						
							|  |  |  | import anydbm | 
					
						
							|  |  |  | import glob | 
					
						
							| 
									
										
										
										
											2002-07-23 19:04:11 +00:00
										 |  |  | from test import test_support | 
					
						
							| 
									
										
										
										
											2002-03-18 03:00:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-08-09 16:38:32 +00:00
										 |  |  | _fname = test_support.TESTFN | 
					
						
							| 
									
										
										
										
											2002-03-18 03:00:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def _delete_files(): | 
					
						
							|  |  |  |     # we don't know the precise name the underlying database uses | 
					
						
							|  |  |  |     # so we use glob to locate all names | 
					
						
							|  |  |  |     for f in glob.glob(_fname + "*"): | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             os.unlink(f) | 
					
						
							|  |  |  |         except OSError: | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AnyDBMTestCase(unittest.TestCase): | 
					
						
							|  |  |  |     _dict = {'0': '', | 
					
						
							|  |  |  |              'a': 'Python:', | 
					
						
							|  |  |  |              'b': 'Programming', | 
					
						
							|  |  |  |              'c': 'the', | 
					
						
							|  |  |  |              'd': 'way', | 
					
						
							|  |  |  |              'f': 'Guido', | 
					
						
							| 
									
										
										
										
											2008-02-10 15:32:16 +00:00
										 |  |  |              'g': 'intended' | 
					
						
							| 
									
										
										
										
											2002-03-18 03:00:37 +00:00
										 |  |  |              } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, *args): | 
					
						
							|  |  |  |         unittest.TestCase.__init__(self, *args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_anydbm_creation(self): | 
					
						
							|  |  |  |         f = anydbm.open(_fname, 'c') | 
					
						
							|  |  |  |         self.assertEqual(f.keys(), []) | 
					
						
							|  |  |  |         for key in self._dict: | 
					
						
							|  |  |  |             f[key] = self._dict[key] | 
					
						
							|  |  |  |         self.read_helper(f) | 
					
						
							|  |  |  |         f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_anydbm_modification(self): | 
					
						
							|  |  |  |         self.init_db() | 
					
						
							|  |  |  |         f = anydbm.open(_fname, 'c') | 
					
						
							|  |  |  |         self._dict['g'] = f['g'] = "indented" | 
					
						
							|  |  |  |         self.read_helper(f) | 
					
						
							|  |  |  |         f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_anydbm_read(self): | 
					
						
							|  |  |  |         self.init_db() | 
					
						
							|  |  |  |         f = anydbm.open(_fname, 'r') | 
					
						
							|  |  |  |         self.read_helper(f) | 
					
						
							|  |  |  |         f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_anydbm_keys(self): | 
					
						
							|  |  |  |         self.init_db() | 
					
						
							|  |  |  |         f = anydbm.open(_fname, 'r') | 
					
						
							|  |  |  |         keys = self.keys_helper(f) | 
					
						
							|  |  |  |         f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def read_helper(self, f): | 
					
						
							|  |  |  |         keys = self.keys_helper(f) | 
					
						
							|  |  |  |         for key in self._dict: | 
					
						
							|  |  |  |             self.assertEqual(self._dict[key], f[key]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def init_db(self): | 
					
						
							|  |  |  |         f = anydbm.open(_fname, 'n') | 
					
						
							|  |  |  |         for k in self._dict: | 
					
						
							|  |  |  |             f[k] = self._dict[k] | 
					
						
							|  |  |  |         f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def keys_helper(self, f): | 
					
						
							|  |  |  |         keys = f.keys() | 
					
						
							|  |  |  |         keys.sort() | 
					
						
							|  |  |  |         dkeys = self._dict.keys() | 
					
						
							|  |  |  |         dkeys.sort() | 
					
						
							|  |  |  |         self.assertEqual(keys, dkeys) | 
					
						
							|  |  |  |         return keys | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def tearDown(self): | 
					
						
							|  |  |  |         _delete_files() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def setUp(self): | 
					
						
							|  |  |  |         _delete_files() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def test_main(): | 
					
						
							|  |  |  |     try: | 
					
						
							|  |  |  |         test_support.run_unittest(AnyDBMTestCase) | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         _delete_files() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     test_main() |