]>
Commit | Line | Data |
---|---|---|
4710c53d | 1 | """\r |
2 | Tests common to list and UserList.UserList\r | |
3 | """\r | |
4 | \r | |
5 | import sys\r | |
6 | import os\r | |
7 | \r | |
8 | from test import test_support, seq_tests\r | |
9 | \r | |
10 | class CommonTest(seq_tests.CommonTest):\r | |
11 | \r | |
12 | def test_init(self):\r | |
13 | # Iterable arg is optional\r | |
14 | self.assertEqual(self.type2test([]), self.type2test())\r | |
15 | \r | |
16 | # Init clears previous values\r | |
17 | a = self.type2test([1, 2, 3])\r | |
18 | a.__init__()\r | |
19 | self.assertEqual(a, self.type2test([]))\r | |
20 | \r | |
21 | # Init overwrites previous values\r | |
22 | a = self.type2test([1, 2, 3])\r | |
23 | a.__init__([4, 5, 6])\r | |
24 | self.assertEqual(a, self.type2test([4, 5, 6]))\r | |
25 | \r | |
26 | # Mutables always return a new object\r | |
27 | b = self.type2test(a)\r | |
28 | self.assertNotEqual(id(a), id(b))\r | |
29 | self.assertEqual(a, b)\r | |
30 | \r | |
31 | def test_repr(self):\r | |
32 | l0 = []\r | |
33 | l2 = [0, 1, 2]\r | |
34 | a0 = self.type2test(l0)\r | |
35 | a2 = self.type2test(l2)\r | |
36 | \r | |
37 | self.assertEqual(str(a0), str(l0))\r | |
38 | self.assertEqual(repr(a0), repr(l0))\r | |
39 | self.assertEqual(repr(a2), repr(l2))\r | |
40 | self.assertEqual(str(a2), "[0, 1, 2]")\r | |
41 | self.assertEqual(repr(a2), "[0, 1, 2]")\r | |
42 | \r | |
43 | a2.append(a2)\r | |
44 | a2.append(3)\r | |
45 | self.assertEqual(str(a2), "[0, 1, 2, [...], 3]")\r | |
46 | self.assertEqual(repr(a2), "[0, 1, 2, [...], 3]")\r | |
47 | \r | |
48 | l0 = []\r | |
49 | for i in xrange(sys.getrecursionlimit() + 100):\r | |
50 | l0 = [l0]\r | |
51 | self.assertRaises(RuntimeError, repr, l0)\r | |
52 | \r | |
53 | def test_print(self):\r | |
54 | d = self.type2test(xrange(200))\r | |
55 | d.append(d)\r | |
56 | d.extend(xrange(200,400))\r | |
57 | d.append(d)\r | |
58 | d.append(400)\r | |
59 | try:\r | |
60 | with open(test_support.TESTFN, "wb") as fo:\r | |
61 | print >> fo, d,\r | |
62 | with open(test_support.TESTFN, "rb") as fo:\r | |
63 | self.assertEqual(fo.read(), repr(d))\r | |
64 | finally:\r | |
65 | os.remove(test_support.TESTFN)\r | |
66 | \r | |
67 | def test_set_subscript(self):\r | |
68 | a = self.type2test(range(20))\r | |
69 | self.assertRaises(ValueError, a.__setitem__, slice(0, 10, 0), [1,2,3])\r | |
70 | self.assertRaises(TypeError, a.__setitem__, slice(0, 10), 1)\r | |
71 | self.assertRaises(ValueError, a.__setitem__, slice(0, 10, 2), [1,2])\r | |
72 | self.assertRaises(TypeError, a.__getitem__, 'x', 1)\r | |
73 | a[slice(2,10,3)] = [1,2,3]\r | |
74 | self.assertEqual(a, self.type2test([0, 1, 1, 3, 4, 2, 6, 7, 3,\r | |
75 | 9, 10, 11, 12, 13, 14, 15,\r | |
76 | 16, 17, 18, 19]))\r | |
77 | \r | |
78 | def test_reversed(self):\r | |
79 | a = self.type2test(range(20))\r | |
80 | r = reversed(a)\r | |
81 | self.assertEqual(list(r), self.type2test(range(19, -1, -1)))\r | |
82 | self.assertRaises(StopIteration, r.next)\r | |
83 | self.assertEqual(list(reversed(self.type2test())),\r | |
84 | self.type2test())\r | |
85 | # Bug 3689: make sure list-reversed-iterator doesn't have __len__\r | |
86 | self.assertRaises(TypeError, len, reversed([1,2,3]))\r | |
87 | \r | |
88 | def test_setitem(self):\r | |
89 | a = self.type2test([0, 1])\r | |
90 | a[0] = 0\r | |
91 | a[1] = 100\r | |
92 | self.assertEqual(a, self.type2test([0, 100]))\r | |
93 | a[-1] = 200\r | |
94 | self.assertEqual(a, self.type2test([0, 200]))\r | |
95 | a[-2] = 100\r | |
96 | self.assertEqual(a, self.type2test([100, 200]))\r | |
97 | self.assertRaises(IndexError, a.__setitem__, -3, 200)\r | |
98 | self.assertRaises(IndexError, a.__setitem__, 2, 200)\r | |
99 | \r | |
100 | a = self.type2test([])\r | |
101 | self.assertRaises(IndexError, a.__setitem__, 0, 200)\r | |
102 | self.assertRaises(IndexError, a.__setitem__, -1, 200)\r | |
103 | self.assertRaises(TypeError, a.__setitem__)\r | |
104 | \r | |
105 | a = self.type2test([0,1,2,3,4])\r | |
106 | a[0L] = 1\r | |
107 | a[1L] = 2\r | |
108 | a[2L] = 3\r | |
109 | self.assertEqual(a, self.type2test([1,2,3,3,4]))\r | |
110 | a[0] = 5\r | |
111 | a[1] = 6\r | |
112 | a[2] = 7\r | |
113 | self.assertEqual(a, self.type2test([5,6,7,3,4]))\r | |
114 | a[-2L] = 88\r | |
115 | a[-1L] = 99\r | |
116 | self.assertEqual(a, self.type2test([5,6,7,88,99]))\r | |
117 | a[-2] = 8\r | |
118 | a[-1] = 9\r | |
119 | self.assertEqual(a, self.type2test([5,6,7,8,9]))\r | |
120 | \r | |
121 | def test_delitem(self):\r | |
122 | a = self.type2test([0, 1])\r | |
123 | del a[1]\r | |
124 | self.assertEqual(a, [0])\r | |
125 | del a[0]\r | |
126 | self.assertEqual(a, [])\r | |
127 | \r | |
128 | a = self.type2test([0, 1])\r | |
129 | del a[-2]\r | |
130 | self.assertEqual(a, [1])\r | |
131 | del a[-1]\r | |
132 | self.assertEqual(a, [])\r | |
133 | \r | |
134 | a = self.type2test([0, 1])\r | |
135 | self.assertRaises(IndexError, a.__delitem__, -3)\r | |
136 | self.assertRaises(IndexError, a.__delitem__, 2)\r | |
137 | \r | |
138 | a = self.type2test([])\r | |
139 | self.assertRaises(IndexError, a.__delitem__, 0)\r | |
140 | \r | |
141 | self.assertRaises(TypeError, a.__delitem__)\r | |
142 | \r | |
143 | def test_setslice(self):\r | |
144 | l = [0, 1]\r | |
145 | a = self.type2test(l)\r | |
146 | \r | |
147 | for i in range(-3, 4):\r | |
148 | a[:i] = l[:i]\r | |
149 | self.assertEqual(a, l)\r | |
150 | a2 = a[:]\r | |
151 | a2[:i] = a[:i]\r | |
152 | self.assertEqual(a2, a)\r | |
153 | a[i:] = l[i:]\r | |
154 | self.assertEqual(a, l)\r | |
155 | a2 = a[:]\r | |
156 | a2[i:] = a[i:]\r | |
157 | self.assertEqual(a2, a)\r | |
158 | for j in range(-3, 4):\r | |
159 | a[i:j] = l[i:j]\r | |
160 | self.assertEqual(a, l)\r | |
161 | a2 = a[:]\r | |
162 | a2[i:j] = a[i:j]\r | |
163 | self.assertEqual(a2, a)\r | |
164 | \r | |
165 | aa2 = a2[:]\r | |
166 | aa2[:0] = [-2, -1]\r | |
167 | self.assertEqual(aa2, [-2, -1, 0, 1])\r | |
168 | aa2[0:] = []\r | |
169 | self.assertEqual(aa2, [])\r | |
170 | \r | |
171 | a = self.type2test([1, 2, 3, 4, 5])\r | |
172 | a[:-1] = a\r | |
173 | self.assertEqual(a, self.type2test([1, 2, 3, 4, 5, 5]))\r | |
174 | a = self.type2test([1, 2, 3, 4, 5])\r | |
175 | a[1:] = a\r | |
176 | self.assertEqual(a, self.type2test([1, 1, 2, 3, 4, 5]))\r | |
177 | a = self.type2test([1, 2, 3, 4, 5])\r | |
178 | a[1:-1] = a\r | |
179 | self.assertEqual(a, self.type2test([1, 1, 2, 3, 4, 5, 5]))\r | |
180 | \r | |
181 | a = self.type2test([])\r | |
182 | a[:] = tuple(range(10))\r | |
183 | self.assertEqual(a, self.type2test(range(10)))\r | |
184 | \r | |
185 | self.assertRaises(TypeError, a.__setslice__, 0, 1, 5)\r | |
186 | self.assertRaises(TypeError, a.__setitem__, slice(0, 1, 5))\r | |
187 | \r | |
188 | self.assertRaises(TypeError, a.__setslice__)\r | |
189 | self.assertRaises(TypeError, a.__setitem__)\r | |
190 | \r | |
191 | def test_delslice(self):\r | |
192 | a = self.type2test([0, 1])\r | |
193 | del a[1:2]\r | |
194 | del a[0:1]\r | |
195 | self.assertEqual(a, self.type2test([]))\r | |
196 | \r | |
197 | a = self.type2test([0, 1])\r | |
198 | del a[1L:2L]\r | |
199 | del a[0L:1L]\r | |
200 | self.assertEqual(a, self.type2test([]))\r | |
201 | \r | |
202 | a = self.type2test([0, 1])\r | |
203 | del a[-2:-1]\r | |
204 | self.assertEqual(a, self.type2test([1]))\r | |
205 | \r | |
206 | a = self.type2test([0, 1])\r | |
207 | del a[-2L:-1L]\r | |
208 | self.assertEqual(a, self.type2test([1]))\r | |
209 | \r | |
210 | a = self.type2test([0, 1])\r | |
211 | del a[1:]\r | |
212 | del a[:1]\r | |
213 | self.assertEqual(a, self.type2test([]))\r | |
214 | \r | |
215 | a = self.type2test([0, 1])\r | |
216 | del a[1L:]\r | |
217 | del a[:1L]\r | |
218 | self.assertEqual(a, self.type2test([]))\r | |
219 | \r | |
220 | a = self.type2test([0, 1])\r | |
221 | del a[-1:]\r | |
222 | self.assertEqual(a, self.type2test([0]))\r | |
223 | \r | |
224 | a = self.type2test([0, 1])\r | |
225 | del a[-1L:]\r | |
226 | self.assertEqual(a, self.type2test([0]))\r | |
227 | \r | |
228 | a = self.type2test([0, 1])\r | |
229 | del a[:]\r | |
230 | self.assertEqual(a, self.type2test([]))\r | |
231 | \r | |
232 | def test_append(self):\r | |
233 | a = self.type2test([])\r | |
234 | a.append(0)\r | |
235 | a.append(1)\r | |
236 | a.append(2)\r | |
237 | self.assertEqual(a, self.type2test([0, 1, 2]))\r | |
238 | \r | |
239 | self.assertRaises(TypeError, a.append)\r | |
240 | \r | |
241 | def test_extend(self):\r | |
242 | a1 = self.type2test([0])\r | |
243 | a2 = self.type2test((0, 1))\r | |
244 | a = a1[:]\r | |
245 | a.extend(a2)\r | |
246 | self.assertEqual(a, a1 + a2)\r | |
247 | \r | |
248 | a.extend(self.type2test([]))\r | |
249 | self.assertEqual(a, a1 + a2)\r | |
250 | \r | |
251 | a.extend(a)\r | |
252 | self.assertEqual(a, self.type2test([0, 0, 1, 0, 0, 1]))\r | |
253 | \r | |
254 | a = self.type2test("spam")\r | |
255 | a.extend("eggs")\r | |
256 | self.assertEqual(a, list("spameggs"))\r | |
257 | \r | |
258 | self.assertRaises(TypeError, a.extend, None)\r | |
259 | \r | |
260 | self.assertRaises(TypeError, a.extend)\r | |
261 | \r | |
262 | def test_insert(self):\r | |
263 | a = self.type2test([0, 1, 2])\r | |
264 | a.insert(0, -2)\r | |
265 | a.insert(1, -1)\r | |
266 | a.insert(2, 0)\r | |
267 | self.assertEqual(a, [-2, -1, 0, 0, 1, 2])\r | |
268 | \r | |
269 | b = a[:]\r | |
270 | b.insert(-2, "foo")\r | |
271 | b.insert(-200, "left")\r | |
272 | b.insert(200, "right")\r | |
273 | self.assertEqual(b, self.type2test(["left",-2,-1,0,0,"foo",1,2,"right"]))\r | |
274 | \r | |
275 | self.assertRaises(TypeError, a.insert)\r | |
276 | \r | |
277 | def test_pop(self):\r | |
278 | a = self.type2test([-1, 0, 1])\r | |
279 | a.pop()\r | |
280 | self.assertEqual(a, [-1, 0])\r | |
281 | a.pop(0)\r | |
282 | self.assertEqual(a, [0])\r | |
283 | self.assertRaises(IndexError, a.pop, 5)\r | |
284 | a.pop(0)\r | |
285 | self.assertEqual(a, [])\r | |
286 | self.assertRaises(IndexError, a.pop)\r | |
287 | self.assertRaises(TypeError, a.pop, 42, 42)\r | |
288 | a = self.type2test([0, 10, 20, 30, 40])\r | |
289 | \r | |
290 | def test_remove(self):\r | |
291 | a = self.type2test([0, 0, 1])\r | |
292 | a.remove(1)\r | |
293 | self.assertEqual(a, [0, 0])\r | |
294 | a.remove(0)\r | |
295 | self.assertEqual(a, [0])\r | |
296 | a.remove(0)\r | |
297 | self.assertEqual(a, [])\r | |
298 | \r | |
299 | self.assertRaises(ValueError, a.remove, 0)\r | |
300 | \r | |
301 | self.assertRaises(TypeError, a.remove)\r | |
302 | \r | |
303 | class BadExc(Exception):\r | |
304 | pass\r | |
305 | \r | |
306 | class BadCmp:\r | |
307 | def __eq__(self, other):\r | |
308 | if other == 2:\r | |
309 | raise BadExc()\r | |
310 | return False\r | |
311 | \r | |
312 | a = self.type2test([0, 1, 2, 3])\r | |
313 | self.assertRaises(BadExc, a.remove, BadCmp())\r | |
314 | \r | |
315 | class BadCmp2:\r | |
316 | def __eq__(self, other):\r | |
317 | raise BadExc()\r | |
318 | \r | |
319 | d = self.type2test('abcdefghcij')\r | |
320 | d.remove('c')\r | |
321 | self.assertEqual(d, self.type2test('abdefghcij'))\r | |
322 | d.remove('c')\r | |
323 | self.assertEqual(d, self.type2test('abdefghij'))\r | |
324 | self.assertRaises(ValueError, d.remove, 'c')\r | |
325 | self.assertEqual(d, self.type2test('abdefghij'))\r | |
326 | \r | |
327 | # Handle comparison errors\r | |
328 | d = self.type2test(['a', 'b', BadCmp2(), 'c'])\r | |
329 | e = self.type2test(d)\r | |
330 | self.assertRaises(BadExc, d.remove, 'c')\r | |
331 | for x, y in zip(d, e):\r | |
332 | # verify that original order and values are retained.\r | |
333 | self.assertIs(x, y)\r | |
334 | \r | |
335 | def test_count(self):\r | |
336 | a = self.type2test([0, 1, 2])*3\r | |
337 | self.assertEqual(a.count(0), 3)\r | |
338 | self.assertEqual(a.count(1), 3)\r | |
339 | self.assertEqual(a.count(3), 0)\r | |
340 | \r | |
341 | self.assertRaises(TypeError, a.count)\r | |
342 | \r | |
343 | class BadExc(Exception):\r | |
344 | pass\r | |
345 | \r | |
346 | class BadCmp:\r | |
347 | def __eq__(self, other):\r | |
348 | if other == 2:\r | |
349 | raise BadExc()\r | |
350 | return False\r | |
351 | \r | |
352 | self.assertRaises(BadExc, a.count, BadCmp())\r | |
353 | \r | |
354 | def test_index(self):\r | |
355 | u = self.type2test([0, 1])\r | |
356 | self.assertEqual(u.index(0), 0)\r | |
357 | self.assertEqual(u.index(1), 1)\r | |
358 | self.assertRaises(ValueError, u.index, 2)\r | |
359 | \r | |
360 | u = self.type2test([-2, -1, 0, 0, 1, 2])\r | |
361 | self.assertEqual(u.count(0), 2)\r | |
362 | self.assertEqual(u.index(0), 2)\r | |
363 | self.assertEqual(u.index(0, 2), 2)\r | |
364 | self.assertEqual(u.index(-2, -10), 0)\r | |
365 | self.assertEqual(u.index(0, 3), 3)\r | |
366 | self.assertEqual(u.index(0, 3, 4), 3)\r | |
367 | self.assertRaises(ValueError, u.index, 2, 0, -10)\r | |
368 | \r | |
369 | self.assertRaises(TypeError, u.index)\r | |
370 | \r | |
371 | class BadExc(Exception):\r | |
372 | pass\r | |
373 | \r | |
374 | class BadCmp:\r | |
375 | def __eq__(self, other):\r | |
376 | if other == 2:\r | |
377 | raise BadExc()\r | |
378 | return False\r | |
379 | \r | |
380 | a = self.type2test([0, 1, 2, 3])\r | |
381 | self.assertRaises(BadExc, a.index, BadCmp())\r | |
382 | \r | |
383 | a = self.type2test([-2, -1, 0, 0, 1, 2])\r | |
384 | self.assertEqual(a.index(0), 2)\r | |
385 | self.assertEqual(a.index(0, 2), 2)\r | |
386 | self.assertEqual(a.index(0, -4), 2)\r | |
387 | self.assertEqual(a.index(-2, -10), 0)\r | |
388 | self.assertEqual(a.index(0, 3), 3)\r | |
389 | self.assertEqual(a.index(0, -3), 3)\r | |
390 | self.assertEqual(a.index(0, 3, 4), 3)\r | |
391 | self.assertEqual(a.index(0, -3, -2), 3)\r | |
392 | self.assertEqual(a.index(0, -4*sys.maxint, 4*sys.maxint), 2)\r | |
393 | self.assertRaises(ValueError, a.index, 0, 4*sys.maxint,-4*sys.maxint)\r | |
394 | self.assertRaises(ValueError, a.index, 2, 0, -10)\r | |
395 | a.remove(0)\r | |
396 | self.assertRaises(ValueError, a.index, 2, 0, 4)\r | |
397 | self.assertEqual(a, self.type2test([-2, -1, 0, 1, 2]))\r | |
398 | \r | |
399 | # Test modifying the list during index's iteration\r | |
400 | class EvilCmp:\r | |
401 | def __init__(self, victim):\r | |
402 | self.victim = victim\r | |
403 | def __eq__(self, other):\r | |
404 | del self.victim[:]\r | |
405 | return False\r | |
406 | a = self.type2test()\r | |
407 | a[:] = [EvilCmp(a) for _ in xrange(100)]\r | |
408 | # This used to seg fault before patch #1005778\r | |
409 | self.assertRaises(ValueError, a.index, None)\r | |
410 | \r | |
411 | def test_reverse(self):\r | |
412 | u = self.type2test([-2, -1, 0, 1, 2])\r | |
413 | u2 = u[:]\r | |
414 | u.reverse()\r | |
415 | self.assertEqual(u, [2, 1, 0, -1, -2])\r | |
416 | u.reverse()\r | |
417 | self.assertEqual(u, u2)\r | |
418 | \r | |
419 | self.assertRaises(TypeError, u.reverse, 42)\r | |
420 | \r | |
421 | def test_sort(self):\r | |
422 | with test_support.check_py3k_warnings(\r | |
423 | ("the cmp argument is not supported", DeprecationWarning)):\r | |
424 | self._test_sort()\r | |
425 | \r | |
426 | def _test_sort(self):\r | |
427 | u = self.type2test([1, 0])\r | |
428 | u.sort()\r | |
429 | self.assertEqual(u, [0, 1])\r | |
430 | \r | |
431 | u = self.type2test([2,1,0,-1,-2])\r | |
432 | u.sort()\r | |
433 | self.assertEqual(u, self.type2test([-2,-1,0,1,2]))\r | |
434 | \r | |
435 | self.assertRaises(TypeError, u.sort, 42, 42)\r | |
436 | \r | |
437 | def revcmp(a, b):\r | |
438 | return cmp(b, a)\r | |
439 | u.sort(revcmp)\r | |
440 | self.assertEqual(u, self.type2test([2,1,0,-1,-2]))\r | |
441 | \r | |
442 | # The following dumps core in unpatched Python 1.5:\r | |
443 | def myComparison(x,y):\r | |
444 | return cmp(x%3, y%7)\r | |
445 | z = self.type2test(range(12))\r | |
446 | z.sort(myComparison)\r | |
447 | \r | |
448 | self.assertRaises(TypeError, z.sort, 2)\r | |
449 | \r | |
450 | def selfmodifyingComparison(x,y):\r | |
451 | z.append(1)\r | |
452 | return cmp(x, y)\r | |
453 | self.assertRaises(ValueError, z.sort, selfmodifyingComparison)\r | |
454 | \r | |
455 | self.assertRaises(TypeError, z.sort, lambda x, y: 's')\r | |
456 | \r | |
457 | self.assertRaises(TypeError, z.sort, 42, 42, 42, 42)\r | |
458 | \r | |
459 | def test_slice(self):\r | |
460 | u = self.type2test("spam")\r | |
461 | u[:2] = "h"\r | |
462 | self.assertEqual(u, list("ham"))\r | |
463 | \r | |
464 | def test_iadd(self):\r | |
465 | super(CommonTest, self).test_iadd()\r | |
466 | u = self.type2test([0, 1])\r | |
467 | u2 = u\r | |
468 | u += [2, 3]\r | |
469 | self.assertIs(u, u2)\r | |
470 | \r | |
471 | u = self.type2test("spam")\r | |
472 | u += "eggs"\r | |
473 | self.assertEqual(u, self.type2test("spameggs"))\r | |
474 | \r | |
475 | self.assertRaises(TypeError, u.__iadd__, None)\r | |
476 | \r | |
477 | def test_imul(self):\r | |
478 | u = self.type2test([0, 1])\r | |
479 | u *= 3\r | |
480 | self.assertEqual(u, self.type2test([0, 1, 0, 1, 0, 1]))\r | |
481 | u *= 0\r | |
482 | self.assertEqual(u, self.type2test([]))\r | |
483 | s = self.type2test([])\r | |
484 | oldid = id(s)\r | |
485 | s *= 10\r | |
486 | self.assertEqual(id(s), oldid)\r | |
487 | \r | |
488 | def test_extendedslicing(self):\r | |
489 | # subscript\r | |
490 | a = self.type2test([0,1,2,3,4])\r | |
491 | \r | |
492 | # deletion\r | |
493 | del a[::2]\r | |
494 | self.assertEqual(a, self.type2test([1,3]))\r | |
495 | a = self.type2test(range(5))\r | |
496 | del a[1::2]\r | |
497 | self.assertEqual(a, self.type2test([0,2,4]))\r | |
498 | a = self.type2test(range(5))\r | |
499 | del a[1::-2]\r | |
500 | self.assertEqual(a, self.type2test([0,2,3,4]))\r | |
501 | a = self.type2test(range(10))\r | |
502 | del a[::1000]\r | |
503 | self.assertEqual(a, self.type2test([1, 2, 3, 4, 5, 6, 7, 8, 9]))\r | |
504 | # assignment\r | |
505 | a = self.type2test(range(10))\r | |
506 | a[::2] = [-1]*5\r | |
507 | self.assertEqual(a, self.type2test([-1, 1, -1, 3, -1, 5, -1, 7, -1, 9]))\r | |
508 | a = self.type2test(range(10))\r | |
509 | a[::-4] = [10]*3\r | |
510 | self.assertEqual(a, self.type2test([0, 10, 2, 3, 4, 10, 6, 7, 8 ,10]))\r | |
511 | a = self.type2test(range(4))\r | |
512 | a[::-1] = a\r | |
513 | self.assertEqual(a, self.type2test([3, 2, 1, 0]))\r | |
514 | a = self.type2test(range(10))\r | |
515 | b = a[:]\r | |
516 | c = a[:]\r | |
517 | a[2:3] = self.type2test(["two", "elements"])\r | |
518 | b[slice(2,3)] = self.type2test(["two", "elements"])\r | |
519 | c[2:3:] = self.type2test(["two", "elements"])\r | |
520 | self.assertEqual(a, b)\r | |
521 | self.assertEqual(a, c)\r | |
522 | a = self.type2test(range(10))\r | |
523 | a[::2] = tuple(range(5))\r | |
524 | self.assertEqual(a, self.type2test([0, 1, 1, 3, 2, 5, 3, 7, 4, 9]))\r | |
525 | # test issue7788\r | |
526 | a = self.type2test(range(10))\r | |
527 | del a[9::1<<333]\r | |
528 | \r | |
529 | def test_constructor_exception_handling(self):\r | |
530 | # Bug #1242657\r | |
531 | class F(object):\r | |
532 | def __iter__(self):\r | |
533 | raise KeyboardInterrupt\r | |
534 | self.assertRaises(KeyboardInterrupt, list, F())\r |