# test_pickle dumps and loads pickles via pickle.py.

# test_cpickle does the same, but via the cPickle module.

# This test covers the other two cases, making pickles with one module and

# loading them via the other.



import pickle

import cPickle



from test import test_support

from test.pickletester import AbstractPickleTests



class DumpCPickle_LoadPickle(AbstractPickleTests):



    error = KeyError



    def dumps(self, arg, proto=0, fast=0):

        # Ignore fast

        return cPickle.dumps(arg, proto)



    def loads(self, buf):

        # Ignore fast

        return pickle.loads(buf)



class DumpPickle_LoadCPickle(AbstractPickleTests):



    error = cPickle.BadPickleGet



    def dumps(self, arg, proto=0, fast=0):

        # Ignore fast

        return pickle.dumps(arg, proto)



    def loads(self, buf):

        # Ignore fast

        return cPickle.loads(buf)



def test_main():

    test_support.run_unittest(

        DumpCPickle_LoadPickle,

        DumpPickle_LoadCPickle

    )



if __name__ == "__main__":

    test_main()

