]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add some simple tests of the persistence hooks.
authorJeremy Hylton <jeremy@alum.mit.edu>
Wed, 13 Nov 2002 22:10:47 +0000 (22:10 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Wed, 13 Nov 2002 22:10:47 +0000 (22:10 +0000)
Lib/test/pickletester.py

index 2294c3dd0f8897b48b193fd79088dd717c86238b..7c031ec1326a3cc7434259a86761557621c24977 100644 (file)
@@ -286,3 +286,38 @@ class AbstractPickleModuleTests(unittest.TestCase):
             self.assertRaises(ValueError, self.module.dump, 123, f)
         finally:
             os.remove(TESTFN)
+
+class AbstractPersistentPicklerTests(unittest.TestCase):
+
+    # This class defines persistent_id() and persistent_load()
+    # functions that should be used by the pickler.  All even integers
+    # are pickled using persistent ids.
+
+    def persistent_id(self, object):
+        if isinstance(object, int) and object % 2 == 0:
+            self.id_count += 1
+            return str(object)
+        else:
+            return None
+
+    def persistent_load(self, oid):
+        self.load_count += 1
+        object = int(oid)
+        assert object % 2 == 0
+        return object
+
+    def test_persistence(self):
+        self.id_count = 0
+        self.load_count = 0
+        L = range(10)
+        self.assertEqual(self.loads(self.dumps(L)), L)
+        self.assertEqual(self.id_count, 5)
+        self.assertEqual(self.load_count, 5)
+
+    def test_bin_persistence(self):
+        self.id_count = 0
+        self.load_count = 0
+        L = range(10)
+        self.assertEqual(self.loads(self.dumps(L, 1)), L)
+        self.assertEqual(self.id_count, 5)
+        self.assertEqual(self.load_count, 5)