Changeset 391 for python/trunk/Lib/test/test_index.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_index.py
r2 r391 50 50 self.assertEqual(self.o.__index__(), 4) 51 51 self.assertEqual(self.n.__index__(), 5) 52 self.assertEqual(True.__index__(), 1) 53 self.assertEqual(False.__index__(), 0) 52 54 53 55 def test_subclasses(self): … … 61 63 self.o.ind = 'dumb' 62 64 self.n.ind = 'bad' 63 self. failUnlessRaises(TypeError, operator.index, self.o)64 self. failUnlessRaises(TypeError, operator.index, self.n)65 self. failUnlessRaises(TypeError, slice(self.o).indices, 0)66 self. failUnlessRaises(TypeError, slice(self.n).indices, 0)65 self.assertRaises(TypeError, operator.index, self.o) 66 self.assertRaises(TypeError, operator.index, self.n) 67 self.assertRaises(TypeError, slice(self.o).indices, 0) 68 self.assertRaises(TypeError, slice(self.n).indices, 0) 67 69 68 70 … … 89 91 self.assertEqual(self.seq[self.o:self.o2], self.seq[1:3]) 90 92 self.assertEqual(self.seq[self.n:self.n2], self.seq[2:4]) 93 94 def test_slice_bug7532(self): 95 seqlen = len(self.seq) 96 self.o.ind = int(seqlen * 1.5) 97 self.n.ind = seqlen + 2 98 self.assertEqual(self.seq[self.o:], self.seq[0:0]) 99 self.assertEqual(self.seq[:self.o], self.seq) 100 self.assertEqual(self.seq[self.n:], self.seq[0:0]) 101 self.assertEqual(self.seq[:self.n], self.seq) 102 if isinstance(self.seq, ClassicSeq): 103 return 104 # These tests fail for ClassicSeq (see bug #7532) 105 self.o2.ind = -seqlen - 2 106 self.n2.ind = -int(seqlen * 1.5) 107 self.assertEqual(self.seq[self.o2:], self.seq) 108 self.assertEqual(self.seq[:self.o2], self.seq[0:0]) 109 self.assertEqual(self.seq[self.n2:], self.seq) 110 self.assertEqual(self.seq[:self.n2], self.seq[0:0]) 91 111 92 112 def test_repeat(self): … … 116 136 self.n.ind = 'bad' 117 137 indexobj = lambda x, obj: obj.seq[x] 118 self. failUnlessRaises(TypeError, indexobj, self.o, self)119 self. failUnlessRaises(TypeError, indexobj, self.n, self)138 self.assertRaises(TypeError, indexobj, self.o, self) 139 self.assertRaises(TypeError, indexobj, self.n, self) 120 140 sliceobj = lambda x, obj: obj.seq[x:] 121 self. failUnlessRaises(TypeError, sliceobj, self.o, self)122 self. failUnlessRaises(TypeError, sliceobj, self.n, self)141 self.assertRaises(TypeError, sliceobj, self.o, self) 142 self.assertRaises(TypeError, sliceobj, self.n, self) 123 143 124 144 … … 153 173 lst = [5, 6, 7, 8, 9, 11] 154 174 l2 = lst.__imul__(self.n) 155 self.assert _(l2 islst)175 self.assertIs(l2, lst) 156 176 self.assertEqual(lst, [5, 6, 7, 8, 9, 11] * 3) 177 178 179 class _BaseSeq: 180 181 def __init__(self, iterable): 182 self._list = list(iterable) 183 184 def __repr__(self): 185 return repr(self._list) 186 187 def __eq__(self, other): 188 return self._list == other 189 190 def __len__(self): 191 return len(self._list) 192 193 def __mul__(self, n): 194 return self.__class__(self._list*n) 195 __rmul__ = __mul__ 196 197 def __getitem__(self, index): 198 return self._list[index] 199 200 201 class _GetSliceMixin: 202 203 def __getslice__(self, i, j): 204 return self._list.__getslice__(i, j) 205 206 207 class ClassicSeq(_BaseSeq): pass 208 class NewSeq(_BaseSeq, object): pass 209 class ClassicSeqDeprecated(_GetSliceMixin, ClassicSeq): pass 210 class NewSeqDeprecated(_GetSliceMixin, NewSeq): pass 157 211 158 212 … … 163 217 seq = "this is a test" 164 218 219 class ByteArrayTestCase(SeqTestCase): 220 seq = bytearray("this is a test") 221 165 222 class UnicodeTestCase(SeqTestCase): 166 223 seq = u"this is a test" 224 225 class ClassicSeqTestCase(SeqTestCase): 226 seq = ClassicSeq((0,10,20,30,40,50)) 227 228 class NewSeqTestCase(SeqTestCase): 229 seq = NewSeq((0,10,20,30,40,50)) 230 231 class ClassicSeqDeprecatedTestCase(SeqTestCase): 232 seq = ClassicSeqDeprecated((0,10,20,30,40,50)) 233 234 class NewSeqDeprecatedTestCase(SeqTestCase): 235 seq = NewSeqDeprecated((0,10,20,30,40,50)) 167 236 168 237 … … 188 257 class GetItem(base): 189 258 def __len__(self): 190 return maxint #cannot return long here 259 return maxint # cannot return long here 260 def __getitem__(self, key): 261 return key 262 x = GetItem() 263 self.assertEqual(x[self.pos], self.pos) 264 self.assertEqual(x[self.neg], self.neg) 265 self.assertEqual(x[self.neg:self.pos].indices(maxsize), 266 (0, maxsize, 1)) 267 self.assertEqual(x[self.neg:self.pos:1].indices(maxsize), 268 (0, maxsize, 1)) 269 270 def _getslice_helper_deprecated(self, base): 271 class GetItem(base): 272 def __len__(self): 273 return maxint # cannot return long here 191 274 def __getitem__(self, key): 192 275 return key … … 197 280 self.assertEqual(x[self.neg], self.neg) 198 281 self.assertEqual(x[self.neg:self.pos], (maxint+minsize, maxsize)) 199 self.assertEqual(x[self.neg:self.pos:1].indices(maxsize), (0, maxsize, 1)) 282 self.assertEqual(x[self.neg:self.pos:1].indices(maxsize), 283 (0, maxsize, 1)) 200 284 201 285 def test_getitem(self): 202 286 self._getitem_helper(object) 287 with test_support.check_py3k_warnings(): 288 self._getslice_helper_deprecated(object) 203 289 204 290 def test_getitem_classic(self): 205 291 class Empty: pass 206 self._getitem_helper(Empty) 292 # XXX This test fails (see bug #7532) 293 #self._getitem_helper(Empty) 294 with test_support.check_py3k_warnings(): 295 self._getslice_helper_deprecated(Empty) 207 296 208 297 def test_sequence_repeat(self): 209 self. failUnlessRaises(OverflowError, lambda: "a" * self.pos)210 self. failUnlessRaises(OverflowError, lambda: "a" * self.neg)298 self.assertRaises(OverflowError, lambda: "a" * self.pos) 299 self.assertRaises(OverflowError, lambda: "a" * self.neg) 211 300 212 301 … … 216 305 ListTestCase, 217 306 TupleTestCase, 307 ByteArrayTestCase, 218 308 StringTestCase, 219 309 UnicodeTestCase, 310 ClassicSeqTestCase, 311 NewSeqTestCase, 220 312 XRangeTestCase, 221 313 OverflowTestCase, 222 314 ) 315 with test_support.check_py3k_warnings(): 316 test_support.run_unittest( 317 ClassicSeqDeprecatedTestCase, 318 NewSeqDeprecatedTestCase, 319 ) 320 223 321 224 322 if __name__ == "__main__":
Note:
See TracChangeset
for help on using the changeset viewer.