~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Lib/test/test_xrange.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Python test set -- built-in functions
 
2
 
 
3
import test.test_support, unittest
 
4
import sys
 
5
import pickle
 
6
 
 
7
import warnings
 
8
warnings.filterwarnings("ignore", "integer argument expected",
 
9
                        DeprecationWarning, "unittest")
 
10
 
 
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])
 
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
 
 
52
        self.assertEqual(len(xrange(0, sys.maxint, sys.maxint-1)), 2)
 
53
 
 
54
        self.assertRaises(OverflowError, xrange, -sys.maxint, sys.maxint)
 
55
        self.assertRaises(OverflowError, xrange, 0, 2*sys.maxint)
 
56
 
 
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)
 
60
 
 
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))
 
69
 
 
70
 
 
71
def test_main():
 
72
    test.test_support.run_unittest(XrangeTest)
 
73
 
 
74
if __name__ == "__main__":
 
75
    test_main()