annotate Lib/test/test_xrange.py @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents 82ccc7e77ec5
children c217e0331d4b 6768b2350c57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32535
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
1 # Python test set -- built-in functions
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
2
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
3 import test.test_support, unittest
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
4 import sys
47535
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
5 import pickle
32535
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
6
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
7 import warnings
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
8 warnings.filterwarnings("ignore", "integer argument expected",
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
9 DeprecationWarning, "unittest")
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
10
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
11 class XrangeTest(unittest.TestCase):
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
12 def test_xrange(self):
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
13 self.assertEqual(list(xrange(3)), [0, 1, 2])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
14 self.assertEqual(list(xrange(1, 5)), [1, 2, 3, 4])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
15 self.assertEqual(list(xrange(0)), [])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
16 self.assertEqual(list(xrange(-3)), [])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
17 self.assertEqual(list(xrange(1, 10, 3)), [1, 4, 7])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
18 self.assertEqual(list(xrange(5, -5, -3)), [5, 2, -1, -4])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
19
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
20 a = 10
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
21 b = 100
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
22 c = 50
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
23
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
24 self.assertEqual(list(xrange(a, a+2)), [a, a+1])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
25 self.assertEqual(list(xrange(a+2, a, -1L)), [a+2, a+1])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
26 self.assertEqual(list(xrange(a+4, a, -2)), [a+4, a+2])
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
27
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
28 seq = list(xrange(a, b, c))
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
29 self.assert_(a in seq)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
30 self.assert_(b not in seq)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
31 self.assertEqual(len(seq), 2)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
32
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
33 seq = list(xrange(b, a, -c))
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
34 self.assert_(b in seq)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
35 self.assert_(a not in seq)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
36 self.assertEqual(len(seq), 2)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
37
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
38 seq = list(xrange(-a, -b, -c))
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
39 self.assert_(-a in seq)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
40 self.assert_(-b not in seq)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
41 self.assertEqual(len(seq), 2)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
42
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
43 self.assertRaises(TypeError, xrange)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
44 self.assertRaises(TypeError, xrange, 1, 2, 3, 4)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
45 self.assertRaises(ValueError, xrange, 1, 2, 0)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
46
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
47 self.assertRaises(OverflowError, xrange, 1e100, 1e101, 1e101)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
48
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
49 self.assertRaises(TypeError, xrange, 0, "spam")
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
50 self.assertRaises(TypeError, xrange, 0, 42, "spam")
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
51
33047
c81ed079576f Bug 1003935: xrange overflows
Tim Peters <tim.peters@gmail.com>
parents: 32535
diff changeset
52 self.assertEqual(len(xrange(0, sys.maxint, sys.maxint-1)), 2)
c81ed079576f Bug 1003935: xrange overflows
Tim Peters <tim.peters@gmail.com>
parents: 32535
diff changeset
53
32535
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
54 self.assertRaises(OverflowError, xrange, -sys.maxint, sys.maxint)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
55 self.assertRaises(OverflowError, xrange, 0, 2*sys.maxint)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
56
33755
4f8db55ce124 Get test to pass on amd64 (opteron). This is pretty hacky, but
Neal Norwitz <nnorwitz@gmail.com>
parents: 33047
diff changeset
57 r = xrange(-sys.maxint, sys.maxint, 2)
37476
e6582905eeba Make xrange more Py_ssize_t aware, by assuming a Py_ssize_t is always at
Thomas Wouters <thomas@python.org>
parents: 33755
diff changeset
58 self.assertEqual(len(r), sys.maxint)
33047
c81ed079576f Bug 1003935: xrange overflows
Tim Peters <tim.peters@gmail.com>
parents: 32535
diff changeset
59 self.assertRaises(OverflowError, xrange, -sys.maxint-1, sys.maxint, 2)
c81ed079576f Bug 1003935: xrange overflows
Tim Peters <tim.peters@gmail.com>
parents: 32535
diff changeset
60
47535
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
61 def test_pickling(self):
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
62 testcases = [(13,), (0, 11), (-22, 10), (20, 3, -1),
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
63 (13, 21, 3), (-2, 2, 2)]
49677
82ccc7e77ec5 Merged revisions 66801,66803-66804,66813,66854-66856,66866,66870-66872,66874,66887,66903,66905,66911,66913,66927,66932,66938,66942,66962,66964,66973-66974,66977,66992,66998-66999,67002,67005,67007,67028,67040-67041,67044,67070,67089,67091,67101,67117-67119,67123-67124 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47535
diff changeset
64 for proto in range(pickle.HIGHEST_PROTOCOL + 1):
47535
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
65 for t in testcases:
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
66 r = xrange(*t)
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
67 self.assertEquals(list(pickle.loads(pickle.dumps(r, proto))),
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
68 list(r))
3939ff89834c Added better pickling support to xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 47534
diff changeset
69
47534
df9b337ba311 Issue 2582: Fix pickling of xrange objects.
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 37476
diff changeset
70
32535
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
71 def test_main():
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
72 test.test_support.run_unittest(XrangeTest)
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
73
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
74 if __name__ == "__main__":
32455db97135 Exercise xrange a bit
Neal Norwitz <nnorwitz@gmail.com>
parents:
diff changeset
75 test_main()