We didn't have any tests making pickles with one of {pickle, cPickle},
and loading them via the other, except for the special cases of this
Guido added to test_datetime.py for datetime module objects.  The new
test_xpickle.py tries all of pickletester's AbstractPickleTests in
both x-module ways.
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index c6ffbea..e1a333b 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -806,6 +806,11 @@
         finally:
             os.remove(TESTFN)
 
+    def test_highest_protocol(self):
+        # Of course this needs to be changed when HIGHEST_PROTOCOL changes.
+        self.assertEqual(self.module.HIGHEST_PROTOCOL, 2)
+
+
 class AbstractPersistentPicklerTests(unittest.TestCase):
 
     # This class defines persistent_id() and persistent_load()
diff --git a/Lib/test/test_xpickle.py b/Lib/test/test_xpickle.py
new file mode 100644
index 0000000..4db894b
--- /dev/null
+++ b/Lib/test/test_xpickle.py
@@ -0,0 +1,47 @@
+# 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
+import unittest
+from cStringIO import StringIO
+
+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():
+    suite = unittest.TestSuite()
+    for test in (DumpCPickle_LoadPickle,
+                 DumpPickle_LoadCPickle,
+                ):
+         suite.addTest(unittest.makeSuite(test))
+    test_support.run_suite(suite)
+
+if __name__ == "__main__":
+    test_main()