These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			164 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import unittest
 | |
| import shelve
 | |
| import glob
 | |
| from test import test_support
 | |
| 
 | |
| test_support.import_module('anydbm', deprecated=True)
 | |
| 
 | |
| class TestCase(unittest.TestCase):
 | |
| 
 | |
|     fn = "shelftemp" + os.extsep + "db"
 | |
| 
 | |
|     def test_close(self):
 | |
|         d1 = {}
 | |
|         s = shelve.Shelf(d1, protocol=2, writeback=False)
 | |
|         s['key1'] = [1,2,3,4]
 | |
|         self.assertEqual(s['key1'], [1,2,3,4])
 | |
|         self.assertEqual(len(s), 1)
 | |
|         s.close()
 | |
|         self.assertRaises(ValueError, len, s)
 | |
|         try:
 | |
|             s['key1']
 | |
|         except ValueError:
 | |
|             pass
 | |
|         else:
 | |
|             self.fail('Closed shelf should not find a key')
 | |
| 
 | |
|     def test_ascii_file_shelf(self):
 | |
|         try:
 | |
|             s = shelve.open(self.fn, protocol=0)
 | |
|             s['key1'] = (1,2,3,4)
 | |
|             self.assertEqual(s['key1'], (1,2,3,4))
 | |
|             s.close()
 | |
|         finally:
 | |
|             for f in glob.glob(self.fn+"*"):
 | |
|                 os.unlink(f)
 | |
| 
 | |
|     def test_binary_file_shelf(self):
 | |
|         try:
 | |
|             s = shelve.open(self.fn, protocol=1)
 | |
|             s['key1'] = (1,2,3,4)
 | |
|             self.assertEqual(s['key1'], (1,2,3,4))
 | |
|             s.close()
 | |
|         finally:
 | |
|             for f in glob.glob(self.fn+"*"):
 | |
|                 os.unlink(f)
 | |
| 
 | |
|     def test_proto2_file_shelf(self):
 | |
|         try:
 | |
|             s = shelve.open(self.fn, protocol=2)
 | |
|             s['key1'] = (1,2,3,4)
 | |
|             self.assertEqual(s['key1'], (1,2,3,4))
 | |
|             s.close()
 | |
|         finally:
 | |
|             for f in glob.glob(self.fn+"*"):
 | |
|                 os.unlink(f)
 | |
| 
 | |
|     def test_in_memory_shelf(self):
 | |
|         d1 = {}
 | |
|         s = shelve.Shelf(d1, protocol=0)
 | |
|         s['key1'] = (1,2,3,4)
 | |
|         self.assertEqual(s['key1'], (1,2,3,4))
 | |
|         s.close()
 | |
|         d2 = {}
 | |
|         s = shelve.Shelf(d2, protocol=1)
 | |
|         s['key1'] = (1,2,3,4)
 | |
|         self.assertEqual(s['key1'], (1,2,3,4))
 | |
|         s.close()
 | |
| 
 | |
|         self.assertEqual(len(d1), 1)
 | |
|         self.assertNotEqual(d1, d2)
 | |
| 
 | |
|     def test_mutable_entry(self):
 | |
|         d1 = {}
 | |
|         s = shelve.Shelf(d1, protocol=2, writeback=False)
 | |
|         s['key1'] = [1,2,3,4]
 | |
|         self.assertEqual(s['key1'], [1,2,3,4])
 | |
|         s['key1'].append(5)
 | |
|         self.assertEqual(s['key1'], [1,2,3,4])
 | |
|         s.close()
 | |
| 
 | |
|         d2 = {}
 | |
|         s = shelve.Shelf(d2, protocol=2, writeback=True)
 | |
|         s['key1'] = [1,2,3,4]
 | |
|         self.assertEqual(s['key1'], [1,2,3,4])
 | |
|         s['key1'].append(5)
 | |
|         self.assertEqual(s['key1'], [1,2,3,4,5])
 | |
|         s.close()
 | |
| 
 | |
|         self.assertEqual(len(d1), 1)
 | |
|         self.assertEqual(len(d2), 1)
 | |
| 
 | |
|     def test_writeback_also_writes_immediately(self):
 | |
|         # Issue 5754
 | |
|         d = {}
 | |
|         s = shelve.Shelf(d, writeback=True)
 | |
|         s['key'] = [1]
 | |
|         p1 = d['key']  # Will give a KeyError if backing store not updated
 | |
|         s['key'].append(2)
 | |
|         s.close()
 | |
|         p2 = d['key']
 | |
|         self.assertNotEqual(p1, p2)  # Write creates new object in store
 | |
| 
 | |
| 
 | |
| from test import mapping_tests
 | |
| 
 | |
| class TestShelveBase(mapping_tests.BasicTestMappingProtocol):
 | |
|     fn = "shelftemp.db"
 | |
|     counter = 0
 | |
|     def __init__(self, *args, **kw):
 | |
|         self._db = []
 | |
|         mapping_tests.BasicTestMappingProtocol.__init__(self, *args, **kw)
 | |
|     type2test = shelve.Shelf
 | |
|     def _reference(self):
 | |
|         return {"key1":"value1", "key2":2, "key3":(1,2,3)}
 | |
|     def _empty_mapping(self):
 | |
|         if self._in_mem:
 | |
|             x= shelve.Shelf({}, **self._args)
 | |
|         else:
 | |
|             self.counter+=1
 | |
|             x= shelve.open(self.fn+str(self.counter), **self._args)
 | |
|         self._db.append(x)
 | |
|         return x
 | |
|     def tearDown(self):
 | |
|         for db in self._db:
 | |
|             db.close()
 | |
|         self._db = []
 | |
|         if not self._in_mem:
 | |
|             for f in glob.glob(self.fn+"*"):
 | |
|                 test_support.unlink(f)
 | |
| 
 | |
| class TestAsciiFileShelve(TestShelveBase):
 | |
|     _args={'protocol':0}
 | |
|     _in_mem = False
 | |
| class TestBinaryFileShelve(TestShelveBase):
 | |
|     _args={'protocol':1}
 | |
|     _in_mem = False
 | |
| class TestProto2FileShelve(TestShelveBase):
 | |
|     _args={'protocol':2}
 | |
|     _in_mem = False
 | |
| class TestAsciiMemShelve(TestShelveBase):
 | |
|     _args={'protocol':0}
 | |
|     _in_mem = True
 | |
| class TestBinaryMemShelve(TestShelveBase):
 | |
|     _args={'protocol':1}
 | |
|     _in_mem = True
 | |
| class TestProto2MemShelve(TestShelveBase):
 | |
|     _args={'protocol':2}
 | |
|     _in_mem = True
 | |
| 
 | |
| def test_main():
 | |
|     test_support.run_unittest(
 | |
|         TestAsciiFileShelve,
 | |
|         TestBinaryFileShelve,
 | |
|         TestProto2FileShelve,
 | |
|         TestAsciiMemShelve,
 | |
|         TestBinaryMemShelve,
 | |
|         TestProto2MemShelve,
 | |
|         TestCase
 | |
|     )
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     test_main()
 |