Index: Lib/test/test_range.py =================================================================== --- Lib/test/test_range.py (revision 67538) +++ Lib/test/test_range.py (working copy) @@ -45,6 +45,7 @@ self.assertRaises(ValueError, range, 1, 2, 0) self.assertRaises(TypeError, range, 0.0, 2, 1) + 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) @@ -57,6 +58,14 @@ r = range(-sys.maxsize, sys.maxsize, 2) self.assertEqual(len(r), sys.maxsize) + class Index: + def __init__(self, x): + self.x = x + def __index__(self): + return self.x + self.assertEqual(list(range(Index(0), Index(100), Index(42))), + [0, 42, 84]) + def test_repr(self): self.assertEqual(repr(range(1)), 'range(0, 1)') self.assertEqual(repr(range(1, 2)), 'range(1, 2)')