blob: 63632f73625c4d571366aeaa458a5461bba11d4a [file] [log] [blame]
Guido van Rossum3eccc481999-03-26 15:32:05 +00001# Check every path through every method of UserDict
2
3from UserDict import UserDict
4
5d0 = {}
6d1 = {"one": 1}
7d2 = {"one": 1, "two": 2}
8
9# Test constructors
10
11u = UserDict()
12u0 = UserDict(d0)
13u1 = UserDict(d1)
14u2 = UserDict(d2)
15
16uu = UserDict(u)
17uu0 = UserDict(u0)
18uu1 = UserDict(u1)
19uu2 = UserDict(u2)
20
21# Test __repr__
22
23assert str(u0) == str(d0)
24assert repr(u1) == repr(d1)
25assert `u2` == `d2`
26
27# Test __cmp__ and __len__
28
29all = [d0, d1, d2, u, u0, u1, u2, uu, uu0, uu1, uu2]
30for a in all:
31 for b in all:
32 assert cmp(a, b) == cmp(len(a), len(b))
33
34# Test __getitem__
35
36assert u2["one"] == 1
37try:
38 u1["two"]
39except KeyError:
40 pass
41else:
42 assert 0, "u1['two'] shouldn't exist"
43
44# Test __setitem__
45
46u3 = UserDict(u2)
47u3["two"] = 2
48u3["three"] = 3
49
50# Test __delitem__
51
52del u3["three"]
53try:
54 del u3["three"]
55except KeyError:
56 pass
57else:
58 assert 0, "u3['three'] shouldn't exist"
59
60# Test clear
61
62u3.clear()
63assert u3 == {}
64
65# Test copy()
66
67u2a = u2.copy()
68assert u2a == u2
69
70class MyUserDict(UserDict):
71 def display(self): print self
72
73m2 = MyUserDict(u2)
74m2a = m2.copy()
75assert m2a == m2
76
77# Test keys, items, values
78
79assert u2.keys() == d2.keys()
80assert u2.items() == d2.items()
81assert u2.values() == d2.values()
82
83# Test has_key
84
85for i in u2.keys():
86 assert u2.has_key(i) == 1
87 assert u1.has_key(i) == d1.has_key(i)
88 assert u0.has_key(i) == d0.has_key(i)
89
90# Test update
91
92t = UserDict()
93t.update(u2)
94assert t == u2
95
96# Test get
97
98for i in u2.keys():
99 assert u2.get(i) == u2[i]
100 assert u1.get(i) == d1.get(i)
101 assert u0.get(i) == d0.get(i)