Skip to content

Commit e84bab2

Browse files
author
Brad Walker
committed
newrange: fixed slices on empty ranges
1 parent d0e7e43 commit e84bab2

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

src/future/types/newrange.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ def __getitem_slice(self, slce):
132132
of the sequence represented by this range.
133133
"""
134134
start, stop, step = slce.indices(self._len)
135-
return newrange(self[start], stop + self._start, step * self._step)
135+
return newrange(self._start + self._step*start,
136+
self._start + stop,
137+
self._step * step)
136138

137139
def __iter__(self):
138140
"""Return an iterator which enumerates the elements of the

tests/test_future/test_range.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,15 @@ def test_bool_range(self):
1919
self.assertFalse(range(1, 1))
2020
self.assertFalse(range(5, 2))
2121

22-
def test_equality(self):
22+
def test_equality_range(self):
2323
self.assertEqual(range(7), range(7))
2424
self.assertEqual(range(0), range(1, 1))
2525
self.assertEqual(range(0, 10, 3), range(0, 11, 3))
2626

27+
def test_slice_empty_range(self):
28+
self.assertEqual(range(0)[:], range(0))
29+
self.assertEqual(range(0)[::-1], range(-1, -1, -1))
30+
2731
def test_slice_range(self):
2832
r = range(8)
2933
self.assertEqual(r[:], range(8))

0 commit comments

Comments
 (0)