diff options
author | Michael W. Hudson <mwh@python.net> | 2002-06-19 15:44:15 (GMT) |
---|---|---|
committer | Michael W. Hudson <mwh@python.net> | 2002-06-19 15:44:15 (GMT) |
commit | 9c14badc5fed3c28504470ba4bd64bf7acad599f (patch) | |
tree | 2a474dbc252c8f5aa1f70d032feaeedc49d04231 /Lib | |
parent | fe0ca4a0f50ca90359d3c619fad98bbe018ca7d2 (diff) | |
download | cpython-9c14badc5fed3c28504470ba4bd64bf7acad599f.zip cpython-9c14badc5fed3c28504470ba4bd64bf7acad599f.tar.gz cpython-9c14badc5fed3c28504470ba4bd64bf7acad599f.tar.bz2 |
Fix the bug described in
http://mail.python.org/pipermail/python-dev/2002-June/025461.html
with test cases.
Also includes extended slice support for arrays, which I thought I'd
already checked in but obviously not.
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/test/test_array.py | 43 | ||||
-rw-r--r-- | Lib/test/test_types.py | 8 |
2 files changed, 50 insertions, 1 deletions
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index 681a4d0..9a29887 100755 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -3,7 +3,8 @@ Roger E. Masse """ import array -from test_support import verbose, TESTFN, unlink, TestFailed, have_unicode +from test_support import verbose, TESTFN, unlink, TestFailed,\ + have_unicode, vereq def main(): testtype('c', 'c') @@ -312,6 +313,46 @@ def testtype(type, example): a.reverse() if a != array.array(type, [4, 3, 1]): raise TestFailed, "array(%s) reverse-test" % `type` + # extended slicing + # subscription + a = array.array(type, [0,1,2,3,4]) + vereq(a[::], a) + vereq(a[::2], array.array(type, [0,2,4])) + vereq(a[1::2], array.array(type, [1,3])) + vereq(a[::-1], array.array(type, [4,3,2,1,0])) + vereq(a[::-2], array.array(type, [4,2,0])) + vereq(a[3::-2], array.array(type, [3,1])) + vereq(a[-100:100:], a) + vereq(a[100:-100:-1], a[::-1]) + vereq(a[-100L:100L:2L], array.array(type, [0,2,4])) + vereq(a[1000:2000:2], array.array(type, [])) + vereq(a[-1000:-2000:-2], array.array(type, [])) + # deletion + del a[::2] + vereq(a, array.array(type, [1,3])) + a = array.array(type, range(5)) + del a[1::2] + vereq(a, array.array(type, [0,2,4])) + a = array.array(type, range(5)) + del a[1::-2] + vereq(a, array.array(type, [0,2,3,4])) + # assignment + a = array.array(type, range(10)) + a[::2] = array.array(type, [-1]*5) + vereq(a, array.array(type, [-1, 1, -1, 3, -1, 5, -1, 7, -1, 9])) + a = array.array(type, range(10)) + a[::-4] = array.array(type, [10]*3) + vereq(a, array.array(type, [0, 10, 2, 3, 4, 10, 6, 7, 8 ,10])) + a = array.array(type, range(4)) + a[::-1] = a + vereq(a, array.array(type, [3, 2, 1, 0])) + a = array.array(type, range(10)) + b = a[:] + c = a[:] + ins = array.array(type, range(2)) + a[2:3] = ins + b[slice(2,3)] = ins + c[2:3:] = ins # test that overflow exceptions are raised as expected for assignment # to array of specific integral types diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index 7f3b923..494a13a 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -410,6 +410,14 @@ vereq(a, [0, 10, 2, 3, 4, 10, 6, 7, 8 ,10]) a = range(4) a[::-1] = a vereq(a, [3, 2, 1, 0]) +a = range(10) +b = a[:] +c = a[:] +a[2:3] = ["two", "elements"] +b[slice(2,3)] = ["two", "elements"] +c[2:3:] = ["two", "elements"] +vereq(a, b) +vereq(a, c) print '6.6 Mappings == Dictionaries' d = {} |