summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorSkip Montanaro <skip@pobox.com>2002-12-08 18:36:24 (GMT)
committerSkip Montanaro <skip@pobox.com>2002-12-08 18:36:24 (GMT)
commit3bf99e3e876cb367cff34c5b9d659361b5ca9525 (patch)
tree459649bf36f5bd3ea77d0d382ee9d0571f04cb33 /Lib/test
parentea7f75d423342ebab09d1e12e02af6c2bab128ec (diff)
downloadcpython-3bf99e3e876cb367cff34c5b9d659361b5ca9525.zip
cpython-3bf99e3e876cb367cff34c5b9d659361b5ca9525.tar.gz
cpython-3bf99e3e876cb367cff34c5b9d659361b5ca9525.tar.bz2
Add support for binary pickles to the shelve module. In some situations
this can result in significantly smaller files. All classes as well as the open function now accept an optional binary parameter, which defaults to False for backward compatibility. Added a small test suite, updated the libref documentation (including documenting the exported classes and fixing a few other nits) and added a note about the change to Misc/NEWS.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_shelve.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/Lib/test/test_shelve.py b/Lib/test/test_shelve.py
new file mode 100644
index 0000000..29af82e
--- /dev/null
+++ b/Lib/test/test_shelve.py
@@ -0,0 +1,51 @@
+import os
+import unittest
+import shelve
+import glob
+from test import test_support
+
+class TestCase(unittest.TestCase):
+
+ fn = "shelftemp.db"
+
+ def test_ascii_file_shelf(self):
+ try:
+ s = shelve.open(self.fn, binary=False)
+ s['key1'] = (1,2,3,4)
+ self.assertEqual(s['key1'], (1,2,3,4))
+ s.close()
+ finally:
+ for f in glob.glob(self.fn+"*"):
+ os.unlink(f)
+
+ def test_binary_file_shelf(self):
+ try:
+ s = shelve.open(self.fn, binary=True)
+ s['key1'] = (1,2,3,4)
+ self.assertEqual(s['key1'], (1,2,3,4))
+ s.close()
+ finally:
+ for f in glob.glob(self.fn+"*"):
+ os.unlink(f)
+
+ def test_in_memory_shelf(self):
+ d1 = {}
+ s = shelve.Shelf(d1, binary=False)
+ s['key1'] = (1,2,3,4)
+ self.assertEqual(s['key1'], (1,2,3,4))
+ s.close()
+ d2 = {}
+ s = shelve.Shelf(d2, binary=True)
+ s['key1'] = (1,2,3,4)
+ self.assertEqual(s['key1'], (1,2,3,4))
+ s.close()
+
+ self.assertEqual(len(d1), 1)
+ self.assertNotEqual(d1, d2)
+
+def test_main():
+ test_support.run_unittest(TestCase)
+
+
+if __name__ == "__main__":
+ test_main()