blob: 4fee755da443ff7a4a5e6488d14d7d510814f999 [file] [log] [blame]
Guido van Rossumb90c8482007-02-10 01:11:45 +00001import unittest
Benjamin Petersonee8712c2008-05-20 21:35:26 +00002from test import support
Guido van Rossumb90c8482007-02-10 01:11:45 +00003
4class DictSetTest(unittest.TestCase):
5
Guido van Rossum3ac67412007-02-10 18:55:06 +00006 def test_constructors_not_callable(self):
Guido van Rossumcc2b0162007-02-11 06:12:03 +00007 kt = type({}.keys())
Guido van Rossum3ac67412007-02-10 18:55:06 +00008 self.assertRaises(TypeError, kt, {})
9 self.assertRaises(TypeError, kt)
Guido van Rossumcc2b0162007-02-11 06:12:03 +000010 it = type({}.items())
Guido van Rossum3ac67412007-02-10 18:55:06 +000011 self.assertRaises(TypeError, it, {})
12 self.assertRaises(TypeError, it)
Guido van Rossumcc2b0162007-02-11 06:12:03 +000013 vt = type({}.values())
Guido van Rossum3ac67412007-02-10 18:55:06 +000014 self.assertRaises(TypeError, vt, {})
15 self.assertRaises(TypeError, vt)
16
Guido van Rossumb90c8482007-02-10 01:11:45 +000017 def test_dict_keys(self):
18 d = {1: 10, "a": "ABC"}
Guido van Rossumcc2b0162007-02-11 06:12:03 +000019 keys = d.keys()
Guido van Rossum83825ac2007-02-10 04:54:19 +000020 self.assertEqual(len(keys), 2)
Guido van Rossumd9214d12007-02-12 02:23:40 +000021 self.assertEqual(set(keys), {1, "a"})
22 self.assertEqual(keys, {1, "a"})
23 self.assertNotEqual(keys, {1, "a", "b"})
24 self.assertNotEqual(keys, {1, "b"})
25 self.assertNotEqual(keys, {1})
26 self.assertNotEqual(keys, 42)
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000027 self.assertTrue(1 in keys)
28 self.assertTrue("a" in keys)
29 self.assertTrue(10 not in keys)
30 self.assertTrue("Z" not in keys)
Guido van Rossumd9214d12007-02-12 02:23:40 +000031 self.assertEqual(d.keys(), d.keys())
32 e = {1: 11, "a": "def"}
33 self.assertEqual(d.keys(), e.keys())
34 del e["a"]
35 self.assertNotEqual(d.keys(), e.keys())
Guido van Rossumb90c8482007-02-10 01:11:45 +000036
37 def test_dict_items(self):
38 d = {1: 10, "a": "ABC"}
Guido van Rossumcc2b0162007-02-11 06:12:03 +000039 items = d.items()
Guido van Rossum83825ac2007-02-10 04:54:19 +000040 self.assertEqual(len(items), 2)
Guido van Rossumd9214d12007-02-12 02:23:40 +000041 self.assertEqual(set(items), {(1, 10), ("a", "ABC")})
42 self.assertEqual(items, {(1, 10), ("a", "ABC")})
43 self.assertNotEqual(items, {(1, 10), ("a", "ABC"), "junk"})
44 self.assertNotEqual(items, {(1, 10), ("a", "def")})
45 self.assertNotEqual(items, {(1, 10)})
46 self.assertNotEqual(items, 42)
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000047 self.assertTrue((1, 10) in items)
48 self.assertTrue(("a", "ABC") in items)
49 self.assertTrue((1, 11) not in items)
50 self.assertTrue(1 not in items)
51 self.assertTrue(() not in items)
52 self.assertTrue((1,) not in items)
53 self.assertTrue((1, 2, 3) not in items)
Guido van Rossumd9214d12007-02-12 02:23:40 +000054 self.assertEqual(d.items(), d.items())
55 e = d.copy()
56 self.assertEqual(d.items(), e.items())
57 e["a"] = "def"
58 self.assertNotEqual(d.items(), e.items())
59
60 def test_dict_mixed_keys_items(self):
61 d = {(1, 1): 11, (2, 2): 22}
62 e = {1: 1, 2: 2}
63 self.assertEqual(d.keys(), e.items())
64 self.assertNotEqual(d.items(), e.keys())
Guido van Rossumb90c8482007-02-10 01:11:45 +000065
66 def test_dict_values(self):
67 d = {1: 10, "a": "ABC"}
Guido van Rossumcc2b0162007-02-11 06:12:03 +000068 values = d.values()
Guido van Rossumb90c8482007-02-10 01:11:45 +000069 self.assertEqual(set(values), {10, "ABC"})
Guido van Rossum83825ac2007-02-10 04:54:19 +000070 self.assertEqual(len(values), 2)
Guido van Rossumb90c8482007-02-10 01:11:45 +000071
72def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +000073 support.run_unittest(DictSetTest)
Guido van Rossumb90c8482007-02-10 01:11:45 +000074
75if __name__ == "__main__":
76 test_main()