mirror of https://github.com/mahmoud/boltons.git
proper __bool__ on complement set and tests
This commit is contained in:
parent
d34e461849
commit
d28450f34b
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue