mirror of https://github.com/python/cpython
Teach the sets module to correctly compute s-=s and s^=s as the empty set.
This commit is contained in:
parent
f98e6b15ba
commit
038ca2a551
|
@ -480,6 +480,8 @@ class Set(BaseSet):
|
|||
value = True
|
||||
if not isinstance(other, BaseSet):
|
||||
other = Set(other)
|
||||
if self is other:
|
||||
self.clear()
|
||||
for elt in other:
|
||||
if elt in data:
|
||||
del data[elt]
|
||||
|
@ -497,6 +499,8 @@ class Set(BaseSet):
|
|||
data = self._data
|
||||
if not isinstance(other, BaseSet):
|
||||
other = Set(other)
|
||||
if self is other:
|
||||
self.clear()
|
||||
for elt in ifilter(data.has_key, other):
|
||||
del data[elt]
|
||||
|
||||
|
|
|
@ -243,6 +243,19 @@ class TestBinaryOps(unittest.TestCase):
|
|||
self.assertRaises(TypeError, cmp, a, 12)
|
||||
self.assertRaises(TypeError, cmp, "abc", a)
|
||||
|
||||
def test_inplace_on_self(self):
|
||||
t = self.set.copy()
|
||||
t |= t
|
||||
self.assertEqual(t, self.set)
|
||||
t &= t
|
||||
self.assertEqual(t, self.set)
|
||||
t -= t
|
||||
self.assertEqual(len(t), 0)
|
||||
t = self.set.copy()
|
||||
t ^= t
|
||||
self.assertEqual(len(t), 0)
|
||||
|
||||
|
||||
#==============================================================================
|
||||
|
||||
class TestUpdateOps(unittest.TestCase):
|
||||
|
|
Loading…
Reference in New Issue