Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(49)

Side by Side Diff: Lib/ctypes/test/test_slicing.py

Issue 602: range: lean and mean (Closed) SVN Base: http://svn.python.org/view/*checkout*/python/branches/py3k/
Patch Set: address more concerns Created 5 months, 1 week ago , Downloaded from: http://bugs.python.org/file10183/range_lean_and_mean5.patch
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 import unittest 1 import unittest
2 from ctypes import * 2 from ctypes import *
3 3
4 import _ctypes_test 4 import _ctypes_test
5 5
6 class SlicesTestCase(unittest.TestCase): 6 class SlicesTestCase(unittest.TestCase):
7 def test_getslice_cint(self): 7 def test_getslice_cint(self):
8 a = (c_int * 100)(*range(1100, 1200)) 8 a = (c_int * 100)(*range(1100, 1200))
9 b = list(range(1100, 1200)) 9 b = list(range(1100, 1200))
10 self.failUnlessEqual(a[0:2], b[0:2]) 10 self.failUnlessEqual(a[0:2], b[0:2])
11 self.failUnlessEqual(a[0:2:], b[0:2:]) 11 self.failUnlessEqual(a[0:2:], b[0:2:])
12 self.failUnlessEqual(len(a), len(b)) 12 self.failUnlessEqual(len(a), len(b))
13 self.failUnlessEqual(a[5:7], b[5:7]) 13 self.failUnlessEqual(a[5:7], b[5:7])
14 self.failUnlessEqual(a[5:7:], b[5:7:]) 14 self.failUnlessEqual(a[5:7:], b[5:7:])
15 self.failUnlessEqual(a[-1], b[-1]) 15 self.failUnlessEqual(a[-1], b[-1])
16 self.failUnlessEqual(a[:], b[:]) 16 self.failUnlessEqual(a[:], b[:])
17 self.failUnlessEqual(a[::], b[::]) 17 self.failUnlessEqual(a[::], b[::])
18 self.failUnlessEqual(a[10::-1], b[10::-1]) 18 self.failUnlessEqual(a[10::-1], b[10::-1])
19 self.failUnlessEqual(a[30:20:-1], b[30:20:-1]) 19 self.failUnlessEqual(a[30:20:-1], b[30:20:-1])
20 self.failUnlessEqual(a[:12:6], b[:12:6]) 20 self.failUnlessEqual(a[:12:6], b[:12:6])
21 self.failUnlessEqual(a[2:6:4], b[2:6:4]) 21 self.failUnlessEqual(a[2:6:4], b[2:6:4])
22 22
23 a[0:5] = range(5, 10) 23 a[0:5] = list(range(5, 10))
24 self.failUnlessEqual(a[0:5], list(range(5, 10))) 24 self.failUnlessEqual(a[0:5], list(range(5, 10)))
25 self.failUnlessEqual(a[0:5:], list(range(5, 10))) 25 self.failUnlessEqual(a[0:5:], list(range(5, 10)))
26 self.failUnlessEqual(a[4::-1], list(range(9, 4, -1))) 26 self.failUnlessEqual(a[4::-1], list(range(9, 4, -1)))
27 27
28 def test_setslice_cint(self): 28 def test_setslice_cint(self):
29 a = (c_int * 100)(*range(1100, 1200)) 29 a = (c_int * 100)(*range(1100, 1200))
30 b = list(range(1100, 1200)) 30 b = list(range(1100, 1200))
31 31
32 a[32:47] = list(range(32, 47)) 32 a[32:47] = list(range(32, 47))
33 self.failUnlessEqual(a[32:47], list(range(32, 47))) 33 self.failUnlessEqual(a[32:47], list(range(32, 47)))
34 a[32:47] = range(132, 147) 34 a[32:47] = list(range(132, 147))
35 self.failUnlessEqual(a[32:47:], list(range(132, 147))) 35 self.failUnlessEqual(a[32:47:], list(range(132, 147)))
36 a[46:31:-1] = range(232, 247) 36 a[46:31:-1] = list(range(232, 247))
37 self.failUnlessEqual(a[32:47:1], list(range(246, 231, -1))) 37 self.failUnlessEqual(a[32:47:1], list(range(246, 231, -1)))
38 38
39 a[32:47] = range(1132, 1147) 39 a[32:47] = list(range(1132, 1147))
40 self.failUnlessEqual(a[:], b) 40 self.failUnlessEqual(a[:], b)
41 a[32:47:7] = range(3) 41 a[32:47:7] = list(range(3))
42 b[32:47:7] = range(3) 42 b[32:47:7] = list(range(3))
43 self.failUnlessEqual(a[:], b) 43 self.failUnlessEqual(a[:], b)
44 a[33::-3] = range(12) 44 a[33::-3] = list(range(12))
45 b[33::-3] = range(12) 45 b[33::-3] = list(range(12))
46 self.failUnlessEqual(a[:], b) 46 self.failUnlessEqual(a[:], b)
47 47
48 from operator import setitem 48 from operator import setitem
49 49
50 # TypeError: int expected instead of str instance 50 # TypeError: int expected instead of str instance
51 self.assertRaises(TypeError, setitem, a, slice(0, 5), "abcde") 51 self.assertRaises(TypeError, setitem, a, slice(0, 5), "abcde")
52 # TypeError: int expected instead of str instance 52 # TypeError: int expected instead of str instance
53 self.assertRaises(TypeError, setitem, a, slice(0, 5), 53 self.assertRaises(TypeError, setitem, a, slice(0, 5),
54 ["a", "b", "c", "d", "e"]) 54 ["a", "b", "c", "d", "e"])
55 # TypeError: int expected instead of float instance 55 # TypeError: int expected instead of float instance
(...skipping 105 matching lines...) Show 10 above Show 10 below
161 self.failUnlessEqual(res[:len(s)-1], tmpl) 161 self.failUnlessEqual(res[:len(s)-1], tmpl)
162 self.failUnlessEqual(res[:len(s)-1:], tmpl) 162 self.failUnlessEqual(res[:len(s)-1:], tmpl)
163 self.failUnlessEqual(res[len(s)-2:-1:-1], tmpl[::-1]) 163 self.failUnlessEqual(res[len(s)-2:-1:-1], tmpl[::-1])
164 self.failUnlessEqual(res[len(s)-2:5:-7], tmpl[:5:-7]) 164 self.failUnlessEqual(res[len(s)-2:5:-7], tmpl[:5:-7])
165 dll.my_free(res) 165 dll.my_free(res)
166 166
167 ################################################################ 167 ################################################################
168 168
169 if __name__ == "__main__": 169 if __name__ == "__main__":
170 unittest.main() 170 unittest.main()
OLDNEW

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld r338