43 lines
		
	
	
		
			859 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			859 B
		
	
	
	
		
			Python
		
	
	
	
| from StringIO import StringIO
 | |
| 
 | |
| def pickletest(mod):
 | |
|     f1 = StringIO()
 | |
|     f2 = StringIO()
 | |
| 
 | |
|     pickler1 = mod.Pickler(f1)
 | |
|     unpickler1 = mod.Unpickler(f2)
 | |
| 
 | |
|     pickler2 = mod.Pickler(f2)
 | |
|     unpickler2 = mod.Unpickler(f1)
 | |
| 
 | |
|     #pickler1.memo = unpickler1.memo = {}
 | |
|     #pickler2.memo = unpickler2.memo = {}
 | |
| 
 | |
|     d = {}
 | |
| 
 | |
|     pickler1.dump(d)
 | |
|     f1.seek(0)
 | |
|     d_other = unpickler2.load()
 | |
| 
 | |
|     # translate unpickler2 memo to pickler2
 | |
|     pickler2.memo = dict([(id(obj), (int(x), obj))
 | |
|                             for x, obj in unpickler2.memo.items()])
 | |
| 
 | |
|     pickler2.dump(d_other)
 | |
|     f2.seek(0)
 | |
| 
 | |
|     unpickler1.memo = dict([(str(x), y) for x, y in pickler1.memo.values()])
 | |
| 
 | |
|     d_back = unpickler1.load()
 | |
| 
 | |
|     assert d is d_back
 | |
| 
 | |
| def test_cpickle():
 | |
|     import cPickle
 | |
|     pickletest(cPickle)
 | |
| 
 | |
| def test_pickle():
 | |
|     import pickle
 | |
|     pickletest(pickle)
 | |
| 
 |