diff --git a/Lib/test/test_dictviews.py b/Lib/test/test_dictviews.py
index 4d12647..277e05b 100644
--- a/Lib/test/test_dictviews.py
+++ b/Lib/test/test_dictviews.py
@@ -69,6 +69,82 @@
         self.assertEqual(set(values), {10, "ABC"})
         self.assertEqual(len(values), 2)
 
+    def test_dict_repr(self):
+        d = {1: 10, "a": "ABC"}
+        self.assertIsInstance(repr(d), str)
+        r = repr(d.items())
+        self.assertIsInstance(r, str)
+        self.assertTrue(r == "dict_items([('a', 'ABC'), (1, 10)])" or
+                        r == "dict_items([(1, 10), ('a', 'ABC')])")
+        r = repr(d.keys())
+        self.assertIsInstance(r, str)
+        self.assertTrue(r == "dict_keys(['a', 1])" or
+                        r == "dict_keys([1, 'a'])")
+        r = repr(d.values())
+        self.assertIsInstance(r, str)
+        self.assertTrue(r == "dict_values(['ABC', 10])" or
+                        r == "dict_values([10, 'ABC'])")
+
+    def test_keys_set_operations(self):
+        d1 = {'a': 1, 'b': 2}
+        d2 = {'b': 3, 'c': 2}
+        d3 = {'d': 4, 'e': 5}
+        self.assertEqual(d1.keys() & d1.keys(), {'a', 'b'})
+        self.assertEqual(d1.keys() & d2.keys(), {'b'})
+        self.assertEqual(d1.keys() & d3.keys(), set())
+        self.assertEqual(d1.keys() & set(d1.keys()), {'a', 'b'})
+        self.assertEqual(d1.keys() & set(d2.keys()), {'b'})
+        self.assertEqual(d1.keys() & set(d3.keys()), set())
+
+        self.assertEqual(d1.keys() | d1.keys(), {'a', 'b'})
+        self.assertEqual(d1.keys() | d2.keys(), {'a', 'b', 'c'})
+        self.assertEqual(d1.keys() | d3.keys(), {'a', 'b', 'd', 'e'})
+        self.assertEqual(d1.keys() | set(d1.keys()), {'a', 'b'})
+        self.assertEqual(d1.keys() | set(d2.keys()), {'a', 'b', 'c'})
+        self.assertEqual(d1.keys() | set(d3.keys()),
+                         {'a', 'b', 'd', 'e'})
+
+        self.assertEqual(d1.keys() ^ d1.keys(), set())
+        self.assertEqual(d1.keys() ^ d2.keys(), {'a', 'c'})
+        self.assertEqual(d1.keys() ^ d3.keys(), {'a', 'b', 'd', 'e'})
+        self.assertEqual(d1.keys() ^ set(d1.keys()), set())
+        self.assertEqual(d1.keys() ^ set(d2.keys()), {'a', 'c'})
+        self.assertEqual(d1.keys() ^ set(d3.keys()),
+                         {'a', 'b', 'd', 'e'})
+
+    def test_items_set_operations(self):
+        d1 = {'a': 1, 'b': 2}
+        d2 = {'a': 2, 'b': 2}
+        d3 = {'d': 4, 'e': 5}
+        self.assertEqual(
+            d1.items() & d1.items(), {('a', 1), ('b', 2)})
+        self.assertEqual(d1.items() & d2.items(), {('b', 2)})
+        self.assertEqual(d1.items() & d3.items(), set())
+        self.assertEqual(d1.items() & set(d1.items()),
+                         {('a', 1), ('b', 2)})
+        self.assertEqual(d1.items() & set(d2.items()), {('b', 2)})
+        self.assertEqual(d1.items() & set(d3.items()), set())
+
+        self.assertEqual(d1.items() | d1.items(),
+                         {('a', 1), ('b', 2)})
+        self.assertEqual(d1.items() | d2.items(),
+                         {('a', 1), ('a', 2), ('b', 2)})
+        self.assertEqual(d1.items() | d3.items(),
+                         {('a', 1), ('b', 2), ('d', 4), ('e', 5)})
+        self.assertEqual(d1.items() | set(d1.items()),
+                         {('a', 1), ('b', 2)})
+        self.assertEqual(d1.items() | set(d2.items()),
+                         {('a', 1), ('a', 2), ('b', 2)})
+        self.assertEqual(d1.items() | set(d3.items()),
+                         {('a', 1), ('b', 2), ('d', 4), ('e', 5)})
+
+        self.assertEqual(d1.items() ^ d1.items(), set())
+        self.assertEqual(d1.items() ^ d2.items(),
+                         {('a', 1), ('a', 2)})
+        self.assertEqual(d1.items() ^ d3.items(),
+                         {('a', 1), ('b', 2), ('d', 4), ('e', 5)})
+
+
 def test_main():
     support.run_unittest(DictSetTest)
 
