Issue #7051: Clarify behaviour of 'g' and 'G'-style formatting.
[python.git] / Lib / test / test_xrange.py
bloba0b94fae7dcf72ad20ba787a5f4cd26edbb05cc5
1 # Python test set -- built-in functions
3 import test.test_support, unittest
4 import sys
5 import pickle
7 import warnings
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])
20 a = 10
21 b = 100
22 c = 50
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):
65 for t in testcases:
66 r = xrange(*t)
67 self.assertEquals(list(pickle.loads(pickle.dumps(r, proto))),
68 list(r))
71 def test_main():
72 test.test_support.run_unittest(XrangeTest)
74 if __name__ == "__main__":
75 test_main()