test_xrange.py 2.19 KB
Newer Older
Neal Norwitz's avatar
Neal Norwitz committed
1 2 3 4 5 6 7 8 9 10 11
# Python test set -- built-in functions

import test.test_support, unittest
import sys

import warnings
warnings.filterwarnings("ignore", "integer argument expected",
                        DeprecationWarning, "unittest")

class XrangeTest(unittest.TestCase):
    def test_xrange(self):
12 13 14 15 16 17
        self.assertEqual(list(range(3)), [0, 1, 2])
        self.assertEqual(list(range(1, 5)), [1, 2, 3, 4])
        self.assertEqual(list(range(0)), [])
        self.assertEqual(list(range(-3)), [])
        self.assertEqual(list(range(1, 10, 3)), [1, 4, 7])
        self.assertEqual(list(range(5, -5, -3)), [5, 2, -1, -4])
Neal Norwitz's avatar
Neal Norwitz committed
18 19 20 21 22

        a = 10
        b = 100
        c = 50

23 24 25
        self.assertEqual(list(range(a, a+2)), [a, a+1])
        self.assertEqual(list(range(a+2, a, -1)), [a+2, a+1])
        self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2])
Neal Norwitz's avatar
Neal Norwitz committed
26

27
        seq = list(range(a, b, c))
Neal Norwitz's avatar
Neal Norwitz committed
28 29 30 31
        self.assert_(a in seq)
        self.assert_(b not in seq)
        self.assertEqual(len(seq), 2)

32
        seq = list(range(b, a, -c))
Neal Norwitz's avatar
Neal Norwitz committed
33 34 35 36
        self.assert_(b in seq)
        self.assert_(a not in seq)
        self.assertEqual(len(seq), 2)

37
        seq = list(range(-a, -b, -c))
Neal Norwitz's avatar
Neal Norwitz committed
38 39 40 41
        self.assert_(-a in seq)
        self.assert_(-b not in seq)
        self.assertEqual(len(seq), 2)

42 43 44
        self.assertRaises(TypeError, range)
        self.assertRaises(TypeError, range, 1, 2, 3, 4)
        self.assertRaises(ValueError, range, 1, 2, 0)
Neal Norwitz's avatar
Neal Norwitz committed
45

46 47 48 49
        self.assertRaises(TypeError, range, 0.0, 2, 1)
        self.assertRaises(TypeError, range, 1, 2.0, 1)
        self.assertRaises(TypeError, range, 1, 2, 1.0)
        self.assertRaises(TypeError, range, 1e100, 1e101, 1e101)
Neal Norwitz's avatar
Neal Norwitz committed
50

51 52
        self.assertRaises(TypeError, range, 0, "spam")
        self.assertRaises(TypeError, range, 0, 42, "spam")
Neal Norwitz's avatar
Neal Norwitz committed
53

54
        self.assertEqual(len(range(0, sys.maxint, sys.maxint-1)), 2)
Tim Peters's avatar
Tim Peters committed
55

56
        r = range(-sys.maxint, sys.maxint, 2)
57
        self.assertEqual(len(r), sys.maxint)
Tim Peters's avatar
Tim Peters committed
58

59
    def test_repr(self):
60
        self.assertEqual(repr(range(1)), 'range(0, 1)')
61 62 63
        self.assertEqual(repr(range(1, 2)), 'range(1, 2)')
        self.assertEqual(repr(range(1, 2, 3)), 'range(1, 2, 3)')

Neal Norwitz's avatar
Neal Norwitz committed
64 65 66 67 68
def test_main():
    test.test_support.run_unittest(XrangeTest)

if __name__ == "__main__":
    test_main()