Skip to content

Commit 5d29e39

Browse files
committed
Add coverage
1 parent 018752f commit 5d29e39

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/sage/sets/disjoint_union_enumerated_sets.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,19 @@ def __iter__(self):
457457
sage: list(islice(iter(U), 5)) # not tested, hangs
458458
sage: list(islice(iter(U), 4))
459459
[(0, 1), (0, 2), (1, 1), (1, 2)]
460+
461+
Coverage test in case some element sets does not know it is finite
462+
but correctly raises :exc:`StopIteration` during iteration::
463+
464+
sage: from sage.sets.set import Set_object
465+
sage: class UnknowinglyFiniteSet(Set_object):
466+
....: def is_finite(self):
467+
....: return False
468+
sage: [*UnknowinglyFiniteSet([1, 2, 3])]
469+
sage: [*iter(UnknowinglyFiniteSet([1, 2, 3]))]
470+
sage: list(islice(DisjointUnionEnumeratedSets(
471+
....: (UnknowinglyFiniteSet(frozenset([1,2,3])), UnknowinglyFiniteSet(frozenset([4,5,6])))), 7))
472+
[1, 2, 4, 3, 5, 6]
460473
"""
461474
def wrap_element(el, k):
462475
nonlocal self
@@ -481,7 +494,7 @@ def wrap_element(el, k):
481494
el_set = self._family[k]
482495
try:
483496
is_finite = el_set.is_finite()
484-
except (AttributeError, NotImplementedError):
497+
except (AttributeError, TypeError, NotImplementedError):
485498
is_finite = False
486499
if is_finite:
487500
for el in el_set:

0 commit comments

Comments
 (0)