Changeset 391 for python/trunk/Lib/test/test_xrange.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_xrange.py
r2 r391 38 38 continue 39 39 elif x == sentinel: 40 self.fail('{ 0}: iterator ended unexpectedly '41 'at position { 1}; expected {2}'.format(test_id, i, y))40 self.fail('{}: iterator ended unexpectedly ' 41 'at position {}; expected {}'.format(test_id, i, y)) 42 42 elif y == sentinel: 43 self.fail('{ 0}: unexpected excess element {1} at '44 'position { 2}'.format(test_id, x, i))43 self.fail('{}: unexpected excess element {} at ' 44 'position {}'.format(test_id, x, i)) 45 45 else: 46 self.fail('{0}: wrong element at position {1};' 47 'expected {2}, got {3}'.format(test_id, i, y, x)) 46 self.fail('{}: wrong element at position {};' 47 'expected {}, got {}'.format(test_id, i, y, x)) 48 49 def assert_xranges_equivalent(self, x, y): 50 # Check that two xrange objects are equivalent, in the sense of the 51 # associated sequences being the same. We want to use this for large 52 # xrange objects, so instead of converting to lists and comparing 53 # directly we do a number of indirect checks. 54 if len(x) != len(y): 55 self.fail('{} and {} have different ' 56 'lengths: {} and {} '.format(x, y, len(x), len(y))) 57 if len(x) >= 1: 58 if x[0] != y[0]: 59 self.fail('{} and {} have different initial ' 60 'elements: {} and {} '.format(x, y, x[0], y[0])) 61 if x[-1] != y[-1]: 62 self.fail('{} and {} have different final ' 63 'elements: {} and {} '.format(x, y, x[-1], y[-1])) 64 if len(x) >= 2: 65 x_step = x[1] - x[0] 66 y_step = y[1] - y[0] 67 if x_step != y_step: 68 self.fail('{} and {} have different step: ' 69 '{} and {} '.format(x, y, x_step, y_step)) 48 70 49 71 def test_xrange(self): … … 64 86 65 87 seq = list(xrange(a, b, c)) 66 self.assert _(a inseq)67 self.assert _(b not inseq)88 self.assertIn(a, seq) 89 self.assertNotIn(b, seq) 68 90 self.assertEqual(len(seq), 2) 69 91 70 92 seq = list(xrange(b, a, -c)) 71 self.assert _(b inseq)72 self.assert _(a not inseq)93 self.assertIn(b, seq) 94 self.assertNotIn(a, seq) 73 95 self.assertEqual(len(seq), 2) 74 96 75 97 seq = list(xrange(-a, -b, -c)) 76 self.assert _(-a inseq)77 self.assert _(-b not inseq)98 self.assertIn(-a, seq) 99 self.assertNotIn(-b, seq) 78 100 self.assertEqual(len(seq), 2) 79 101 … … 82 104 self.assertRaises(ValueError, xrange, 1, 2, 0) 83 105 84 self.assertRaises(OverflowError, xrange, 1 e100, 1e101, 1e101)106 self.assertRaises(OverflowError, xrange, 10**100, 10**101, 10**101) 85 107 86 108 self.assertRaises(TypeError, xrange, 0, "spam") … … 102 124 for t in testcases: 103 125 r = xrange(*t) 104 self.assertEquals(list(pickle.loads(pickle.dumps(r, proto))), 105 list(r)) 126 self.assertEqual(list(pickle.loads(pickle.dumps(r, proto))), 127 list(r)) 128 129 M = min(sys.maxint, sys.maxsize) 130 large_testcases = testcases + [ 131 (0, M, 1), 132 (M, 0, -1), 133 (0, M, M - 1), 134 (M // 2, M, 1), 135 (0, -M, -1), 136 (0, -M, 1 - M), 137 (-M, M, 2), 138 (-M, M, 1024), 139 (-M, M, 10585), 140 (M, -M, -2), 141 (M, -M, -1024), 142 (M, -M, -10585), 143 ] 144 for proto in range(pickle.HIGHEST_PROTOCOL + 1): 145 for t in large_testcases: 146 r = xrange(*t) 147 r_out = pickle.loads(pickle.dumps(r, proto)) 148 self.assert_xranges_equivalent(r_out, r) 149 150 def test_repr(self): 151 # Check that repr of an xrange is a valid representation 152 # of that xrange. 153 154 # Valid xranges have at most min(sys.maxint, sys.maxsize) elements. 155 M = min(sys.maxint, sys.maxsize) 156 157 testcases = [ 158 (13,), 159 (0, 11), 160 (-22, 10), 161 (20, 3, -1), 162 (13, 21, 3), 163 (-2, 2, 2), 164 (0, M, 1), 165 (M, 0, -1), 166 (0, M, M - 1), 167 (M // 2, M, 1), 168 (0, -M, -1), 169 (0, -M, 1 - M), 170 (-M, M, 2), 171 (-M, M, 1024), 172 (-M, M, 10585), 173 (M, -M, -2), 174 (M, -M, -1024), 175 (M, -M, -10585), 176 ] 177 for t in testcases: 178 r = xrange(*t) 179 r_out = eval(repr(r)) 180 self.assert_xranges_equivalent(r, r_out) 106 181 107 182 def test_range_iterators(self): … … 123 198 else: 124 199 iter2 = pyrange(start, end, step) 125 test_id = "xrange({ 0}, {1}, {2})".format(start, end, step)200 test_id = "xrange({}, {}, {})".format(start, end, step) 126 201 # check first 100 entries 127 202 self.assert_iterators_equal(iter1, iter2, test_id, limit=100) … … 133 208 else: 134 209 iter2 = pyrange_reversed(start, end, step) 135 test_id = "reversed(xrange({0}, {1}, {2}))".format( 136 start, end, step) 210 test_id = "reversed(xrange({}, {}, {}))".format(start, end, step) 137 211 self.assert_iterators_equal(iter1, iter2, test_id, limit=100) 138 212
Note:
See TracChangeset
for help on using the changeset viewer.