| import pickle | 
 | from cStringIO import StringIO | 
 |  | 
 | from test import test_support | 
 |  | 
 | from test.pickletester import AbstractPickleTests | 
 | from test.pickletester import AbstractPickleModuleTests | 
 | from test.pickletester import AbstractPersistentPicklerTests | 
 | from test.pickletester import AbstractPicklerUnpicklerObjectTests | 
 |  | 
 | class PickleTests(AbstractPickleTests, AbstractPickleModuleTests): | 
 |  | 
 |     def dumps(self, arg, proto=0, fast=0): | 
 |         # Ignore fast | 
 |         return pickle.dumps(arg, proto) | 
 |  | 
 |     def loads(self, buf): | 
 |         # Ignore fast | 
 |         return pickle.loads(buf) | 
 |  | 
 |     module = pickle | 
 |     error = KeyError | 
 |  | 
 | class PicklerTests(AbstractPickleTests): | 
 |  | 
 |     error = KeyError | 
 |  | 
 |     def dumps(self, arg, proto=0, fast=0): | 
 |         f = StringIO() | 
 |         p = pickle.Pickler(f, proto) | 
 |         if fast: | 
 |             p.fast = fast | 
 |         p.dump(arg) | 
 |         f.seek(0) | 
 |         return f.read() | 
 |  | 
 |     def loads(self, buf): | 
 |         f = StringIO(buf) | 
 |         u = pickle.Unpickler(f) | 
 |         return u.load() | 
 |  | 
 | class PersPicklerTests(AbstractPersistentPicklerTests): | 
 |  | 
 |     def dumps(self, arg, proto=0, fast=0): | 
 |         class PersPickler(pickle.Pickler): | 
 |             def persistent_id(subself, obj): | 
 |                 return self.persistent_id(obj) | 
 |         f = StringIO() | 
 |         p = PersPickler(f, proto) | 
 |         if fast: | 
 |             p.fast = fast | 
 |         p.dump(arg) | 
 |         f.seek(0) | 
 |         return f.read() | 
 |  | 
 |     def loads(self, buf): | 
 |         class PersUnpickler(pickle.Unpickler): | 
 |             def persistent_load(subself, obj): | 
 |                 return self.persistent_load(obj) | 
 |         f = StringIO(buf) | 
 |         u = PersUnpickler(f) | 
 |         return u.load() | 
 |  | 
 | class PicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests): | 
 |  | 
 |     pickler_class = pickle.Pickler | 
 |     unpickler_class = pickle.Unpickler | 
 |  | 
 |  | 
 | def test_main(): | 
 |     test_support.run_unittest( | 
 |         PickleTests, | 
 |         PicklerTests, | 
 |         PersPicklerTests, | 
 |         PicklerUnpicklerObjectTests, | 
 |     ) | 
 |     test_support.run_doctest(pickle) | 
 |  | 
 | if __name__ == "__main__": | 
 |     test_main() |