]> granicus.if.org Git - python/commitdiff
Issue #24286: Forward port dict view abstract base class tests.
authorRaymond Hettinger <python@rcn.com>
Tue, 26 May 2015 08:47:58 +0000 (01:47 -0700)
committerRaymond Hettinger <python@rcn.com>
Tue, 26 May 2015 08:47:58 +0000 (01:47 -0700)
Lib/test/test_collections.py
Lib/test/test_dictviews.py

index ec864667795b6f2bc0f1a1aca726f42c63277c92..ac7b9af2f4cb8665692319a17da4ea22cd2e45cc 100644 (file)
@@ -1867,6 +1867,13 @@ class TestOrderedDict(unittest.TestCase):
         od = OrderedDict(**d)
         self.assertGreater(sys.getsizeof(od), sys.getsizeof(d))
 
+    def test_views(self):
+        # See http://bugs.python.org/issue24286
+        s = 'the quick brown fox jumped over a lazy dog yesterday before dawn'.split()
+        od = OrderedDict.fromkeys(s)
+        self.assertEqual(od.keys(), dict(od).keys())
+        self.assertEqual(od.items(), dict(od).items())
+
     def test_override_update(self):
         # Verify that subclasses can override update() without breaking __init__()
         class MyOD(OrderedDict):
index 280353a3a2b1fd27fd7cde1cb9d113a4812e4ab9..d96832e57630e07e3938112a0d07f1e3547bc162 100644 (file)
@@ -1,3 +1,4 @@
+import collections
 import unittest
 
 class DictSetTest(unittest.TestCase):
@@ -197,6 +198,27 @@ class DictSetTest(unittest.TestCase):
         d[42] = d.values()
         self.assertRaises(RuntimeError, repr, d)
 
+    def test_abc_registry(self):
+        d = dict(a=1)
+
+        self.assertIsInstance(d.keys(), collections.KeysView)
+        self.assertIsInstance(d.keys(), collections.MappingView)
+        self.assertIsInstance(d.keys(), collections.Set)
+        self.assertIsInstance(d.keys(), collections.Sized)
+        self.assertIsInstance(d.keys(), collections.Iterable)
+        self.assertIsInstance(d.keys(), collections.Container)
+
+        self.assertIsInstance(d.values(), collections.ValuesView)
+        self.assertIsInstance(d.values(), collections.MappingView)
+        self.assertIsInstance(d.values(), collections.Sized)
+
+        self.assertIsInstance(d.items(), collections.ItemsView)
+        self.assertIsInstance(d.items(), collections.MappingView)
+        self.assertIsInstance(d.items(), collections.Set)
+        self.assertIsInstance(d.items(), collections.Sized)
+        self.assertIsInstance(d.items(), collections.Iterable)
+        self.assertIsInstance(d.items(), collections.Container)
+
 
 if __name__ == "__main__":
     unittest.main()