proper __bool__ on complement set and tests

This commit is contained in:
Kurt Rose 2019-05-07 14:34:01 -07:00
parent d34e461849
commit d28450f34b
2 changed files with 11 additions and 2 deletions

View File

@ -907,11 +907,18 @@ class _ComplementSet(object):
return hash(self._included) ^ hash(self._excluded)
def __len__(self):
if self._included:
if self._included is not None:
return len(self._included)
raise NotImplementedError('complemented sets have undefined length')
def __iter__(self):
if self._included:
if self._included is not None:
return iter(self._included)
raise NotImplementedError('complemented sets have undefined contents')
def __bool__(self):
if self._included is not None:
return bool(self._included)
return True
__nonzero__ = __bool__ # py2 compat

View File

@ -117,6 +117,8 @@ def test_complement_set():
assert (cab ^ cbc | set('b')) == (sab | sbc)
everything = complement(frozenset())
assert everything in everything # https://en.wikipedia.org/wiki/Russell%27s_paradox
assert bool(cab)
assert not complement(u)
# destructive testing
cab ^= sab
cab ^= sab