Port the dictionary tests from test_types.py to unittest. Collect as much
mapping tests as possible in mapping_test.py and reuse the tests in
test_dict.py, test_userdict.py, test_weakref.py, test_os.py and test_shelve.py.
From SF patch #736962.
diff --git a/Lib/test/test_shelve.py b/Lib/test/test_shelve.py
index f852be5..fda02da 100644
--- a/Lib/test/test_shelve.py
+++ b/Lib/test/test_shelve.py
@@ -74,14 +74,14 @@
         self.assertEqual(len(d2), 1)
 
 
-from test_userdict import TestMappingProtocol
+from test import mapping_tests
 
-class TestShelveBase(TestMappingProtocol):
+class TestShelveBase(mapping_tests.BasicTestMappingProtocol):
     fn = "shelftemp.db"
     counter = 0
     def __init__(self, *args, **kw):
         self._db = []
-        TestMappingProtocol.__init__(self, *args, **kw)
+        mapping_tests.BasicTestMappingProtocol.__init__(self, *args, **kw)
     _tested_class = shelve.Shelf
     def _reference(self):
         return {"key1":"value1", "key2":2, "key3":(1,2,3)}