self.items.pop(item, None)
+ def pop(self):
+ """Remove an arbitrary item from the set."""
+ (k, v) = self.items.popitem()
+ return k
+
def _clone(self):
"""Make a (shallow) copy of the set.
if item not in self.items:
return False
return True
+
+ def isdisjoint(self, other):
+ if not isinstance(other, Set):
+ raise ValueError('other must be a Set instance')
+ for item in other.items:
+ if item in self.items:
+ return False
+ return True
e = S([])
self.assertEqual(s1 ^ s2, e)
+ def testSymmetricDifference5(self):
+ s1 = S([1, 2, 3])
+ s2 = S([2, 4])
+ s1 ^= s2
+ e = S([1, 3, 4])
+ self.assertEqual(s1, e)
+
+ def testSymmetricDifference6(self):
+ s1 = S([1, 2, 3])
+ s1 ^= s1
+ e = S([])
+ self.assertEqual(s1, e)
+
def testSubset1(self):
s1 = S([1, 2, 3])
s2 = S([3, 2, 1])
s2 = S([1, 4])
self.assertTrue(not s1.issuperset(s2))
+ def testDisjoint1(self):
+ s1 = S([1, 2, 3])
+ s2 = S([4])
+ self.assertTrue(s1.isdisjoint(s2))
+
+ def testDisjoint2(self):
+ s1 = S([1, 2, 3])
+ s2 = S([2, 4])
+ self.assertTrue(not s1.isdisjoint(s2))
+
+ def testDisjoint3(self):
+ s1 = S([1, 2, 3])
+ s2 = S([])
+ self.assertTrue(s1.isdisjoint(s2))
+
+ def testPop(self):
+ original = S([1, 2, 3])
+ s1 = original.copy()
+ item = s1.pop()
+ self.assertTrue(len(s1) == 2)
+ self.assertTrue(item in original)
+ item = s1.pop()
+ self.assertTrue(len(s1) == 1)
+ self.assertTrue(item in original)
+ item = s1.pop()
+ self.assertTrue(len(s1) == 0)
+ self.assertTrue(item in original)
+ self.assertRaises(KeyError, lambda: s1.pop())
+
def testUpdate1(self):
s1 = S([1, 2, 3])
u = (4, 5, 6)
s = S([1, 2, 3])
self.assertRaises(ValueError, lambda: s.union_update(1))
self.assertRaises(ValueError, lambda: s.intersection_update(1))
+ self.assertRaises(ValueError, lambda: s.difference_update(1))
+ self.assertRaises(ValueError, lambda: s.symmetric_difference_update(1))
def testSelfUpdates(self):
expected = S([1, 2, 3])
self.assertRaises(ValueError, lambda: s.issubset(123))
self.assertRaises(ValueError, lambda: s.issuperset(123))
+ def testBadDisjoint(self):
+ s = S([1, 2, 3])
+ self.assertRaises(ValueError, lambda: s.isdisjoint(123))
+
def testIncrementalOperators(self):
s = S([1, 2, 3])
s += S([5, 4])