1 # Python test set -- built-in functions
3 import test
.test_support
, unittest
8 warnings
.filterwarnings("ignore", "integer argument expected",
9 DeprecationWarning, "unittest")
11 class XrangeTest(unittest
.TestCase
):
12 def test_xrange(self
):
13 self
.assertEqual(list(xrange(3)), [0, 1, 2])
14 self
.assertEqual(list(xrange(1, 5)), [1, 2, 3, 4])
15 self
.assertEqual(list(xrange(0)), [])
16 self
.assertEqual(list(xrange(-3)), [])
17 self
.assertEqual(list(xrange(1, 10, 3)), [1, 4, 7])
18 self
.assertEqual(list(xrange(5, -5, -3)), [5, 2, -1, -4])
24 self
.assertEqual(list(xrange(a
, a
+2)), [a
, a
+1])
25 self
.assertEqual(list(xrange(a
+2, a
, -1L)), [a
+2, a
+1])
26 self
.assertEqual(list(xrange(a
+4, a
, -2)), [a
+4, a
+2])
28 seq
= list(xrange(a
, b
, c
))
29 self
.assertTrue(a
in seq
)
30 self
.assertTrue(b
not in seq
)
31 self
.assertEqual(len(seq
), 2)
33 seq
= list(xrange(b
, a
, -c
))
34 self
.assertTrue(b
in seq
)
35 self
.assertTrue(a
not in seq
)
36 self
.assertEqual(len(seq
), 2)
38 seq
= list(xrange(-a
, -b
, -c
))
39 self
.assertTrue(-a
in seq
)
40 self
.assertTrue(-b
not in seq
)
41 self
.assertEqual(len(seq
), 2)
43 self
.assertRaises(TypeError, xrange)
44 self
.assertRaises(TypeError, xrange, 1, 2, 3, 4)
45 self
.assertRaises(ValueError, xrange, 1, 2, 0)
47 self
.assertRaises(OverflowError, xrange, 1e100
, 1e101
, 1e101
)
49 self
.assertRaises(TypeError, xrange, 0, "spam")
50 self
.assertRaises(TypeError, xrange, 0, 42, "spam")
52 self
.assertEqual(len(xrange(0, sys
.maxint
, sys
.maxint
-1)), 2)
54 self
.assertRaises(OverflowError, xrange, -sys
.maxint
, sys
.maxint
)
55 self
.assertRaises(OverflowError, xrange, 0, 2*sys
.maxint
)
57 r
= xrange(-sys
.maxint
, sys
.maxint
, 2)
58 self
.assertEqual(len(r
), sys
.maxint
)
59 self
.assertRaises(OverflowError, xrange, -sys
.maxint
-1, sys
.maxint
, 2)
61 def test_pickling(self
):
62 testcases
= [(13,), (0, 11), (-22, 10), (20, 3, -1),
63 (13, 21, 3), (-2, 2, 2)]
64 for proto
in range(pickle
.HIGHEST_PROTOCOL
+ 1):
67 self
.assertEquals(list(pickle
.loads(pickle
.dumps(r
, proto
))),
72 test
.test_support
.run_unittest(XrangeTest
)
74 if __name__
== "__main__":