blob: aec4b80fcb2120ddf925df3bf27264319a47ead5 [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
Walter Dörwald75852292003-02-13 18:07:43 +00004import unittest, test.test_support
Tim Petersf5fa0fc2000-09-19 20:31:24 +00005
Walter Dörwald75852292003-02-13 18:07:43 +00006class UserListTest(unittest.TestCase):
Guido van Rossum447b4a01999-03-26 16:20:45 +00007
Walter Dörwald75852292003-02-13 18:07:43 +00008 def test_constructors(self):
9 l0 = []
10 l1 = [0]
11 l2 = [0, 1]
Guido van Rossum447b4a01999-03-26 16:20:45 +000012
Walter Dörwald75852292003-02-13 18:07:43 +000013 u = UserList()
14 u0 = UserList(l0)
15 u1 = UserList(l1)
16 u2 = UserList(l2)
Guido van Rossum447b4a01999-03-26 16:20:45 +000017
Walter Dörwald75852292003-02-13 18:07:43 +000018 uu = UserList(u)
19 uu0 = UserList(u0)
20 uu1 = UserList(u1)
21 uu2 = UserList(u2)
Guido van Rossum447b4a01999-03-26 16:20:45 +000022
Walter Dörwald75852292003-02-13 18:07:43 +000023 v = UserList(tuple(u))
24 class OtherList:
25 def __init__(self, initlist):
26 self.__data = initlist
27 def __len__(self):
28 return len(self.__data)
29 def __getitem__(self, i):
30 return self.__data[i]
31 v0 = UserList(OtherList(u0))
32 vv = UserList("this is also a sequence")
Guido van Rossum447b4a01999-03-26 16:20:45 +000033
Walter Dörwald75852292003-02-13 18:07:43 +000034 def test_repr(self):
35 l0 = []
36 l2 = [0, 1, 2]
37 u0 = UserList(l0)
38 u2 = UserList(l2)
Jeremy Hylton6a973c72000-03-31 00:17:46 +000039
Walter Dörwald75852292003-02-13 18:07:43 +000040 self.assertEqual(str(u0), str(l0))
41 self.assertEqual(repr(u0), repr(l0))
42 self.assertEqual(`u2`, `l2`)
Guido van Rossum447b4a01999-03-26 16:20:45 +000043
Walter Dörwald75852292003-02-13 18:07:43 +000044 def test_cmplen(self):
45 l0 = []
46 l1 = [0]
47 l2 = [0, 1]
Guido van Rossum447b4a01999-03-26 16:20:45 +000048
Walter Dörwald75852292003-02-13 18:07:43 +000049 # Test constructors
Guido van Rossum447b4a01999-03-26 16:20:45 +000050
Walter Dörwald75852292003-02-13 18:07:43 +000051 u = UserList()
52 u0 = UserList(l0)
53 u1 = UserList(l1)
54 u2 = UserList(l2)
Guido van Rossum447b4a01999-03-26 16:20:45 +000055
Walter Dörwald75852292003-02-13 18:07:43 +000056 uu = UserList(u)
57 uu0 = UserList(u0)
58 uu1 = UserList(u1)
59 uu2 = UserList(u2)
Guido van Rossum447b4a01999-03-26 16:20:45 +000060
Walter Dörwald75852292003-02-13 18:07:43 +000061 def mycmp(x, y):
62 r = cmp(x, y)
63 if r < 0: return -1
64 if r > 0: return 1
65 return r
Guido van Rossum447b4a01999-03-26 16:20:45 +000066
Walter Dörwald75852292003-02-13 18:07:43 +000067 all = [l0, l1, l2, u, u0, u1, u2, uu, uu0, uu1, uu2]
68 for a in all:
69 for b in all:
70 self.assertEqual(mycmp(a, b), mycmp(len(a), len(b)))
Guido van Rossum447b4a01999-03-26 16:20:45 +000071
Walter Dörwald75852292003-02-13 18:07:43 +000072 self.assert_(u0 <= u2)
73 self.assert_(u2 >= u0)
Guido van Rossum447b4a01999-03-26 16:20:45 +000074
Walter Dörwald75852292003-02-13 18:07:43 +000075 def test_getitem(self):
76 u = UserList([0, 1, 2])
77 for i in xrange(len(u)):
78 self.assertEqual(u[i], i)
Guido van Rossum447b4a01999-03-26 16:20:45 +000079
Walter Dörwald75852292003-02-13 18:07:43 +000080 def test_setitem(self):
81 u = UserList([0, 1])
82 u[0] = 0
83 u[1] = 100
84 self.assertEqual(u, [0, 100])
85 self.assertRaises(IndexError, u.__setitem__, 2, 200)
Guido van Rossum447b4a01999-03-26 16:20:45 +000086
Walter Dörwald75852292003-02-13 18:07:43 +000087 def test_delitem(self):
88 u = UserList([0, 1])
89 del u[1]
90 del u[0]
91 self.assertRaises(IndexError, u.__delitem__, 0)
Guido van Rossum447b4a01999-03-26 16:20:45 +000092
Walter Dörwald75852292003-02-13 18:07:43 +000093 def test_getslice(self):
94 l = [0, 1]
95 u = UserList(l)
96 for i in xrange(-3, 4):
97 self.assertEqual(u[:i], l[:i])
98 self.assertEqual(u[i:], l[i:])
99 for j in xrange(-3, 4):
100 self.assertEqual(u[i:j], l[i:j])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000101
Walter Dörwald75852292003-02-13 18:07:43 +0000102 def test_setslice(self):
103 l = [0, 1]
104 u = UserList(l)
Guido van Rossum447b4a01999-03-26 16:20:45 +0000105
Walter Dörwald75852292003-02-13 18:07:43 +0000106 # Test __setslice__
107 for i in range(-3, 4):
108 u[:i] = l[:i]
109 self.assertEqual(u, l)
110 u2 = u[:]
111 u2[:i] = u[:i]
112 self.assertEqual(u2, u)
113 u[i:] = l[i:]
114 self.assertEqual(u, l)
115 u2 = u[:]
116 u2[i:] = u[i:]
117 self.assertEqual(u2, u)
118 for j in range(-3, 4):
119 u[i:j] = l[i:j]
120 self.assertEqual(u, l)
121 u2 = u[:]
122 u2[i:j] = u[i:j]
123 self.assertEqual(u2, u)
Guido van Rossum447b4a01999-03-26 16:20:45 +0000124
Walter Dörwald75852292003-02-13 18:07:43 +0000125 uu2 = u2[:]
126 uu2[:0] = [-2, -1]
127 self.assertEqual(uu2, [-2, -1, 0, 1])
128 uu2[0:] = []
129 self.assertEqual(uu2, [])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000130
Walter Dörwald75852292003-02-13 18:07:43 +0000131 def test_contains(self):
132 u = UserList([0, 1, 2])
133 for i in u:
134 self.assert_(i in u)
135 for i in min(u)-1, max(u)+1:
136 self.assert_(i not in u)
Tim Petersf5fa0fc2000-09-19 20:31:24 +0000137
Walter Dörwald75852292003-02-13 18:07:43 +0000138 def test_delslice(self):
139 u = UserList([0, 1])
140 del u[1:2]
141 del u[0:1]
142 self.assertEqual(u, [])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000143
Walter Dörwald75852292003-02-13 18:07:43 +0000144 u = UserList([0, 1])
145 del u[1:]
146 del u[:1]
147 self.assertEqual(u, [])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000148
Walter Dörwald75852292003-02-13 18:07:43 +0000149 def test_addmul(self):
150 u1 = UserList([0])
151 u2 = UserList([0, 1])
152 self.assertEqual(u1, u1 + [])
153 self.assertEqual(u1, [] + u1)
154 self.assertEqual(u1 + [1], u2)
155 self.assertEqual([-1] + u1, [-1, 0])
156 self.assertEqual(u2, u2*1)
157 self.assertEqual(u2, 1*u2)
158 self.assertEqual(u2+u2, u2*2)
159 self.assertEqual(u2+u2, 2*u2)
160 self.assertEqual(u2+u2+u2, u2*3)
161 self.assertEqual(u2+u2+u2, 3*u2)
Guido van Rossum447b4a01999-03-26 16:20:45 +0000162
Walter Dörwald75852292003-02-13 18:07:43 +0000163 def test_add_specials(self):
164 u = UserList("spam")
165 u2 = u + "eggs"
166 self.assertEqual(u2, list("spameggs"))
Guido van Rossum447b4a01999-03-26 16:20:45 +0000167
Walter Dörwald75852292003-02-13 18:07:43 +0000168 def test_radd_specials(self):
169 u = UserList("eggs")
170 u2 = "spam" + u
171 self.assertEqual(u2, list("spameggs"))
172 u2 = u.__radd__(UserList("spam"))
173 self.assertEqual(u2, list("spameggs"))
Guido van Rossum447b4a01999-03-26 16:20:45 +0000174
Walter Dörwald75852292003-02-13 18:07:43 +0000175 def test_append(self):
176 u = UserList((0, ))
177 u.append(1)
178 self.assertEqual(u, [0, 1])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000179
Walter Dörwald75852292003-02-13 18:07:43 +0000180 def test_insert(self):
181 u = UserList((0, 1))
182 u.insert(0, -1)
183 self.assertEqual(u, [-1, 0, 1])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000184
Walter Dörwald75852292003-02-13 18:07:43 +0000185 def test_pop(self):
186 u = UserList((-1, 0, 1))
187 u.pop()
188 self.assertEqual(u, [-1, 0])
189 u.pop(0)
190 self.assertEqual(u, [0])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000191
Walter Dörwald75852292003-02-13 18:07:43 +0000192 def test_remove(self):
193 u = UserList((0, 1))
194 u.remove(1)
195 self.assertEqual(u, [0])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000196
Walter Dörwald75852292003-02-13 18:07:43 +0000197 def test_count(self):
198 u = UserList((0, 1))*3
199 self.assertEqual(u.count(0), 3)
200 self.assertEqual(u.count(1), 3)
201 self.assertEqual(u.count(2), 0)
Guido van Rossum447b4a01999-03-26 16:20:45 +0000202
Walter Dörwald75852292003-02-13 18:07:43 +0000203 def test_index(self):
204 u = UserList((0, 1))
205 self.assertEqual(u.index(0), 0)
206 self.assertEqual(u.index(1), 1)
207 self.assertRaises(ValueError, u.index, 2)
Guido van Rossum447b4a01999-03-26 16:20:45 +0000208
Walter Dörwald75852292003-02-13 18:07:43 +0000209 def test_reverse(self):
210 u = UserList((0, 1))
211 u2 = u[:]
212 u.reverse()
213 self.assertEqual(u, [1, 0])
214 u.reverse()
215 self.assertEqual(u, u2)
Guido van Rossum447b4a01999-03-26 16:20:45 +0000216
Walter Dörwald75852292003-02-13 18:07:43 +0000217 def test_sort(self):
218 u = UserList([1, 0])
219 u.sort()
220 self.assertEqual(u, [0, 1])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000221
Walter Dörwald75852292003-02-13 18:07:43 +0000222 def test_slice(self):
223 u = UserList("spam")
224 u[:2] = "h"
225 self.assertEqual(u, list("ham"))
Guido van Rossum447b4a01999-03-26 16:20:45 +0000226
Walter Dörwald75852292003-02-13 18:07:43 +0000227 def test_iadd(self):
228 u = UserList((0, 1))
229 u += [0, 1]
230 self.assertEqual(u, [0, 1, 0, 1])
231 u += UserList([0, 1])
232 self.assertEqual(u, [0, 1, 0, 1, 0, 1])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000233
Walter Dörwald75852292003-02-13 18:07:43 +0000234 u = UserList("spam")
235 u += "eggs"
236 self.assertEqual(u, list("spameggs"))
Guido van Rossum447b4a01999-03-26 16:20:45 +0000237
Walter Dörwald75852292003-02-13 18:07:43 +0000238 def test_extend(self):
239 u1 = UserList((0, ))
240 u2 = UserList((0, 1))
241 u = u1[:]
242 u.extend(u2)
243 self.assertEqual(u, u1 + u2)
Guido van Rossum447b4a01999-03-26 16:20:45 +0000244
Walter Dörwald75852292003-02-13 18:07:43 +0000245 u = UserList("spam")
246 u.extend("eggs")
247 self.assertEqual(u, list("spameggs"))
Guido van Rossum447b4a01999-03-26 16:20:45 +0000248
Walter Dörwald75852292003-02-13 18:07:43 +0000249 def test_imul(self):
250 u = UserList((0, 1))
251 u *= 3
252 self.assertEqual(u, [0, 1, 0, 1, 0, 1])
Guido van Rossum447b4a01999-03-26 16:20:45 +0000253
Walter Dörwald75852292003-02-13 18:07:43 +0000254def test_main():
255 suite = unittest.TestSuite()
256 suite.addTest(unittest.makeSuite(UserListTest))
257 test.test_support.run_suite(suite)
Guido van Rossum447b4a01999-03-26 16:20:45 +0000258
Walter Dörwald75852292003-02-13 18:07:43 +0000259if __name__ == "__main__":
260 test_main()