Skip to content

Commit 0b40722

Browse files
author
Noel Roemmele
committed
Added normalization to enumerated_sets to prevent an infinite index. Added doctest for infinite index. Also added to
unrank direct test to get full code coverage.
1 parent ce526a9 commit 0b40722

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/sage/categories/enumerated_sets.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,10 +457,23 @@ def __getitem__(self, i):
457457
[1]
458458
sage: F[1::2]
459459
[2]
460+
461+
TESTS:
462+
463+
Verify that an infinite index raises an error::
464+
465+
sage: F = FiniteEnumeratedSet([1,2,3,4,5])
466+
sage: F[oo]
467+
Traceback (most recent call last):
468+
...
469+
TypeError: unable to coerce <class 'sage.rings.infinity.PlusInfinity'>
470+
to an integer
460471
"""
461472
from sage.rings.infinity import Infinity
473+
from sage.rings.integer_ring import ZZ
462474
if isinstance(i, slice):
463475
return self.unrank_range(i.start, i.stop, i.step)
476+
i = ZZ(i)
464477
if i < 0:
465478
i += self.cardinality()
466479
if i < 0:

src/sage/combinat/tuple.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ def unrank(self, i):
152152
sage: T = Tuples(range(4), 3)
153153
sage: T.unrank(19)
154154
(3, 0, 1)
155+
sage: T.unrank(-1)
156+
Traceback (most recent call last):
157+
...
158+
IndexError: index out of range
155159
156160
Verify that :issue:`39534` has been fixed::
157161

0 commit comments

Comments
 (0)