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_weakref.py b/Lib/test/test_weakref.py
index 2924313..cf5d0a4 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -912,16 +912,16 @@
         self.assertEqual(len(d), 0)
         self.assertEqual(count, 2)
 
-from test_userdict import TestMappingProtocol
+from test import mapping_tests
 
-class WeakValueDictionaryTestCase(TestMappingProtocol):
+class WeakValueDictionaryTestCase(mapping_tests.BasicTestMappingProtocol):
     """Check that WeakValueDictionary conforms to the mapping protocol"""
     __ref = {"key1":Object(1), "key2":Object(2), "key3":Object(3)}
     _tested_class = weakref.WeakValueDictionary
     def _reference(self):
         return self.__ref.copy()
 
-class WeakKeyDictionaryTestCase(TestMappingProtocol):
+class WeakKeyDictionaryTestCase(mapping_tests.BasicTestMappingProtocol):
     """Check that WeakKeyDictionary conforms to the mapping protocol"""
     __ref = {Object("key1"):1, Object("key2"):2, Object("key3"):3}
     _tested_class = weakref.WeakKeyDictionary