blob: 7a2eea552d6559930d71d3ad218a96ff2b5ed496 [file] [log] [blame]
Neal Norwitz1c0423a2004-07-08 01:59:55 +00001# Python test set -- built-in functions
2
3import test.test_support, unittest
4import sys
Alexandre Vassalotti602d8db2008-06-10 04:01:23 +00005import pickle
Neal Norwitz1c0423a2004-07-08 01:59:55 +00006
7import warnings
8warnings.filterwarnings("ignore", "integer argument expected",
9 DeprecationWarning, "unittest")
10
11class 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])
19
20 a = 10
21 b = 100
22 c = 50
23
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])
27
28 seq = list(xrange(a, b, c))
29 self.assert_(a in seq)
30 self.assert_(b not in seq)
31 self.assertEqual(len(seq), 2)
32
33 seq = list(xrange(b, a, -c))
34 self.assert_(b in seq)
35 self.assert_(a not in seq)
36 self.assertEqual(len(seq), 2)
37
38 seq = list(xrange(-a, -b, -c))
39 self.assert_(-a in seq)
40 self.assert_(-b not in seq)
41 self.assertEqual(len(seq), 2)
42
43 self.assertRaises(TypeError, xrange)
44 self.assertRaises(TypeError, xrange, 1, 2, 3, 4)
45 self.assertRaises(ValueError, xrange, 1, 2, 0)
46
47 self.assertRaises(OverflowError, xrange, 1e100, 1e101, 1e101)
48
49 self.assertRaises(TypeError, xrange, 0, "spam")
50 self.assertRaises(TypeError, xrange, 0, 42, "spam")
51
Tim Petersfeec4532004-08-08 07:17:39 +000052 self.assertEqual(len(xrange(0, sys.maxint, sys.maxint-1)), 2)
53
Neal Norwitz1c0423a2004-07-08 01:59:55 +000054 self.assertRaises(OverflowError, xrange, -sys.maxint, sys.maxint)
55 self.assertRaises(OverflowError, xrange, 0, 2*sys.maxint)
56
Neal Norwitz64fa74d2004-10-14 03:46:18 +000057 r = xrange(-sys.maxint, sys.maxint, 2)
Thomas Woutersf4d8f392006-04-04 17:28:12 +000058 self.assertEqual(len(r), sys.maxint)
Tim Petersfeec4532004-08-08 07:17:39 +000059 self.assertRaises(OverflowError, xrange, -sys.maxint-1, sys.maxint, 2)
60
Alexandre Vassalotti602d8db2008-06-10 04:01:23 +000061 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):
65 for t in testcases:
66 r = xrange(*t)
67 self.assertEquals(list(pickle.loads(pickle.dumps(r, proto))),
68 list(r))
69
Alexandre Vassalotti1f2f61a2008-06-10 03:34:53 +000070
Neal Norwitz1c0423a2004-07-08 01:59:55 +000071def test_main():
72 test.test_support.run_unittest(XrangeTest)
73
74if __name__ == "__main__":
75 test_main()