blob: b6846899d4211ea97f041e20a5543ff3129f14d5 [file] [log] [blame]
Guido van Rossum447b4a01999-03-26 16:20:45 +00001# Check every path through every method of UserList
2
3from UserList import UserList
4
5l0 = []
6l1 = [0]
7l2 = [0, 1]
8
9# Test constructors
10
11u = UserList()
12u0 = UserList(l0)
13u1 = UserList(l1)
14u2 = UserList(l2)
15
16uu = UserList(u)
17uu0 = UserList(u0)
18uu1 = UserList(u1)
19uu2 = UserList(u2)
20
21# Test __repr__
22
23assert str(u0) == str(l0)
24assert repr(u1) == repr(l1)
25assert `u2` == `l2`
26
27# Test __cmp__ and __len__
28
29def mycmp(a, b):
30 r = cmp(a, b)
31 if r < 0: return -1
32 if r > 0: return 1
33 return r
34
35all = [l0, l1, l2, u, u0, u1, u2, uu, uu0, uu1, uu2]
36for a in all:
37 for b in all:
38 assert mycmp(a, b) == mycmp(len(a), len(b))
39
40# Test __getitem__
41
42for i in range(len(u2)):
43 assert u2[i] == i
44
45# Test __setitem__
46
47uu2[0] = 0
48uu2[1] = 100
49try:
50 uu2[2] = 200
51except IndexError:
52 pass
53else:
54 assert 0, "uu2[2] shouldn't be assignable"
55
56# Test __delitem__
57
58del uu2[1]
59del uu2[0]
60try:
61 del uu2[0]
62except IndexError:
63 pass
64else:
65 assert 0, "uu2[0] shouldn't be deletable"
66
67# Test __getslice__
68
69for i in range(-3, 4):
70 assert u2[:i] == l2[:i]
71 assert u2[i:] == l2[i:]
72 for j in range(-3, 4):
73 assert u2[i:j] == l2[i:j]
74
75# Test __setslice__
76
77for i in range(-3, 4):
78 u2[:i] = l2[:i]
79 assert u2 == l2
80 u2[i:] = l2[i:]
81 assert u2 == l2
82 for j in range(-3, 4):
83 u2[i:j] = l2[i:j]
84 assert u2 == l2
85
86uu2 = u2[:]
87uu2[:0] = [-2, -1]
88assert uu2 == [-2, -1, 0, 1]
89uu2[0:] = []
90assert uu2 == []
91
92# Test __delslice__
93
94uu2 = u2[:]
95del uu2[1:2]
96del uu2[0:1]
97assert uu2 == []
98
99uu2 = u2[:]
100del uu2[1:]
101del uu2[:1]
102assert uu2 == []
103
104# Test __add__, __radd__, __mul__ and __rmul__
105
106assert u1 + [] == [] + u1 == u1
107assert u1 + [1] == u2
108assert [-1] + u1 == [-1, 0]
109assert u2 == u2*1 == 1*u2
110assert u2+u2 == u2*2 == 2*u2
111assert u2+u2+u2 == u2*3 == 3*u2
112
113# Test append
114
115u = u1[:]
116u.append(1)
117assert u == u2
118
119# Test insert
120
121u = u2[:]
122u.insert(0, -1)
123assert u == [-1, 0, 1]
124
125# Test pop
126
127u = [-1] + u2
128u.pop()
129assert u == [-1, 0]
130u.pop(0)
131assert u == [0]
132
133# Test remove
134
135u = u2[:]
136u.remove(1)
137assert u == u1
138
139# Test count
140u = u2*3
141assert u.count(0) == 3
142assert u.count(1) == 3
143assert u.count(2) == 0
144
145
146# Test index
147
148assert u2.index(0) == 0
149assert u2.index(1) == 1
150try:
151 u2.index(2)
152except ValueError:
153 pass
154else:
155 assert 0, "expected ValueError"
156
157# Test reverse
158
159u = u2[:]
160u.reverse()
161assert u == [1, 0]
162u.reverse()
163assert u == u2
164
165# Test sort
166
167u = UserList([1, 0])
168u.sort()
169assert u == u2
170
171# Test extend
172
173u = u1[:]
174u.extend(u2)
175assert u == u1 + u2
176