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
		
			
				
	
	
		
			140 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import cPickle, unittest
 | |
| from cStringIO import StringIO
 | |
| from test.pickletester import AbstractPickleTests, AbstractPickleModuleTests
 | |
| from test.pickletester import AbstractPicklerUnpicklerObjectTests
 | |
| from test import test_support
 | |
| 
 | |
| class cPickleTests(AbstractPickleTests, AbstractPickleModuleTests):
 | |
| 
 | |
|     def setUp(self):
 | |
|         self.dumps = cPickle.dumps
 | |
|         self.loads = cPickle.loads
 | |
| 
 | |
|     error = cPickle.BadPickleGet
 | |
|     module = cPickle
 | |
| 
 | |
| class cPicklePicklerTests(AbstractPickleTests):
 | |
| 
 | |
|     def dumps(self, arg, proto=0):
 | |
|         f = StringIO()
 | |
|         p = cPickle.Pickler(f, proto)
 | |
|         p.dump(arg)
 | |
|         f.seek(0)
 | |
|         return f.read()
 | |
| 
 | |
|     def loads(self, buf):
 | |
|         f = StringIO(buf)
 | |
|         p = cPickle.Unpickler(f)
 | |
|         return p.load()
 | |
| 
 | |
|     error = cPickle.BadPickleGet
 | |
| 
 | |
| class cPickleListPicklerTests(AbstractPickleTests):
 | |
| 
 | |
|     def dumps(self, arg, proto=0):
 | |
|         p = cPickle.Pickler(proto)
 | |
|         p.dump(arg)
 | |
|         return p.getvalue()
 | |
| 
 | |
|     def loads(self, *args):
 | |
|         f = StringIO(args[0])
 | |
|         p = cPickle.Unpickler(f)
 | |
|         return p.load()
 | |
| 
 | |
|     error = cPickle.BadPickleGet
 | |
| 
 | |
| class cPickleFastPicklerTests(AbstractPickleTests):
 | |
| 
 | |
|     def dumps(self, arg, proto=0):
 | |
|         f = StringIO()
 | |
|         p = cPickle.Pickler(f, proto)
 | |
|         p.fast = 1
 | |
|         p.dump(arg)
 | |
|         f.seek(0)
 | |
|         return f.read()
 | |
| 
 | |
|     def loads(self, *args):
 | |
|         f = StringIO(args[0])
 | |
|         p = cPickle.Unpickler(f)
 | |
|         return p.load()
 | |
| 
 | |
|     error = cPickle.BadPickleGet
 | |
| 
 | |
|     def test_recursive_list(self):
 | |
|         self.assertRaises(ValueError,
 | |
|                           AbstractPickleTests.test_recursive_list,
 | |
|                           self)
 | |
| 
 | |
|     def test_recursive_tuple(self):
 | |
|         self.assertRaises(ValueError,
 | |
|                           AbstractPickleTests.test_recursive_tuple,
 | |
|                           self)
 | |
| 
 | |
|     def test_recursive_inst(self):
 | |
|         self.assertRaises(ValueError,
 | |
|                           AbstractPickleTests.test_recursive_inst,
 | |
|                           self)
 | |
| 
 | |
|     def test_recursive_dict(self):
 | |
|         self.assertRaises(ValueError,
 | |
|                           AbstractPickleTests.test_recursive_dict,
 | |
|                           self)
 | |
| 
 | |
|     def test_recursive_multi(self):
 | |
|         self.assertRaises(ValueError,
 | |
|                           AbstractPickleTests.test_recursive_multi,
 | |
|                           self)
 | |
| 
 | |
|     def test_nonrecursive_deep(self):
 | |
|         # If it's not cyclic, it should pickle OK even if the nesting
 | |
|         # depth exceeds PY_CPICKLE_FAST_LIMIT.  That happens to be
 | |
|         # 50 today.  Jack Jansen reported stack overflow on Mac OS 9
 | |
|         # at 64.
 | |
|         a = []
 | |
|         for i in range(60):
 | |
|             a = [a]
 | |
|         b = self.loads(self.dumps(a))
 | |
|         self.assertEqual(a, b)
 | |
| 
 | |
| class cPicklePicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests):
 | |
| 
 | |
|     pickler_class = cPickle.Pickler
 | |
|     unpickler_class = cPickle.Unpickler
 | |
| 
 | |
| 
 | |
| class Node(object):
 | |
|     pass
 | |
| 
 | |
| class cPickleDeepRecursive(unittest.TestCase):
 | |
|     def test_issue2702(self):
 | |
|         # This should raise a RecursionLimit but in some
 | |
|         # platforms (FreeBSD, win32) sometimes raises KeyError instead,
 | |
|         # or just silently terminates the interpreter (=crashes).
 | |
|         nodes = [Node() for i in range(500)]
 | |
|         for n in nodes:
 | |
|             n.connections = list(nodes)
 | |
|             n.connections.remove(n)
 | |
|         self.assertRaises((AttributeError, RuntimeError), cPickle.dumps, n)
 | |
| 
 | |
|     def test_issue3179(self):
 | |
|         # Safe test, because I broke this case when fixing the
 | |
|         # behaviour for the previous test.
 | |
|         res=[]
 | |
|         for x in range(1,2000):
 | |
|             res.append(dict(doc=x, similar=[]))
 | |
|         cPickle.dumps(res)
 | |
| 
 | |
| 
 | |
| def test_main():
 | |
|     test_support.run_unittest(
 | |
|         cPickleTests,
 | |
|         cPicklePicklerTests,
 | |
|         cPickleListPicklerTests,
 | |
|         cPickleFastPicklerTests,
 | |
|         cPickleDeepRecursive,
 | |
|         cPicklePicklerUnpicklerObjectTests,
 | |
|     )
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     test_main()
 |