test_dictviews.py 2.56 KB
Newer Older
1 2 3 4 5
import unittest
from test import test_support

class DictSetTest(unittest.TestCase):

6
    def test_constructors_not_callable(self):
7
        kt = type({}.keys())
8 9
        self.assertRaises(TypeError, kt, {})
        self.assertRaises(TypeError, kt)
10
        it = type({}.items())
11 12
        self.assertRaises(TypeError, it, {})
        self.assertRaises(TypeError, it)
13
        vt = type({}.values())
14 15 16
        self.assertRaises(TypeError, vt, {})
        self.assertRaises(TypeError, vt)

17 18
    def test_dict_keys(self):
        d = {1: 10, "a": "ABC"}
19
        keys = d.keys()
20
        self.assertEqual(len(keys), 2)
21 22 23 24 25 26
        self.assertEqual(set(keys), {1, "a"})
        self.assertEqual(keys, {1, "a"})
        self.assertNotEqual(keys, {1, "a", "b"})
        self.assertNotEqual(keys, {1, "b"})
        self.assertNotEqual(keys, {1})
        self.assertNotEqual(keys, 42)
27 28 29 30
        self.assert_(1 in keys)
        self.assert_("a" in keys)
        self.assert_(10 not in keys)
        self.assert_("Z" not in keys)
31 32 33 34 35
        self.assertEqual(d.keys(), d.keys())
        e = {1: 11, "a": "def"}
        self.assertEqual(d.keys(), e.keys())
        del e["a"]
        self.assertNotEqual(d.keys(), e.keys())
36 37 38

    def test_dict_items(self):
        d = {1: 10, "a": "ABC"}
39
        items = d.items()
40
        self.assertEqual(len(items), 2)
41 42 43 44 45 46
        self.assertEqual(set(items), {(1, 10), ("a", "ABC")})
        self.assertEqual(items, {(1, 10), ("a", "ABC")})
        self.assertNotEqual(items, {(1, 10), ("a", "ABC"), "junk"})
        self.assertNotEqual(items, {(1, 10), ("a", "def")})
        self.assertNotEqual(items, {(1, 10)})
        self.assertNotEqual(items, 42)
47 48 49 50 51 52 53
        self.assert_((1, 10) in items)
        self.assert_(("a", "ABC") in items)
        self.assert_((1, 11) not in items)
        self.assert_(1 not in items)
        self.assert_(() not in items)
        self.assert_((1,) not in items)
        self.assert_((1, 2, 3) not in items)
54 55 56 57 58 59 60 61 62 63 64
        self.assertEqual(d.items(), d.items())
        e = d.copy()
        self.assertEqual(d.items(), e.items())
        e["a"] = "def"
        self.assertNotEqual(d.items(), e.items())

    def test_dict_mixed_keys_items(self):
        d = {(1, 1): 11, (2, 2): 22}
        e = {1: 1, 2: 2}
        self.assertEqual(d.keys(), e.items())
        self.assertNotEqual(d.items(), e.keys())
65 66 67

    def test_dict_values(self):
        d = {1: 10, "a": "ABC"}
68
        values = d.values()
69
        self.assertEqual(set(values), {10, "ABC"})
70
        self.assertEqual(len(values), 2)
71 72 73 74 75 76

def test_main():
    test_support.run_unittest(DictSetTest)

if __name__ == "__main__":
    test_main()